• Sergei Petrunia's avatar
    MDEV-26249: Crash in Explain_node::print_explain_for_children with slow query log · 7922fbf7
    Sergei Petrunia authored
    The problem affected queries in form:
    
      SELECT FROM (SELECT where Split Materialized is applicable) WHERE 1=0
    
    The problem was caused by this:
    - The select in derived table uses two-phase optimization (due to a
      possible Split Materialized).
    - The primary select has "Impossible where" and so it short-cuts its
      optimization.
    - The optimization for the SELECT in the derived table is never finished,
      and EXPLAIN data structure has a dangling pointer to select #2.
    
    Fixed with this: make JOIN::optimize_stage2() invoke optimization of
    derived tables when it is handing a degenerate JOIN with zero tables.
    We will not execute the derived tables but we need their query plans
    for [SHOW]EXPLAIN.
    7922fbf7
explain_innodb.test 546 Bytes