mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
A fix for new conditions being defined and upper condition not updated
This commit is contained in:
@ -40,3 +40,4 @@ date numfacture expedition
|
|||||||
0000-00-00 00:00:00 1212 0001-00-00 00:00:00
|
0000-00-00 00:00:00 1212 0001-00-00 00:00:00
|
||||||
table type possible_keys key key_len ref rows Extra
|
table type possible_keys key key_len ref rows Extra
|
||||||
t1 ref expedition expedition 8 const 1 where used
|
t1 ref expedition expedition 8 const 1 where used
|
||||||
|
a b
|
||||||
|
@ -50,3 +50,8 @@ INSERT INTO t1 (numfacture,expedition) VALUES ('1212','0001-00-00 00:00:00');
|
|||||||
SELECT * FROM t1 WHERE expedition='0001-00-00 00:00:00';
|
SELECT * FROM t1 WHERE expedition='0001-00-00 00:00:00';
|
||||||
EXPLAIN SELECT * FROM t1 WHERE expedition='0001-00-00 00:00:00';
|
EXPLAIN SELECT * FROM t1 WHERE expedition='0001-00-00 00:00:00';
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1 (a datetime not null, b datetime not null);
|
||||||
|
insert into t1 values (now(), now());
|
||||||
|
insert into t1 values (now(), now());
|
||||||
|
select * from t1 where a is null or b is null;
|
||||||
|
drop table t1;
|
||||||
|
@ -3009,6 +3009,7 @@ remove_eq_conds(COND *cond,Item::cond_result *cond_value)
|
|||||||
== Item_func::COND_AND_FUNC;
|
== Item_func::COND_AND_FUNC;
|
||||||
List_iterator<Item> li(*((Item_cond*) cond)->argument_list());
|
List_iterator<Item> li(*((Item_cond*) cond)->argument_list());
|
||||||
Item::cond_result tmp_cond_value;
|
Item::cond_result tmp_cond_value;
|
||||||
|
bool should_fix_fields=0;
|
||||||
|
|
||||||
*cond_value=Item::COND_UNDEF;
|
*cond_value=Item::COND_UNDEF;
|
||||||
Item *item;
|
Item *item;
|
||||||
@ -3028,6 +3029,7 @@ remove_eq_conds(COND *cond,Item::cond_result *cond_value)
|
|||||||
delete item; // This may be shared
|
delete item; // This may be shared
|
||||||
#endif
|
#endif
|
||||||
VOID(li.replace(new_item));
|
VOID(li.replace(new_item));
|
||||||
|
should_fix_fields=1;
|
||||||
}
|
}
|
||||||
if (*cond_value == Item::COND_UNDEF)
|
if (*cond_value == Item::COND_UNDEF)
|
||||||
*cond_value=tmp_cond_value;
|
*cond_value=tmp_cond_value;
|
||||||
@ -3054,6 +3056,9 @@ remove_eq_conds(COND *cond,Item::cond_result *cond_value)
|
|||||||
break; /* purecov: deadcode */
|
break; /* purecov: deadcode */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (should_fix_fields)
|
||||||
|
cond->fix_fields(current_thd,0);
|
||||||
|
|
||||||
if (!((Item_cond*) cond)->argument_list()->elements ||
|
if (!((Item_cond*) cond)->argument_list()->elements ||
|
||||||
*cond_value != Item::COND_OK)
|
*cond_value != Item::COND_OK)
|
||||||
return (COND*) 0;
|
return (COND*) 0;
|
||||||
|
Reference in New Issue
Block a user