Loading mysql-test/r/func_in.result +5 −0 Original line number Diff line number Diff line Loading @@ -477,6 +477,11 @@ a Warnings: Warning 1292 Incorrect date value: '19772-07-29' for column 'a' at row 1 DROP TABLE t1,t2,t3,t4; CREATE TABLE t1 (id int not null); INSERT INTO t1 VALUES (1),(2); SELECT id FROM t1 WHERE id IN(4564, (SELECT IF(1=0,1,1/0)) ); id DROP TABLE t1; End of 5.0 tests create table t1(f1 char(1)); insert into t1 values ('a'),('b'),('1'); Loading mysql-test/t/func_in.test +11 −0 Original line number Diff line number Diff line Loading @@ -361,6 +361,17 @@ SELECT * FROM t4 WHERE a IN ('1972-02-06','19772-07-29'); DROP TABLE t1,t2,t3,t4; # # BUG#27362: IN with a decimal expression that may return NULL # CREATE TABLE t1 (id int not null); INSERT INTO t1 VALUES (1),(2); SELECT id FROM t1 WHERE id IN(4564, (SELECT IF(1=0,1,1/0)) ); DROP TABLE t1; --echo End of 5.0 tests Loading sql/item_cmpfunc.cc +2 −1 Original line number Diff line number Diff line Loading @@ -2458,7 +2458,8 @@ void in_decimal::set(uint pos, Item *item) dec->len= DECIMAL_BUFF_LENGTH; dec->fix_buffer_pointer(); my_decimal *res= item->val_decimal(dec); if (res != dec) /* if item->val_decimal() is evaluated to NULL then res == 0 */ if (!item->null_value && res != dec) my_decimal2decimal(res, dec); } Loading Loading
mysql-test/r/func_in.result +5 −0 Original line number Diff line number Diff line Loading @@ -477,6 +477,11 @@ a Warnings: Warning 1292 Incorrect date value: '19772-07-29' for column 'a' at row 1 DROP TABLE t1,t2,t3,t4; CREATE TABLE t1 (id int not null); INSERT INTO t1 VALUES (1),(2); SELECT id FROM t1 WHERE id IN(4564, (SELECT IF(1=0,1,1/0)) ); id DROP TABLE t1; End of 5.0 tests create table t1(f1 char(1)); insert into t1 values ('a'),('b'),('1'); Loading
mysql-test/t/func_in.test +11 −0 Original line number Diff line number Diff line Loading @@ -361,6 +361,17 @@ SELECT * FROM t4 WHERE a IN ('1972-02-06','19772-07-29'); DROP TABLE t1,t2,t3,t4; # # BUG#27362: IN with a decimal expression that may return NULL # CREATE TABLE t1 (id int not null); INSERT INTO t1 VALUES (1),(2); SELECT id FROM t1 WHERE id IN(4564, (SELECT IF(1=0,1,1/0)) ); DROP TABLE t1; --echo End of 5.0 tests Loading
sql/item_cmpfunc.cc +2 −1 Original line number Diff line number Diff line Loading @@ -2458,7 +2458,8 @@ void in_decimal::set(uint pos, Item *item) dec->len= DECIMAL_BUFF_LENGTH; dec->fix_buffer_pointer(); my_decimal *res= item->val_decimal(dec); if (res != dec) /* if item->val_decimal() is evaluated to NULL then res == 0 */ if (!item->null_value && res != dec) my_decimal2decimal(res, dec); } Loading