1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-08 11:22:35 +03:00

MDEV-28978 Assertion failure in THD::binlog_query or unexpected

ER_ERROR_ON_WRITE with auto-partitioning

Added check whether binlogging is enabled before doing binlog_query().
This commit is contained in:
Aleksey Midenkov
2022-07-05 12:55:10 +03:00
parent f88511647a
commit 2b9fb342cf
3 changed files with 21 additions and 2 deletions

View File

@@ -3257,4 +3257,13 @@ delete from t partition (px);
ERROR HY000: Unknown partition 'px' in table 't' ERROR HY000: Unknown partition 'px' in table 't'
unlock tables; unlock tables;
drop table t; drop table t;
#
# MDEV-28978 Assertion failure in THD::binlog_query or unexpected
# ER_ERROR_ON_WRITE with auto-partitioning
#
create table t (a int) with system versioning partition by system_time limit 6 auto;
insert into t () values (),(),(),(),(),();
update t set a = 1;
update t set a = 2 limit 0;
drop table t;
set global innodb_stats_persistent= @save_persistent; set global innodb_stats_persistent= @save_persistent;

View File

@@ -2497,7 +2497,17 @@ unlock tables;
# cleanup # cleanup
drop table t; drop table t;
--echo #
--echo # MDEV-28978 Assertion failure in THD::binlog_query or unexpected
--echo # ER_ERROR_ON_WRITE with auto-partitioning
--echo #
create table t (a int) with system versioning partition by system_time limit 6 auto;
insert into t () values (),(),(),(),(),();
update t set a = 1;
update t set a = 2 limit 0;
# cleanup
drop table t;
--disable_prepare_warnings --disable_prepare_warnings
set global innodb_stats_persistent= @save_persistent; set global innodb_stats_persistent= @save_persistent;
--source suite/versioning/common_finish.inc --source suite/versioning/common_finish.inc

View File

@@ -7358,7 +7358,7 @@ int THD::binlog_flush_pending_rows_event(bool stmt_end, bool is_transactional)
*/ */
bool THD::binlog_for_noop_dml(bool transactional_table) bool THD::binlog_for_noop_dml(bool transactional_table)
{ {
if (log_current_statement()) if (mysql_bin_log.is_open() && log_current_statement())
{ {
reset_unsafe_warnings(); reset_unsafe_warnings();
if (binlog_query(THD::STMT_QUERY_TYPE, query(), query_length(), if (binlog_query(THD::STMT_QUERY_TYPE, query(), query_length(),