summaryrefslogtreecommitdiff
path: root/sql/sql_base.cc
diff options
context:
space:
mode:
authorIgor Babaev <igor@askmonty.org>2022-10-18 17:19:21 -0700
committerIgor Babaev <igor@askmonty.org>2022-10-18 17:19:21 -0700
commit3ea7b07c94745839403de5669b22b654b97b30a8 (patch)
tree25f6a8cddcae925e7db5f1cdf312e17430e453d1 /sql/sql_base.cc
parent4100aac0bd14e25c79339b3e23e6d1022b4e8d50 (diff)
downloadmariadb-git-bb-10.11-igor.tar.gz
MDEV-7487 Semi-join optimization for single-table update/delete statementsbb-10.11-igor
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.cc2
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;