• Igor Babaev's avatar
    MDEV-7487 Semi-join optimization for single-table update/delete statements · 554278e2
    Igor Babaev authored
    This patch allows to use semi-join optimization at the top level of
    single-table update and delete statements.
    The problem of supporting such optimization became easy to resolve after
    processing a single-table update/delete statement started using JOIN
    structure. This allowed to use JOIN::prepare() not only for multi-table
    updates/deletes but for single-table ones as well. This was done in the
    patch for mdev-28883:
    Re-design the upper level of handling UPDATE and DELETE statements.
    
    Note that JOIN::prepare() detects all subqueries that can be considered
    as candidates for semi-join optimization. The code added by this patch
    looks for such candidates at the top level and if such candidates are found
    in the processed single-table update/delete the statement is handled in
    the same way as a multi-table update/delete.
    
        Approved by Oleksandr Byelkin <sanja@mariadb.com>
    554278e2
sql_delete.cc 53.2 KB