MDEV-5600: Wrong result on 2nd execution of PS depending on the length of the query
- Item_direct_view_ref didn't clear its pointer to item_equal in ::cleanup. - Some Item_direct_view_ref objects have statement lifetime (i.e. they survive across multiple EXECUTE commands). Item_equal objects live only for the duration of one EXECUTE. This caused Item_direct_view_ref to have a stale pointer, which could cause all sorts of effects. (In this bug's testcase it was pointing to the wrong Item_equal, causing wrong query result) - Fixed by doing what Item_field::cleanup() does - don't keep item_equal pointer value. - There is no testcase because the only testcase I've got is highly fragile (e.g. the bug will not show up if @@datadir is of the wrong length).
This commit is contained in:
parent
84580f950c
commit
097b644006
@ -3103,6 +3103,7 @@ public:
|
||||
void cleanup()
|
||||
{
|
||||
null_ref_table= NULL;
|
||||
item_equal= NULL;
|
||||
Item_direct_ref::cleanup();
|
||||
}
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user