mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
MDEV-22421 Galera assertion !wsrep_has_changes(thd) || (thd->lex->sql_command == SQLCOM_CREATE_TABLE && !thd->is_current_stmt_binlog_format_row())
Updates to transaction registry table shouldn't be replicated in cluster so there is no need to append wsrep keys. Reviewed-by: Jan Lindström <jan.lindstrom@mariadb.com>
This commit is contained in:
parent
e7855119ba
commit
eb26e20df5
3 changed files with 33 additions and 0 deletions
7
mysql-test/suite/galera/r/MDEV-22421.result
Normal file
7
mysql-test/suite/galera/r/MDEV-22421.result
Normal file
|
@ -0,0 +1,7 @@
|
|||
connection node_2;
|
||||
connection node_1;
|
||||
SET @@local.sql_mode='no_field_options';
|
||||
CREATE TABLE t1 (f1 INT, ROW_START BIGINT UNSIGNED AS ROW START INVISIBLE, ROW_END BIGINT UNSIGNED AS ROW END INVISIBLE, PERIOD FOR SYSTEM_TIME(ROW_START, ROW_END)) WITH SYSTEM VERSIONING ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
UPDATE t1 SET f1 = 1 WHERE f1 = 1;
|
||||
DROP TABLE t1;
|
12
mysql-test/suite/galera/t/MDEV-22421.test
Normal file
12
mysql-test/suite/galera/t/MDEV-22421.test
Normal file
|
@ -0,0 +1,12 @@
|
|||
#
|
||||
# Tables with system versioning should not append keys to wsrep.
|
||||
#
|
||||
|
||||
--source include/galera_cluster.inc
|
||||
--source include/have_innodb.inc
|
||||
|
||||
SET @@local.sql_mode='no_field_options';
|
||||
CREATE TABLE t1 (f1 INT, ROW_START BIGINT UNSIGNED AS ROW START INVISIBLE, ROW_END BIGINT UNSIGNED AS ROW END INVISIBLE, PERIOD FOR SYSTEM_TIME(ROW_START, ROW_END)) WITH SYSTEM VERSIONING ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
UPDATE t1 SET f1 = 1 WHERE f1 = 1;
|
||||
DROP TABLE t1;
|
|
@ -1558,13 +1558,27 @@ int ha_commit_trans(THD *thd, bool all)
|
|||
goto err;
|
||||
}
|
||||
DBUG_ASSERT(trx_start_id);
|
||||
#ifdef WITH_WSREP
|
||||
bool saved_wsrep_on= thd->variables.wsrep_on;
|
||||
thd->variables.wsrep_on= false;
|
||||
#endif
|
||||
TR_table trt(thd, true);
|
||||
if (trt.update(trx_start_id, trx_end_id))
|
||||
#ifdef WITH_WSREP
|
||||
{
|
||||
thd->variables.wsrep_on= saved_wsrep_on;
|
||||
#endif
|
||||
goto err;
|
||||
#ifdef WITH_WSREP
|
||||
}
|
||||
#endif
|
||||
// Here, the call will not commit inside InnoDB. It is only working
|
||||
// around closing thd->transaction.stmt open by TR_table::open().
|
||||
if (all)
|
||||
commit_one_phase_2(thd, false, &thd->transaction.stmt, false);
|
||||
#ifdef WITH_WSREP
|
||||
thd->variables.wsrep_on= saved_wsrep_on;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue