summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Elkin <andrei.elkin@mariadb.com>2021-09-29 19:19:38 +0300
committerAndrei Elkin <andrei.elkin@mariadb.com>2021-10-12 19:58:12 +0300
commit6a252b5a6aa8f66c5866e84c7d9ee6b3cd4c884e (patch)
tree385cf6f6c2b2899a438ccd9e9e9a92f2ad4db632
parentff77a09bda884fe6bf3917eb29b9d3a2f53f919b (diff)
downloadmariadb-git-6a252b5a6aa8f66c5866e84c7d9ee6b3cd4c884e.tar.gz
MDEV-26712 row events never reset thd->mem_rootbb-10.3-MDEV-26712-andrei
but must do that at the end of the statement. A provide template patch is elaborated also to match to the upstream fixes of the very same bug.
-rw-r--r--sql/log_event.cc20
1 files changed, 12 insertions, 8 deletions
diff --git a/sql/log_event.cc b/sql/log_event.cc
index c82a721708b..64f212b9f69 100644
--- a/sql/log_event.cc
+++ b/sql/log_event.cc
@@ -11722,14 +11722,18 @@ int Rows_log_event::do_apply_event(rpl_group_info *rgi)
}
#endif /* WITH_WSREP && HAVE_QUERY_CACHE */
- if (unlikely(get_flags(STMT_END_F) &&
- (error= rows_event_stmt_cleanup(rgi, thd))))
- slave_rows_error_report(ERROR_LEVEL,
- thd->is_error() ? 0 : error,
- rgi, thd, table,
- get_type_str(),
- RPL_LOG_NAME, log_pos);
- DBUG_RETURN(error);
+ if (unlikely(get_flags(STMT_END_F)))
+ {
+ if ((error= rows_event_stmt_cleanup(rgi, thd)))
+ slave_rows_error_report(ERROR_LEVEL,
+ thd->is_error() ? 0 : error,
+ rgi, thd, table,
+ get_type_str(),
+ RPL_LOG_NAME, log_pos);
+ if (thd->slave_thread)
+ free_root(thd->mem_root, MYF(MY_KEEP_PREALLOC));
+ }
+ DBUG_RETURN(error);
err:
restore_empty_query_table_list(thd->lex);