diff --git a/mysql-test/r/union.result b/mysql-test/r/union.result index f58f0f5b0ac..bfa169af417 100644 --- a/mysql-test/r/union.result +++ b/mysql-test/r/union.result @@ -1195,3 +1195,8 @@ a b 2 b 3 c drop table t1; +set @val:=6; +select concat('value is: ', @val) union select 'some text'; +concat('value is: ', @val) +value is: 6 +some text diff --git a/mysql-test/r/user_var.result b/mysql-test/r/user_var.result index d82c17b0fe0..d8425899b77 100644 --- a/mysql-test/r/user_var.result +++ b/mysql-test/r/user_var.result @@ -193,3 +193,10 @@ set @var= NULL ; select FIELD( @var,'1it','Hit') as my_column; my_column 0 +select @v, coercibility(@v); +@v coercibility(@v) +NULL 2 +set @v1=null, @v2=1, @v3=1.1, @v4=now(); +select coercibility(@v1),coercibility(@v2),coercibility(@v3),coercibility(@v4); +coercibility(@v1) coercibility(@v2) coercibility(@v3) coercibility(@v4) +2 2 2 2 diff --git a/mysql-test/t/union.test b/mysql-test/t/union.test index 82f26f63254..26dc544482e 100644 --- a/mysql-test/t/union.test +++ b/mysql-test/t/union.test @@ -711,3 +711,9 @@ select * from ((select * from t1 limit 1) union (select * from t1 limit 1) union select * from ((((select * from t1))) union (select * from t1) union (select * from t1)) a; select * from ((select * from t1) union (((select * from t1))) union (select * from t1)) a; drop table t1; + +# +# Bugs#6519 UNION with collation binary and latin1_swedish_ci fails +# +set @val:=6; +select concat('value is: ', @val) union select 'some text'; diff --git a/mysql-test/t/user_var.test b/mysql-test/t/user_var.test index 2f526dc9a46..cfeb5f228a7 100644 --- a/mysql-test/t/user_var.test +++ b/mysql-test/t/user_var.test @@ -122,3 +122,10 @@ drop table t1; # set @var= NULL ; select FIELD( @var,'1it','Hit') as my_column; + +# +# Bug#9425 A user variable doesn't always have implicit coercibility +# +select @v, coercibility(@v); +set @v1=null, @v2=1, @v3=1.1, @v4=now(); +select coercibility(@v1),coercibility(@v2),coercibility(@v3),coercibility(@v4); diff --git a/ndb/src/kernel/blocks/dbdict/printSchemafile/printSchemafile.cpp b/ndb/src/kernel/blocks/dbdict/printSchemaFile.cpp similarity index 89% rename from ndb/src/kernel/blocks/dbdict/printSchemafile/printSchemafile.cpp rename to ndb/src/kernel/blocks/dbdict/printSchemaFile.cpp index bf721a0b30a..0ba52878b7c 100644 --- a/ndb/src/kernel/blocks/dbdict/printSchemafile/printSchemafile.cpp +++ b/ndb/src/kernel/blocks/dbdict/printSchemaFile.cpp @@ -1,3 +1,11 @@ +#if 0 +make -f Makefile -f - printSchemaFile <<'_eof_' +printSchemaFile: printSchemaFile.cpp + $(CXXCOMPILE) -o $@ $@.cpp -L../../../common/util/.libs -lgeneral +_eof_ +exit $? +#endif + /* Copyright (C) 2003 MySQL AB This program is free software; you can redistribute it and/or modify @@ -92,6 +100,13 @@ NDB_COMMAND(printSchemafile, } print(filename, (SchemaFile *)&buf[0]); + + Uint32 chk = 0, i; + for (i = 0; i < bytes/4; i++) + chk ^= buf[i]; + if (chk != 0) + ndbout << "Invalid checksum!" << endl; + delete [] buf; return 0; } diff --git a/ndb/src/kernel/blocks/dbdict/printSchemafile/Makefile b/ndb/src/kernel/blocks/dbdict/printSchemafile/Makefile deleted file mode 100644 index 1b097e2ce37..00000000000 --- a/ndb/src/kernel/blocks/dbdict/printSchemafile/Makefile +++ /dev/null @@ -1,12 +0,0 @@ -include .defs.mk - -TYPE := ndbapi - -BIN_TARGET := printSchemafile -BIN_TARGET_ARCHIVES := portlib general - -CCFLAGS_LOC += -I.. - -SOURCES := printSchemafile.cpp - -include $(NDB_TOP)/Epilogue.mk diff --git a/sql/item_func.cc b/sql/item_func.cc index ade394f90d3..eb6e395c266 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -2634,20 +2634,20 @@ Item_func_set_user_var::update() case REAL_RESULT: { res= update_hash((void*) &save_result.vreal,sizeof(save_result.vreal), - REAL_RESULT, &my_charset_bin, DERIVATION_NONE); + REAL_RESULT, &my_charset_bin, DERIVATION_IMPLICIT); break; } case INT_RESULT: { res= update_hash((void*) &save_result.vint, sizeof(save_result.vint), - INT_RESULT, &my_charset_bin, DERIVATION_NONE); + INT_RESULT, &my_charset_bin, DERIVATION_IMPLICIT); break; } case STRING_RESULT: { if (!save_result.vstr) // Null value res= update_hash((void*) 0, 0, STRING_RESULT, &my_charset_bin, - DERIVATION_NONE); + DERIVATION_IMPLICIT); else res= update_hash((void*) save_result.vstr->ptr(), save_result.vstr->length(), STRING_RESULT, @@ -2870,7 +2870,10 @@ void Item_func_get_user_var::fix_length_and_dec() } } else + { + collation.set(&my_charset_bin, DERIVATION_IMPLICIT); null_value= 1; + } if (error) thd->fatal_error();