• Igor Babaev's avatar
    MDEV-31240 Crash with condition pushable into derived and containing outer reference · 8f3bf593
    Igor Babaev authored
    This bug could affect queries containing a subquery over splittable derived
    tables and having an outer references in its WHERE clause. If such subquery
    contained an equality condition whose left part was a reference to a column
    of the derived table and the right part referred only to outer columns
    then the server crashed in the function st_join_table::choose_best_splitting()
    The crashing code was added in the commit ce7ffe61
    that made the code of the function sensitive to presence of the flag
    OUTER_REF_TABLE_BIT in the KEYUSE_EXT::needed_in_prefix fields.
    
    The field needed_in_prefix of the KEYUSE_EXT structure should not contain
    table maps with OUTER_REF_TABLE_BIT or RAND_TABLE_BIT.
    
    Note that this fix is quite conservative: for affected queries it just
    returns the query plans that were used before the above mentioned commit.
    In fact the equalities causing crashes should be pushed into derived tables
    without any usage of split optimization.
    
    Approved by Sergei Petrunia <sergey@mariadb.com>
    8f3bf593
derived_cond_pushdown.test 111 KB