• Igor Babaev's avatar
    MDEV-17871 Crash when running explain with CTE · 46960365
    Igor Babaev authored
    When the with clause of a query contains a recursive CTE that is not used
    then processing of EXPLAIN for this query does not require optimization
    of the unit specifying this CTE. In this case if 'derived' is the
    TABLE_LIST object created for this CTE then derived->derived_result is NULL
    and any assignment to derived->derived_result->table causes a crash.
    After fixing this problem in the code of st_select_lex_unit::prepare()
    EXPLAIN for such a query worked without crashes. Yet an execution
    plan for the recursive CTE appeared there. The cause of this problem was
    an incorrect condition used in JOIN::save_explain_data_intern() that
    determined whether CTE was to be optimized or not. A similar condition was
    used in select_describe() and this patch has corrected it as well.
    46960365
sql_union.cc 46.6 KB