mirror of
https://github.com/MariaDB/server.git
synced 2026-05-04 14:15:33 +02:00
bug #20835 (Subqueries: literal string with =any fails)
We create Item_cache_* object for each operand for each left operand of a subquery predicate. We also create Item_func_conv_charset for each string constant that needs charset conversion. So here we have Item_cache wrapped into Item_func_conv_charset. When Item_func_conv_charset wraps an constant Item it gets it's value in constructor. The problem is that Item_cache is ready to be used only at execution time, which is too late. The fix makes Item_cache wrapping constant to get ready at fix_fields() time. mysql-test/r/subselect.result: test result mysql-test/t/subselect.test: test case sql/item_cmpfunc.cc: now Item_optimizer::fix_left will store constant arguments in cache on fix_fields() stage
This commit is contained in:
parent
7fe3f31345
commit
e8b32b2b01
3 changed files with 16 additions and 1 deletions
|
|
@ -797,7 +797,8 @@ bool Item_in_optimizer::fix_left(THD *thd, Item **ref)
|
|||
}
|
||||
not_null_tables_cache= args[0]->not_null_tables();
|
||||
with_sum_func= args[0]->with_sum_func;
|
||||
const_item_cache= args[0]->const_item();
|
||||
if ((const_item_cache= args[0]->const_item()))
|
||||
cache->store(args[0]);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue