• Sergei Petrunia's avatar
    MDEV-28871: Assert ... failed in JOIN::dbug_verify_sj_inner_tables... · 0e9a255e
    Sergei Petrunia authored
    optimize_semi_joins() calls update_sj_state() to update semi-join
    optimization state in the JOIN class.
    
    greedy_search() algorithm considers different join prefixes,
    and then picks one table to put into the join prefix.
    Most of the semi-join optimization state is in the table's entry
    in the join->positions[cur_prefix_size].
    
    However, it also needs to call update_sj_state() to update the
    semi-join optimization state in the JOIN class.
    
    There is one exception, which is the cause of this bug: when we're
    inside optimize_semi_join_nests() and are optimizing a subquery,
    optimize_semi_joins() does nothing, it doesn't call update_sj_state().
    
    greedy_search() must not do that either.
    0e9a255e
subselect_sj.test 85.3 KB