Loading mysql-test/r/union.result +11 −1 Original line number Diff line number Diff line Loading @@ -1185,6 +1185,16 @@ select concat('value is: ', @val) union select 'some text'; concat('value is: ', @val) value is: 6 some text select concat(_latin1'a', _ascii'b' collate ascii_bin); concat(_latin1'a', _ascii'b' collate ascii_bin) ab create table t1 (foo varchar(100)) collate ascii_bin; insert into t1 (foo) values ("foo"); select foo from t1 union select 'bar' as foo from dual; foo foo bar drop table t1; CREATE TABLE t1 ( a ENUM('','','') character set utf8 not null default '', b ENUM("one", "two") character set utf8, Loading Loading @@ -1214,7 +1224,7 @@ Field Type Null Key Default Extra a char(1) drop table t2; create table t2 select a from t1 union select c from t1; ERROR HY000: Illegal mix of collations (utf8_general_ci,IMPLICIT) and (latin1_swedish_ci,IMPLICIT) for operation 'UNION' drop table t2; create table t2 select a from t1 union select b from t1; show columns from t2; Field Type Null Key Default Extra Loading mysql-test/t/union.test +10 −1 Original line number Diff line number Diff line Loading @@ -710,6 +710,15 @@ drop table t1; set @val:=6; select concat('value is: ', @val) union select 'some text'; # # Bug#15949 union + illegal mix of collations (IMPLICIT + COERCIBLE) # select concat(_latin1'a', _ascii'b' collate ascii_bin); create table t1 (foo varchar(100)) collate ascii_bin; insert into t1 (foo) values ("foo"); select foo from t1 union select 'bar' as foo from dual; drop table t1; # # Enum merging test # Loading @@ -729,8 +738,8 @@ drop table t2; create table t2 select a from t1 union select a from t1; show columns from t2; drop table t2; -- error 1267 create table t2 select a from t1 union select c from t1; drop table t2; create table t2 select a from t1 union select b from t1; show columns from t2; drop table t2, t1; Loading sql/item.cc +1 −1 Original line number Diff line number Diff line Loading @@ -3258,7 +3258,7 @@ bool Item_type_holder::join_types(THD *thd, Item *item) const char *old_cs, *old_derivation; old_cs= collation.collation->name; old_derivation= collation.derivation_name(); if (collation.aggregate(item->collation)) if (collation.aggregate(item->collation, MY_COLL_ALLOW_CONV)) { my_error(ER_CANT_AGGREGATE_2COLLATIONS, MYF(0), old_cs, old_derivation, Loading Loading
mysql-test/r/union.result +11 −1 Original line number Diff line number Diff line Loading @@ -1185,6 +1185,16 @@ select concat('value is: ', @val) union select 'some text'; concat('value is: ', @val) value is: 6 some text select concat(_latin1'a', _ascii'b' collate ascii_bin); concat(_latin1'a', _ascii'b' collate ascii_bin) ab create table t1 (foo varchar(100)) collate ascii_bin; insert into t1 (foo) values ("foo"); select foo from t1 union select 'bar' as foo from dual; foo foo bar drop table t1; CREATE TABLE t1 ( a ENUM('','','') character set utf8 not null default '', b ENUM("one", "two") character set utf8, Loading Loading @@ -1214,7 +1224,7 @@ Field Type Null Key Default Extra a char(1) drop table t2; create table t2 select a from t1 union select c from t1; ERROR HY000: Illegal mix of collations (utf8_general_ci,IMPLICIT) and (latin1_swedish_ci,IMPLICIT) for operation 'UNION' drop table t2; create table t2 select a from t1 union select b from t1; show columns from t2; Field Type Null Key Default Extra Loading
mysql-test/t/union.test +10 −1 Original line number Diff line number Diff line Loading @@ -710,6 +710,15 @@ drop table t1; set @val:=6; select concat('value is: ', @val) union select 'some text'; # # Bug#15949 union + illegal mix of collations (IMPLICIT + COERCIBLE) # select concat(_latin1'a', _ascii'b' collate ascii_bin); create table t1 (foo varchar(100)) collate ascii_bin; insert into t1 (foo) values ("foo"); select foo from t1 union select 'bar' as foo from dual; drop table t1; # # Enum merging test # Loading @@ -729,8 +738,8 @@ drop table t2; create table t2 select a from t1 union select a from t1; show columns from t2; drop table t2; -- error 1267 create table t2 select a from t1 union select c from t1; drop table t2; create table t2 select a from t1 union select b from t1; show columns from t2; drop table t2, t1; Loading
sql/item.cc +1 −1 Original line number Diff line number Diff line Loading @@ -3258,7 +3258,7 @@ bool Item_type_holder::join_types(THD *thd, Item *item) const char *old_cs, *old_derivation; old_cs= collation.collation->name; old_derivation= collation.derivation_name(); if (collation.aggregate(item->collation)) if (collation.aggregate(item->collation, MY_COLL_ALLOW_CONV)) { my_error(ER_CANT_AGGREGATE_2COLLATIONS, MYF(0), old_cs, old_derivation, Loading