mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03: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:
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;
|
goto err;
|
||||||
}
|
}
|
||||||
DBUG_ASSERT(trx_start_id);
|
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);
|
TR_table trt(thd, true);
|
||||||
if (trt.update(trx_start_id, trx_end_id))
|
if (trt.update(trx_start_id, trx_end_id))
|
||||||
|
#ifdef WITH_WSREP
|
||||||
|
{
|
||||||
|
thd->variables.wsrep_on= saved_wsrep_on;
|
||||||
|
#endif
|
||||||
goto err;
|
goto err;
|
||||||
|
#ifdef WITH_WSREP
|
||||||
|
}
|
||||||
|
#endif
|
||||||
// Here, the call will not commit inside InnoDB. It is only working
|
// Here, the call will not commit inside InnoDB. It is only working
|
||||||
// around closing thd->transaction.stmt open by TR_table::open().
|
// around closing thd->transaction.stmt open by TR_table::open().
|
||||||
if (all)
|
if (all)
|
||||||
commit_one_phase_2(thd, false, &thd->transaction.stmt, false);
|
commit_one_phase_2(thd, false, &thd->transaction.stmt, false);
|
||||||
|
#ifdef WITH_WSREP
|
||||||
|
thd->variables.wsrep_on= saved_wsrep_on;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user