diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2022-03-29 12:59:18 +0300 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2022-03-29 12:59:18 +0300 |
commit | d62b0368ca53cc10b45b703bbeefcf0b674bd39d (patch) | |
tree | e65926bf20605d24a87619553374a74e7ef1c2c8 /sql/sql_parse.cc | |
parent | 9d6d1221230e2acf9fac2ab6fe685c0a2a7845aa (diff) | |
parent | 088b37b5eaa8c3198c7f8ea0358d15135833f6bb (diff) | |
download | mariadb-git-d62b0368ca53cc10b45b703bbeefcf0b674bd39d.tar.gz |
Merge 10.4 into 10.5
Diffstat (limited to 'sql/sql_parse.cc')
-rw-r--r-- | sql/sql_parse.cc | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index ac8a4b5b142..55968fe7ddc 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -1163,8 +1163,7 @@ static bool wsrep_tables_accessible_when_detached(const TABLE_LIST *tables) static bool wsrep_command_no_result(char command) { - return (command == COM_STMT_PREPARE || - command == COM_STMT_FETCH || + return (command == COM_STMT_FETCH || command == COM_STMT_SEND_LONG_DATA || command == COM_STMT_CLOSE); } @@ -1310,7 +1309,13 @@ bool do_command(THD *thd) DBUG_ASSERT(!thd->mdl_context.has_locks()); DBUG_ASSERT(!thd->get_stmt_da()->is_set()); /* We let COM_QUIT and COM_STMT_CLOSE to execute even if wsrep aborted. */ - if (command != COM_STMT_CLOSE && + if (command == COM_STMT_EXECUTE) + { + WSREP_DEBUG("PS BF aborted at do_command"); + thd->wsrep_delayed_BF_abort= true; + } + if (command != COM_STMT_CLOSE && + command != COM_STMT_EXECUTE && command != COM_QUIT) { my_error(ER_LOCK_DEADLOCK, MYF(0)); @@ -1383,6 +1388,17 @@ out: if (unlikely(wsrep_service_started)) wsrep_after_command_after_result(thd); } + + if (thd->wsrep_delayed_BF_abort) + { + my_error(ER_LOCK_DEADLOCK, MYF(0)); + WSREP_DEBUG("Deadlock error for PS query: %s", thd->query()); + thd->reset_killed(); + thd->mysys_var->abort = 0; + thd->wsrep_retry_counter = 0; + + thd->wsrep_delayed_BF_abort= false; + } #endif /* WITH_WSREP */ DBUG_RETURN(return_value); } |