mirror of
https://github.com/MariaDB/server.git
synced 2025-08-05 13:16:09 +03:00
fixed collation of Item_cache family (BUG#951)
mysql-test/r/subselect.result: test of collation mysql-test/t/subselect.test: test of collation sql/item.cc: coping collation in the cache sql/item.h: coping collation in the cache
This commit is contained in:
@@ -1251,3 +1251,10 @@ a
|
|||||||
2
|
2
|
||||||
10
|
10
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
CREATE TABLE t1 (s1 CHAR(5) COLLATE latin1_german1_ci,
|
||||||
|
s2 CHAR(5) COLLATE latin1_swedish_ci);
|
||||||
|
INSERT INTO t1 VALUES ('z','?');
|
||||||
|
select * from t1 where s1 > (select max(s2) from t1);
|
||||||
|
ERROR HY000: Illegal mix of collations (latin1_german1_ci,IMPLICIT) and (latin1_swedish_ci,IMPLICIT) for operation '>'
|
||||||
|
select * from t1 where s1 > any (select max(s2) from t1);
|
||||||
|
drop table t1;
|
||||||
|
@@ -853,3 +853,14 @@ insert into t3 values (1),(2),(10),(50);
|
|||||||
select a from t3 where t3.a in (select a from t1 where a <= 3 union select * from t2 where a <= 30);
|
select a from t3 where t3.a in (select a from t1 where a <= 3 union select * from t2 where a <= 30);
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
|
||||||
|
#
|
||||||
|
# collation test
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (s1 CHAR(5) COLLATE latin1_german1_ci,
|
||||||
|
s2 CHAR(5) COLLATE latin1_swedish_ci);
|
||||||
|
INSERT INTO t1 VALUES ('z','?');
|
||||||
|
-- error 1265
|
||||||
|
select * from t1 where s1 > (select max(s2) from t1);
|
||||||
|
-- error 1265
|
||||||
|
select * from t1 where s1 > any (select max(s2) from t1);
|
||||||
|
drop table t1;
|
||||||
|
@@ -1704,7 +1704,7 @@ void Item_cache_str::store(Item *item)
|
|||||||
str_value.copy(*value);
|
str_value.copy(*value);
|
||||||
value= &str_value;
|
value= &str_value;
|
||||||
}
|
}
|
||||||
|
collation.set(item->collation);
|
||||||
}
|
}
|
||||||
double Item_cache_str::val()
|
double Item_cache_str::val()
|
||||||
{
|
{
|
||||||
|
@@ -852,6 +852,7 @@ public:
|
|||||||
{
|
{
|
||||||
value= item->val_int_result();
|
value= item->val_int_result();
|
||||||
null_value= item->null_value;
|
null_value= item->null_value;
|
||||||
|
collation.set(item->collation);
|
||||||
}
|
}
|
||||||
double val() { return (double) value; }
|
double val() { return (double) value; }
|
||||||
longlong val_int() { return value; }
|
longlong val_int() { return value; }
|
||||||
@@ -869,6 +870,7 @@ public:
|
|||||||
{
|
{
|
||||||
value= item->val_result();
|
value= item->val_result();
|
||||||
null_value= item->null_value;
|
null_value= item->null_value;
|
||||||
|
collation.set(item->collation);
|
||||||
}
|
}
|
||||||
double val() { return value; }
|
double val() { return value; }
|
||||||
longlong val_int() { return (longlong) (value+(value > 0 ? 0.5 : -0.5)); }
|
longlong val_int() { return (longlong) (value+(value > 0 ? 0.5 : -0.5)); }
|
||||||
|
Reference in New Issue
Block a user