Commit e2e3524d authored by Igor Babaev's avatar Igor Babaev

Another fix after the latest rebase of commits for MDEV-28883

parent c22f7e8e
...@@ -1593,8 +1593,7 @@ where a = ( select * from (select a from t1) dt where dt.a > 5) ...@@ -1593,8 +1593,7 @@ where a = ( select * from (select a from t1) dt where dt.a > 5)
returning pk, a; returning pk, a;
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 Using where 1 PRIMARY t1 ALL NULL NULL NULL NULL 3 Using where
2 SUBQUERY <derived3> ALL NULL NULL NULL NULL 3 Using where 2 SUBQUERY t1 ALL NULL NULL NULL NULL 3 Using where
3 DERIVED t1 ALL NULL NULL NULL NULL 3 Using where
delete from t1 delete from t1
where a = ( select * from (select a from t1) dt where dt.a > 5) where a = ( select * from (select a from t1) dt where dt.a > 5)
returning pk, a; returning pk, a;
...@@ -1633,8 +1632,7 @@ where a <> ( select * from (select a from t1) dt where dt.a > 7) ...@@ -1633,8 +1632,7 @@ where a <> ( select * from (select a from t1) dt where dt.a > 7)
order by a limit 2; order by a limit 2;
id select_type table type possible_keys key key_len ref rows Extra 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 1 PRIMARY t1 ALL NULL NULL NULL NULL 4 Using where; Using filesort
2 SUBQUERY <derived3> ALL NULL NULL NULL NULL 4 Using where 2 SUBQUERY t1 ALL NULL NULL NULL NULL 4 Using where
3 DERIVED t1 ALL NULL NULL NULL NULL 4 Using where
delete from t1 delete from t1
where a <> ( select * from (select a from t1) dt where dt.a > 7) where a <> ( select * from (select a from t1) dt where dt.a > 7)
order by a limit 2; order by a limit 2;
......
...@@ -1205,7 +1205,7 @@ TABLE_LIST* find_dup_table(THD *thd, TABLE_LIST *table, TABLE_LIST *table_list, ...@@ -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) if (thd->lex->sql_command == SQLCOM_UPDATE)
{ {
Sql_cmd_update *cmd= (Sql_cmd_update *) (thd->lex->m_sql_cmd); 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; materialize= false;
else if (!cmd->processing_as_multitable_update_prohibited(thd)) 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, ...@@ -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) else if (thd->lex->sql_command == SQLCOM_DELETE)
{ {
Sql_cmd_delete *cmd= (Sql_cmd_delete *) (thd->lex->m_sql_cmd); 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; materialize= false;
if (!cmd->processing_as_multitable_delete_prohibited(thd)) else if (!cmd->processing_as_multitable_delete_prohibited(thd))
{ {
cmd->set_as_multitable(); cmd->set_as_multitable();
materialize= false; materialize= false;
......
...@@ -1507,7 +1507,9 @@ bool Sql_cmd_delete::precheck(THD *thd) ...@@ -1507,7 +1507,9 @@ bool Sql_cmd_delete::precheck(THD *thd)
return true; return true;
} }
#ifdef WITH_WSREP
WSREP_SYNC_WAIT(thd, WSREP_SYNC_WAIT_BEFORE_UPDATE_DELETE); WSREP_SYNC_WAIT(thd, WSREP_SYNC_WAIT_BEFORE_UPDATE_DELETE);
#endif
return false; return false;
......
...@@ -2827,7 +2827,10 @@ bool multi_update::send_eof() ...@@ -2827,7 +2827,10 @@ bool multi_update::send_eof()
bool Sql_cmd_update::processing_as_multitable_update_prohibited(THD *thd) 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);
} }
...@@ -2851,7 +2854,9 @@ bool Sql_cmd_update::precheck(THD *thd) ...@@ -2851,7 +2854,9 @@ bool Sql_cmd_update::precheck(THD *thd)
return true; return true;
} }
#ifdef WITH_WSREP
WSREP_SYNC_WAIT(thd, WSREP_SYNC_WAIT_BEFORE_UPDATE_DELETE); WSREP_SYNC_WAIT(thd, WSREP_SYNC_WAIT_BEFORE_UPDATE_DELETE);
#endif
return false; return false;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment