1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

Fixed wsrep replaying for stored procedures (#1256)

- Changed replaying to always allocate a separate THD object
  for applying log events. This is to avoid tampering original
  THD state during replay process.
- Return success from sp_instr_stmt::exec_core() if replaying
  succeeds.
- Do not push warnings/errors into diagnostics area if the
  transaction must be replayed. This is to avoid reporting
  transient errors to the client.

Added two tests galera_sp_bf_abort, galera_sp_insert_parallel.
Wsrep-lib position updated.
This commit is contained in:
Teemu Ollakka
2019-04-06 12:33:51 +03:00
committed by Jan Lindström
parent fe62ff6e1c
commit eb872ceb27
10 changed files with 579 additions and 74 deletions

View File

@ -1020,6 +1020,15 @@ Sql_condition* THD::raise_condition(uint sql_errno,
if (!(variables.option_bits & OPTION_SQL_NOTES) &&
(level == Sql_condition::WARN_LEVEL_NOTE))
DBUG_RETURN(NULL);
#ifdef WITH_WSREP
/*
Suppress warnings/errors if the wsrep THD is going to replay. The
deadlock/interrupted errors may be transitient and should not be
reported to the client.
*/
if (wsrep_must_replay(this))
DBUG_RETURN(NULL);
#endif /* WITH_WSREP */
da->opt_clear_warning_info(query_id);