• Igor Babaev's avatar
    MDEV-24823 Crash with invalid multi-table update of view in 2nd execution of SP · b3b5d57e
    Igor Babaev authored
    Before this patch mergeable derived tables / view used in a multi-table
    update / delete were merged before the preparation stage.
    When the merge of a derived table / view is performed the on expression
    attached to it is fixed and ANDed with the where condition of the select S
    containing this derived table / view. It happens after the specification of
    the derived table / view has been merged into S. If the ON expression refers
    to a non existing field an error is reported and some other mergeable derived
    tables / views remain unmerged. It's not a problem if the multi-table
    update / delete statement is standalone. Yet if it is used in a stored
    procedure the select with incompletely merged derived tables / views may
    cause a problem for the second call of the procedure. This does not happen
    for select queries using derived tables / views, because in this case their
    specifications are merged after the preparation stage at which all ON
    expressions are fixed.
    This patch makes sure that merging of the derived tables / views used in a
    multi-table update / delete statement is performed after the preparation
    stage.
    
    Approved by Oleksandr Byelkin <sanja@mariadb.com>
    b3b5d57e
sql_derived.cc 44.3 KB