• unknown's avatar
    MDEV-3928: Assertion `example' failed in Item_cache::is_expensive_processor... · e99aa91e
    unknown authored
    MDEV-3928: Assertion `example' failed in Item_cache::is_expensive_processor with a 2-level IN subquery
    
    Analysis:
    The following call stack shows that it is possible to set Item_cache::value_cached, and the relevant value
    without setting Item_cache::example.
    
    #0 Item_cache_temporal::store_packed at item.cc:8395
    #1 get_datetime_value at item_cmpfunc.cc:915
    #2 resolve_const_item at item.cc:7987
    #3 propagate_cond_constants at sql_select.cc:12264
    #4 propagate_cond_constants at sql_select.cc:12227
    #5 optimize_cond at sql_select.cc:13026
    #6 JOIN::optimize at sql_select.cc:1016
    #7 st_select_lex::optimize_unflattened_subqueries at sql_lex.cc:3161
    #8 JOIN::optimize_unflattened_subqueries at opt_subselect.cc:4880
    #9 JOIN::optimize at sql_select.cc:1554
    
    The fix is to set Item_cache_temporal::example even when the value is
    set directly by Item_cache_temporal::store_packed. This makes the
    Item_cache_temporal object consistent.
    e99aa91e
item_cmpfunc.cc 153 KB