[Commits] 4100aac: Another fix after the latest rebase of commits for MDEV-28883
revision-id: 4100aac0bd14e25c79339b3e23e6d1022b4e8d50 (mariadb-10.10.1-18-g4100aac) parent(s): 768019354507ee0237530ffff46099061e173974 author: Igor Babaev committer: Igor Babaev timestamp: 2022-09-16 22:36:22 -0700 message: Another fix after the latest rebase of commits for MDEV-28883 --- mysql-test/main/derived.result | 6 ++---- sql/sql_base.cc | 6 +++--- sql/sql_delete.cc | 2 ++ sql/sql_update.cc | 7 ++++++- 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/mysql-test/main/derived.result b/mysql-test/main/derived.result index c28e01d..6c10f19 100644 --- a/mysql-test/main/derived.result +++ b/mysql-test/main/derived.result @@ -1432,8 +1432,7 @@ where a = ( select * from (select a from t1) dt where dt.a > 5) returning pk, a; id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t1 ALL NULL NULL NULL NULL 3 Using where -2 SUBQUERY <derived3> ALL NULL NULL NULL NULL 3 Using where -3 DERIVED t1 ALL NULL NULL NULL NULL 3 Using where +2 SUBQUERY t1 ALL NULL NULL NULL NULL 3 Using where delete from t1 where a = ( select * from (select a from t1) dt where dt.a > 5) returning pk, a; @@ -1472,8 +1471,7 @@ where a <> ( select * from (select a from t1) dt where dt.a > 7) order by a limit 2; id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t1 ALL NULL NULL NULL NULL 4 Using where; Using filesort -2 SUBQUERY <derived3> ALL NULL NULL NULL NULL 4 Using where -3 DERIVED t1 ALL NULL NULL NULL NULL 4 Using where +2 SUBQUERY t1 ALL NULL NULL NULL NULL 4 Using where delete from t1 where a <> ( select * from (select a from t1) dt where dt.a > 7) order by a limit 2; diff --git a/sql/sql_base.cc b/sql/sql_base.cc index 404da7f..72864b7 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -1205,7 +1205,7 @@ TABLE_LIST* find_dup_table(THD *thd, TABLE_LIST *table, TABLE_LIST *table_list, if (thd->lex->sql_command == SQLCOM_UPDATE) { Sql_cmd_update *cmd= (Sql_cmd_update *) (thd->lex->m_sql_cmd); - if (cmd->is_multitable()) + if (cmd->is_multitable() || derived->derived->outer_select()) materialize= false; else if (!cmd->processing_as_multitable_update_prohibited(thd)) { @@ -1216,9 +1216,9 @@ TABLE_LIST* find_dup_table(THD *thd, TABLE_LIST *table, TABLE_LIST *table_list, else if (thd->lex->sql_command == SQLCOM_DELETE) { Sql_cmd_delete *cmd= (Sql_cmd_delete *) (thd->lex->m_sql_cmd); - if (cmd->is_multitable()) + if (cmd->is_multitable() || derived->derived->outer_select()) materialize= false; - if (!cmd->processing_as_multitable_delete_prohibited(thd)) + else if (!cmd->processing_as_multitable_delete_prohibited(thd)) { cmd->set_as_multitable(); materialize= false; diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc index 7ab5913..42c8f7d 100644 --- a/sql/sql_delete.cc +++ b/sql/sql_delete.cc @@ -1501,7 +1501,9 @@ bool Sql_cmd_delete::precheck(THD *thd) return true; } +#ifdef WITH_WSREP WSREP_SYNC_WAIT(thd, WSREP_SYNC_WAIT_BEFORE_UPDATE_DELETE); +#endif return false; diff --git a/sql/sql_update.cc b/sql/sql_update.cc index 439ff63..6e54e66 100644 --- a/sql/sql_update.cc +++ b/sql/sql_update.cc @@ -2824,7 +2824,10 @@ bool multi_update::send_eof() bool Sql_cmd_update::processing_as_multitable_update_prohibited(THD *thd) { - return false; + SELECT_LEX *const select_lex = thd->lex->first_select_lex(); + return + (select_lex->order_list.elements && + select_lex->limit_params.select_limit); } @@ -2848,7 +2851,9 @@ bool Sql_cmd_update::precheck(THD *thd) return true; } +#ifdef WITH_WSREP WSREP_SYNC_WAIT(thd, WSREP_SYNC_WAIT_BEFORE_UPDATE_DELETE); +#endif return false;
participants (1)
-
IgorBabaev