• unknown's avatar
    bug #20835 (Subqueries: literal string with =any fails) · 1e5dccd9
    unknown authored
    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
    1e5dccd9
subselect.test 96.4 KB