diff options
author | unknown <gkodinov/kgeorge@magare.gmz> | 2008-02-15 15:47:32 +0200 |
---|---|---|
committer | unknown <gkodinov/kgeorge@magare.gmz> | 2008-02-15 15:47:32 +0200 |
commit | cc2e929ac4b787220118f6d4dc4a72b796bf4ea0 (patch) | |
tree | ff6cbea230c59cf1a17ec599b7f69ec0dbfe63f6 /mysql-test/t/compare.test | |
parent | a5799544cd138711cab975a5930d70fb2df13a83 (diff) | |
download | mariadb-git-cc2e929ac4b787220118f6d4dc4a72b796bf4ea0.tar.gz |
Bug #31887: DML Select statement not returning same results
when executed in version 5
Zero fill is a field attribute only. So we can't always
propagate constants for zerofill fields : the values and
expression results don't have that flag.
Fixed by converting the const value to a string and
using that in const propagation when the context allows it.
Disable const propagation for fields with ZEROFILL flag in
all the other cases.
mysql-test/r/compare.result:
Bug #31887: test case
mysql-test/t/compare.test:
Bug #31887: test case
sql/item.cc:
Bug #31887: If the context allows conversion
of an int constant to a zero-filled string constant
put the string constant instead of the int constant
when doing const propagation
sql/mysql_priv.h:
Bug #31887: a macro to get all the Field_num
descendant fields.
Diffstat (limited to 'mysql-test/t/compare.test')
-rw-r--r-- | mysql-test/t/compare.test | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/mysql-test/t/compare.test b/mysql-test/t/compare.test index 337035a8095..8863ed825c2 100644 --- a/mysql-test/t/compare.test +++ b/mysql-test/t/compare.test @@ -46,3 +46,34 @@ insert into t1 values (0x01,0x01); select * from t1 where a=b; select * from t1 where a=b and b=0x01; drop table if exists t1; + +# +# Bug #31887: DML Select statement not returning same results when executed +# in version 5 +# + +CREATE TABLE t1 (b int(2) zerofill, c int(2) zerofill); +INSERT INTO t1 (b,c) VALUES (1,2), (1,1), (2,2); + +SELECT CONCAT(b,c), CONCAT(b,c) = '0101' FROM t1; + +EXPLAIN EXTENDED SELECT b,c FROM t1 WHERE b = 1 AND CONCAT(b,c) = '0101'; +SELECT b,c FROM t1 WHERE b = 1 AND CONCAT(b,c) = '0101'; + +CREATE TABLE t2 (a int); +INSERT INTO t2 VALUES (1),(2); + +SELECT a, + (SELECT COUNT(*) FROM t1 + WHERE b = t2.a AND CONCAT(b,c) = CONCAT('0',t2.a,'01')) x +FROM t2 ORDER BY a; + +EXPLAIN EXTENDED +SELECT a, + (SELECT COUNT(*) FROM t1 + WHERE b = t2.a AND CONCAT(b,c) = CONCAT('0',t2.a,'01')) x +FROM t2 ORDER BY a; + +DROP TABLE t1,t2; + +--echo End of 5.0 tests |