Commit dc22acfd authored by Daniele Sciascia's avatar Daniele Sciascia Committed by GitHub

MDEV-22616 CHECK TABLE fails with wsrep_trx_fragment_size > 0 (#1551)

Executing CHECK TABLE  with streaming replication enabled reports
error "Streaming replication not supported with
binlog_format=STATEMENT".
Administrative commands such as CHECK TABLE, are not replicated and
temporarily set binlog format to statement.
To avoid the problem, report the error only for active transactions
for which streaming replication is enabled.
parent ce1c6dab
connection node_2;
connection node_1;
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB;
SET SESSION wsrep_trx_fragment_size = 1;
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check status OK
START TRANSACTION;
INSERT INTO t1 VALUES (1);
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check status OK
DROP TABLE t1;
#
# MDEV-22616
#
# CHECK TABLE fails with wsrep_trx_fragment_size > 0
#
--source include/galera_cluster.inc
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB;
SET SESSION wsrep_trx_fragment_size = 1;
CHECK TABLE t1;
START TRANSACTION;
INSERT INTO t1 VALUES (1);
CHECK TABLE t1;
DROP TABLE t1;
...@@ -5758,7 +5758,9 @@ int THD::decide_logging_format(TABLE_LIST *tables) ...@@ -5758,7 +5758,9 @@ int THD::decide_logging_format(TABLE_LIST *tables)
binlog by filtering rules. binlog by filtering rules.
*/ */
#ifdef WITH_WSREP #ifdef WITH_WSREP
if (WSREP_CLIENT_NNULL(this) && wsrep_thd_is_local(this) && if (WSREP_CLIENT_NNULL(this) &&
wsrep_thd_is_local(this) &&
wsrep_is_active(this) &&
variables.wsrep_trx_fragment_size > 0) variables.wsrep_trx_fragment_size > 0)
{ {
if (!is_current_stmt_binlog_format_row()) if (!is_current_stmt_binlog_format_row())
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment