MDEV-18945 Assertion `fixed == 1' failed in Item_cond_and::val_int
In the function make_cond_for_table_from_pred a call of ix_fields() missed checking of the return code. As a result an extracted constant condition could be not well formed and this caused an assertion failure.
This commit is contained in:
parent
1f020299f8
commit
5e044f78c0
@ -719,3 +719,16 @@ Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
drop table t1, t2;
|
||||
# End of MariaDB 10.0 tests
|
||||
#
|
||||
# MDEV-18945: multi-table update with constant table and
|
||||
# comparison of date field with integer field
|
||||
#
|
||||
CREATE TABLE t1 (i1 int, d1 date , i2 int , d2 date) engine=myisam;
|
||||
INSERT INTO t1 VALUES (19,'0000-00-00',73,'2008-05-21');
|
||||
CREATE TABLE t2 (d1 date , i1 int, i2 int , d2 date) engine=myisam;
|
||||
INSERT INTO t2 VALUES
|
||||
('2006-01-12',-102,45,'2023-11-25'),('2034-12-19',-102,45,'2001-11-20');
|
||||
UPDATE t1,t2 SET t1.i1 = -39 WHERE t2.d1 <> t1.i1 AND t2.d1 = t1.d2;
|
||||
ERROR 22007: Incorrect datetime value: '19' for column `test`.`t1`.`i1` at row 1
|
||||
DROP TABLE t1,t2;
|
||||
# End of MariaDB 10.2 tests
|
||||
|
@ -654,3 +654,22 @@ show status like 'Handler_read%';
|
||||
drop table t1, t2;
|
||||
|
||||
--echo # End of MariaDB 10.0 tests
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-18945: multi-table update with constant table and
|
||||
--echo # comparison of date field with integer field
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (i1 int, d1 date , i2 int , d2 date) engine=myisam;
|
||||
INSERT INTO t1 VALUES (19,'0000-00-00',73,'2008-05-21');
|
||||
|
||||
CREATE TABLE t2 (d1 date , i1 int, i2 int , d2 date) engine=myisam;
|
||||
INSERT INTO t2 VALUES
|
||||
('2006-01-12',-102,45,'2023-11-25'),('2034-12-19',-102,45,'2001-11-20');
|
||||
|
||||
--error ER_TRUNCATED_WRONG_VALUE
|
||||
UPDATE t1,t2 SET t1.i1 = -39 WHERE t2.d1 <> t1.i1 AND t2.d1 = t1.d2;
|
||||
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
--echo # End of MariaDB 10.2 tests
|
||||
|
@ -20614,7 +20614,8 @@ make_cond_for_table_from_pred(THD *thd, Item *root_cond, Item *cond,
|
||||
the new parent Item. This should not be expensive because all
|
||||
children of Item_cond_and should be fixed by now.
|
||||
*/
|
||||
new_cond->fix_fields(thd, 0);
|
||||
if (new_cond->fix_fields(thd, 0))
|
||||
return (COND*) 0;
|
||||
new_cond->used_tables_cache=
|
||||
((Item_cond_and*) cond)->used_tables_cache &
|
||||
tables;
|
||||
|
Loading…
x
Reference in New Issue
Block a user