• Sergei Petrunia's avatar
    MDEV-25969: Condition pushdown into derived table doesn't work if select list uses SP · eb20c91b
    Sergei Petrunia authored
    Consider a query of the form:
    
      select ... from (select item2 as COL1) as T where COL1=123
    
    Condition pushdown into derived table will try to push "COL1=123" condition
    down into table T.
    The process of pushdown involves "substituting" the item, that is,
    replacing Item_field("T.COL1") with its "producing item" item2.
    In order to use item2, one needs to clone it (call Item::build_clone).
    
    If the item is not cloneable (e.g. Item_func_sp is not), the pushdown
    process will fail and nothing at all will be pushed.
    
    Fixed by introducing transform_condition_or_part() which will try to apply
    the transformation for as many parts of condition as possible. The parts of
    condition that couldn't be transformed are dropped.
    eb20c91b
sql_derived.cc 45.9 KB