diff options
author | Igor Babaev <igor@askmonty.org> | 2022-09-16 14:59:56 -0700 |
---|---|---|
committer | Igor Babaev <igor@askmonty.org> | 2022-09-16 22:38:17 -0700 |
commit | 7411169cdef1e63eaf7614d94815671b7af519d4 (patch) | |
tree | 35efe752b19893692bd913e9fad17b8e8cf6af65 /sql/sql_base.cc | |
parent | 4100aac0bd14e25c79339b3e23e6d1022b4e8d50 (diff) | |
download | mariadb-git-bb-10.11-MDEV-7487.tar.gz |
MDEV-7487 Semi-join optimization for single-table update/delete statementsbb-10.11-MDEV-7487
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>
Diffstat (limited to 'sql/sql_base.cc')
-rw-r--r-- | sql/sql_base.cc | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sql/sql_base.cc b/sql/sql_base.cc index 72864b7e329..933b11e4a12 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -1214,7 +1214,7 @@ retry: } } else if (thd->lex->sql_command == SQLCOM_DELETE) - { + { Sql_cmd_delete *cmd= (Sql_cmd_delete *) (thd->lex->m_sql_cmd); if (cmd->is_multitable() || derived->derived->outer_select()) materialize= false; |