galera mtr tests: synchronization between branches and editions

This commit is contained in:
Julius Goryavsky 2025-04-02 03:51:44 +02:00
parent 5003dac220
commit b983a911e9
34 changed files with 83 additions and 81 deletions

View File

@ -95,7 +95,6 @@ id val
4 d 4 d
5 d 5 d
6 d 6 d
set global wsrep_mode=default;
connection node_1; connection node_1;
drop table t1,t2,t3,t4,t5; drop table t1,t2,t3,t4,t5;
set global wsrep_mode=default; set global wsrep_mode=default;

View File

@ -26,3 +26,4 @@ COUNT(*) = 1
1 1
DROP TABLE t1; DROP TABLE t1;
connection node_1; connection node_1;
SET GLOBAL wsrep_mode = DEFAULT;

View File

@ -51,7 +51,7 @@ FOUND 1 /Desyncing and pausing the provider/ in mysqld.2.err
FOUND 1 /Resuming and resyncing the provider/ in mysqld.2.err FOUND 1 /Resuming and resyncing the provider/ in mysqld.2.err
# Should return FOUND 1 because only last backup does not desync # Should return FOUND 1 because only last backup does not desync
FOUND 1 /Server not desynched from group because WSREP_MODE_BF_MARIABACKUP used./ in mysqld.2.err FOUND 1 /Server not desynched from group because WSREP_MODE_BF_MARIABACKUP used./ in mysqld.2.err
SET GLOBAL wsrep_mode = ""; SET GLOBAL wsrep_mode = DEFAULT;
connection node_1; connection node_1;
DROP TABLE t; DROP TABLE t;
disconnect node_2; disconnect node_2;

View File

@ -22,7 +22,7 @@ INSERT INTO t1 VALUES (2, "bbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
connection node_1a; connection node_1a;
SET GLOBAL wsrep_provider_options = 'signal=gcs_core_after_frag_send'; SET GLOBAL wsrep_provider_options = 'signal=gcs_core_after_frag_send';
connection node_1; connection node_1;
ERROR HY000: Got error 6 "No such device or address" during COMMIT ERROR HY000: Error while appending streaming replication fragment(provider status: Not connected to Primary Component)
INSERT INTO t1 VALUES (3, "cccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); INSERT INTO t1 VALUES (3, "cccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
SELECT * FROM t1; SELECT * FROM t1;
f1 f2 f1 f2

View File

@ -1,6 +1,6 @@
connection node_2; connection node_2;
connection node_1; connection node_1;
call mtr.add_suppression("WSREP: wsrep_mode = STRICT_REPLICATION enabled. Storage engine partition for table.*"); call mtr.add_suppression("WSREP: wsrep_mode = STRICT_REPLICATION enabled\\. Storage engine partition for table");
# wsrep-mode= DEFAULT # wsrep-mode= DEFAULT
SET GLOBAL wsrep_mode = ""; SET GLOBAL wsrep_mode = "";
SELECT @@wsrep_mode; SELECT @@wsrep_mode;

View File

@ -1,6 +1,6 @@
connection node_2; connection node_2;
connection node_1; connection node_1;
call mtr.add_suppression("WSREP: wsrep_mode = STRICT_REPLICATION enabled. Storage engine .*"); call mtr.add_suppression("WSREP: wsrep_mode = STRICT_REPLICATION enabled\\. Storage engine ");
CREATE TABLE t1(a int NOT NULL PRIMARY KEY, b varchar(50)) ENGINE=INNODB; CREATE TABLE t1(a int NOT NULL PRIMARY KEY, b varchar(50)) ENGINE=INNODB;
CREATE TABLE t2(a int NOT NULL PRIMARY KEY, b varchar(50)) ENGINE=MYISAM; CREATE TABLE t2(a int NOT NULL PRIMARY KEY, b varchar(50)) ENGINE=MYISAM;
CREATE TABLE t3(a int NOT NULL PRIMARY KEY, b varchar(50)) ENGINE=ARIA; CREATE TABLE t3(a int NOT NULL PRIMARY KEY, b varchar(50)) ENGINE=ARIA;

View File

@ -1,6 +1,6 @@
connection node_2; connection node_2;
connection node_1; connection node_1;
call mtr.add_suppression("WSREP: wsrep_mode = REQUIRED_PRIMARY_KEY enabled. Table .*"); call mtr.add_suppression("WSREP: wsrep_mode = REQUIRED_PRIMARY_KEY enabled\\. Table ");
CREATE TABLE t1(a int, b varchar(50)) ENGINE=INNODB; CREATE TABLE t1(a int, b varchar(50)) ENGINE=INNODB;
CREATE TABLE t2(a int, b varchar(50)) ENGINE=MYISAM; CREATE TABLE t2(a int, b varchar(50)) ENGINE=MYISAM;
CREATE TABLE t3(a int, b varchar(50)) ENGINE=MEMORY; CREATE TABLE t3(a int, b varchar(50)) ENGINE=MEMORY;

View File

@ -4,7 +4,7 @@ create table t1 (id serial, val int) engine=innodb;
create table t2 (id serial, val int) engine=aria; create table t2 (id serial, val int) engine=aria;
insert into t1 values(1, 23); insert into t1 values(1, 23);
insert into t2 values(2, 42); insert into t2 values(2, 42);
call mtr.add_suppression("WSREP: Replication of non-transactional engines is experimental. Storage engine Aria for table 'test'.'t2' is not supported in Galera"); call mtr.add_suppression("WSREP: Replication of non-transactional engines is experimental\\. Storage engine Aria for table 'test'\\.'t2' is not supported in Galera");
begin; begin;
update t1 set val=24 where id=1; update t1 set val=24 where id=1;
update t2 set val=41 where id=2; update t2 set val=41 where id=2;

View File

@ -10,6 +10,7 @@
# transaction in the MDL conflict handling code. # transaction in the MDL conflict handling code.
--source include/galera_cluster.inc --source include/galera_cluster.inc
--source include/have_innodb.inc
--source include/have_debug_sync.inc --source include/have_debug_sync.inc
--source include/have_debug.inc --source include/have_debug.inc

View File

@ -45,7 +45,6 @@ select * from t2;
select * from t3; select * from t3;
select * from t4; select * from t4;
select * from t5; select * from t5;
set global wsrep_mode=default;
--connection node_1 --connection node_1
drop table t1,t2,t3,t4,t5; drop table t1,t2,t3,t4,t5;

View File

@ -1,4 +1,5 @@
--source include/galera_cluster.inc --source include/galera_cluster.inc
--source include/have_innodb.inc
--echo # On node_1 --echo # On node_1
--connection node_1 --connection node_1

View File

@ -1,4 +1,5 @@
--source include/galera_cluster.inc --source include/galera_cluster.inc
--source include/have_innodb.inc
--source include/have_aria.inc --source include/have_aria.inc
# #
@ -35,7 +36,4 @@ SELECT COUNT(*) = 1 FROM t1;
DROP TABLE t1; DROP TABLE t1;
--connection node_1 --connection node_1
--disable_query_log
SET GLOBAL wsrep_mode = DEFAULT; SET GLOBAL wsrep_mode = DEFAULT;
--enable_query_log

View File

@ -6,10 +6,10 @@ wsrep_sst_auth="root:"
wsrep_debug=1 wsrep_debug=1
[mysqld.1] [mysqld.1]
wsrep_provider_options='base_port=@mysqld.1.#galera_port;gcache.size=1;pc.ignore_sb=true' wsrep_provider_options='pc.ignore_sb=true;repl.causal_read_timeout=PT90S;base_port=@mysqld.1.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=1'
[mysqld.2] [mysqld.2]
wsrep_provider_options='base_port=@mysqld.2.#galera_port;gcache.size=1;pc.ignore_sb=true' wsrep_provider_options='pc.ignore_sb=true;repl.causal_read_timeout=PT90S;base_port=@mysqld.2.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=1'
[sst] [sst]
transferfmt=@ENV.MTR_GALERA_TFMT transferfmt=@ENV.MTR_GALERA_TFMT

View File

@ -126,7 +126,7 @@ let SEARCH_PATTERN = Resuming and resyncing the provider;
let SEARCH_PATTERN = Server not desynched from group because WSREP_MODE_BF_MARIABACKUP used.; let SEARCH_PATTERN = Server not desynched from group because WSREP_MODE_BF_MARIABACKUP used.;
--source include/search_pattern_in_file.inc --source include/search_pattern_in_file.inc
SET GLOBAL wsrep_mode = ""; SET GLOBAL wsrep_mode = DEFAULT;
--connection node_1 --connection node_1
DROP TABLE t; DROP TABLE t;

View File

@ -89,7 +89,7 @@ SET DEBUG_SYNC = "now SIGNAL continue_kill";
--reap --reap
--connection node_2a --connection node_2a
--error 0,1213,2013 --error 0,1213,2013,2026
select * from t1; select * from t1;
--connection node_2b --connection node_2b
@ -130,7 +130,7 @@ SET DEBUG_SYNC = "now WAIT_FOR bwoc_reached";
SET DEBUG_SYNC = "now SIGNAL bwoc_continue"; SET DEBUG_SYNC = "now SIGNAL bwoc_continue";
--connection node_2a --connection node_2a
--error 0,1213 --error 0,1213,2013,2026
--reap --reap
--connection node_2 --connection node_2

View File

@ -101,4 +101,3 @@ DROP TABLE tab;
DROP TABLE tab1; DROP TABLE tab1;
DROP TABLE tab2; DROP TABLE tab2;
DROP TABLE tab3; DROP TABLE tab3;

View File

@ -3,7 +3,7 @@
--source include/have_innodb.inc --source include/have_innodb.inc
--source include/have_aria.inc --source include/have_aria.inc
call mtr.add_suppression("WSREP: wsrep_mode = STRICT_REPLICATION enabled. Storage engine partition for table.*"); call mtr.add_suppression("WSREP: wsrep_mode = STRICT_REPLICATION enabled\\. Storage engine partition for table");
--echo # wsrep-mode= DEFAULT --echo # wsrep-mode= DEFAULT
SET GLOBAL wsrep_mode = ""; SET GLOBAL wsrep_mode = "";

View File

@ -15,9 +15,10 @@
# In both cases apply flood control if >= 10 same warning # In both cases apply flood control if >= 10 same warning
# #
--source include/galera_cluster.inc --source include/galera_cluster.inc
--source include/have_innodb.inc
--source include/have_aria.inc --source include/have_aria.inc
call mtr.add_suppression("WSREP: wsrep_mode = STRICT_REPLICATION enabled. Storage engine .*"); call mtr.add_suppression("WSREP: wsrep_mode = STRICT_REPLICATION enabled\\. Storage engine ");
CREATE TABLE t1(a int NOT NULL PRIMARY KEY, b varchar(50)) ENGINE=INNODB; CREATE TABLE t1(a int NOT NULL PRIMARY KEY, b varchar(50)) ENGINE=INNODB;
CREATE TABLE t2(a int NOT NULL PRIMARY KEY, b varchar(50)) ENGINE=MYISAM; CREATE TABLE t2(a int NOT NULL PRIMARY KEY, b varchar(50)) ENGINE=MYISAM;
@ -114,4 +115,3 @@ DROP TABLE t1,t2,t3,t4;
SET GLOBAL log_warnings=DEFAULT; SET GLOBAL log_warnings=DEFAULT;
SET GLOBAL wsrep_mode=DEFAULT; SET GLOBAL wsrep_mode=DEFAULT;
--disable_query_log --disable_query_log

View File

@ -14,9 +14,10 @@
# In both cases apply flood control if >= 10 same warning # In both cases apply flood control if >= 10 same warning
# #
--source include/galera_cluster.inc --source include/galera_cluster.inc
--source include/have_innodb.inc
--source include/have_aria.inc --source include/have_aria.inc
call mtr.add_suppression("WSREP: wsrep_mode = REQUIRED_PRIMARY_KEY enabled. Table .*"); call mtr.add_suppression("WSREP: wsrep_mode = REQUIRED_PRIMARY_KEY enabled\\. Table ");
CREATE TABLE t1(a int, b varchar(50)) ENGINE=INNODB; CREATE TABLE t1(a int, b varchar(50)) ENGINE=INNODB;
CREATE TABLE t2(a int, b varchar(50)) ENGINE=MYISAM; CREATE TABLE t2(a int, b varchar(50)) ENGINE=MYISAM;
@ -140,4 +141,3 @@ DROP TABLE t1,t2,t3,t4;
SET GLOBAL log_warnings=DEFAULT; SET GLOBAL log_warnings=DEFAULT;
SET GLOBAL wsrep_mode=DEFAULT; SET GLOBAL wsrep_mode=DEFAULT;
--disable_query_log --disable_query_log

View File

@ -94,11 +94,13 @@ SELECT * FROM t1;
--eval SET GLOBAL wsrep_auto_increment_control = $auto_increment_control_orig --eval SET GLOBAL wsrep_auto_increment_control = $auto_increment_control_orig
--eval SET GLOBAL auto_increment_increment = $auto_increment_increment_node1 --eval SET GLOBAL auto_increment_increment = $auto_increment_increment_node1
--eval SET GLOBAL auto_increment_offset = $auto_increment_offset_node1 --eval SET GLOBAL auto_increment_offset = $auto_increment_offset_node1
--disconnect node_1a
--connection node_2 --connection node_2
--eval SET GLOBAL wsrep_auto_increment_control = $auto_increment_control_orig --eval SET GLOBAL wsrep_auto_increment_control = $auto_increment_control_orig
--eval SET GLOBAL auto_increment_increment = $auto_increment_increment_node2 --eval SET GLOBAL auto_increment_increment = $auto_increment_increment_node2
--eval SET GLOBAL auto_increment_offset = $auto_increment_offset_node2 --eval SET GLOBAL auto_increment_offset = $auto_increment_offset_node2
--disconnect node_2a
--enable_query_log --enable_query_log

View File

@ -3,7 +3,6 @@
# #
--source include/galera_cluster.inc --source include/galera_cluster.inc
--source include/have_innodb.inc
--source include/have_aria.inc --source include/have_aria.inc
CREATE TABLE t1 (f1 INT PRIMARY KEY) Engine=Aria; CREATE TABLE t1 (f1 INT PRIMARY KEY) Engine=Aria;

View File

@ -234,4 +234,3 @@ SET GLOBAL wsrep_mode = DEFAULT;
--connection node_2 --connection node_2
SET GLOBAL wsrep_mode = DEFAULT; SET GLOBAL wsrep_mode = DEFAULT;
--enable_query_log --enable_query_log

View File

@ -57,9 +57,3 @@ SELECT @@wsrep_mode;
# reset # reset
SET GLOBAL wsrep_mode=DEFAULT; SET GLOBAL wsrep_mode=DEFAULT;

View File

@ -10,4 +10,3 @@ SELECT @@global.wsrep_strict_ddl;
SET @@global.wsrep_strict_ddl=OFF; SET @@global.wsrep_strict_ddl=OFF;
SELECT @@global.wsrep_mode; SELECT @@global.wsrep_mode;
SELECT @@global.wsrep_strict_ddl; SELECT @@global.wsrep_strict_ddl;

View File

@ -91,10 +91,6 @@ CALL mtr.add_suppression("WSREP: Vote 0 \\(success\\) on .* is inconsistent with
DROP TABLE t2; DROP TABLE t2;
--let $node_3=node_3
--let $auto_increment_offset_node_3 = 3;
--let $node_4=node_4
--let $auto_increment_offset_node_4 = 4;
--source suite/galera/include/auto_increment_offset_restore.inc --source suite/galera/include/auto_increment_offset_restore.inc
--disconnect node_3 --disconnect node_3

View File

@ -16,7 +16,6 @@ CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB;
DROP TABLE t1; DROP TABLE t1;
SET GLOBAL wsrep_mode = default; SET GLOBAL wsrep_mode = default;
# MDEV-25698 SIGSEGV in wsrep_should_replicate_ddl # MDEV-25698 SIGSEGV in wsrep_should_replicate_ddl
SET GLOBAL wsrep_mode = STRICT_REPLICATION; SET GLOBAL wsrep_mode = STRICT_REPLICATION;

View File

@ -1,4 +1,5 @@
--source include/galera_cluster.inc --source include/galera_cluster.inc
--source include/have_innodb.inc
--source include/have_aria.inc --source include/have_aria.inc
create table t1 (id serial, val int) engine=innodb; create table t1 (id serial, val int) engine=innodb;
@ -6,7 +7,8 @@ create table t2 (id serial, val int) engine=aria;
insert into t1 values(1, 23); insert into t1 values(1, 23);
insert into t2 values(2, 42); insert into t2 values(2, 42);
call mtr.add_suppression("WSREP: Replication of non-transactional engines is experimental. Storage engine Aria for table 'test'.'t2' is not supported in Galera");
call mtr.add_suppression("WSREP: Replication of non-transactional engines is experimental\\. Storage engine Aria for table 'test'\\.'t2' is not supported in Galera");
begin; begin;
update t1 set val=24 where id=1; update t1 set val=24 where id=1;

View File

@ -1,4 +1,5 @@
--source include/galera_cluster.inc --source include/galera_cluster.inc
--source include/have_innodb.inc
--source include/have_debug.inc --source include/have_debug.inc
--source include/have_debug_sync.inc --source include/have_debug_sync.inc
--source include/big_test.inc --source include/big_test.inc

View File

@ -5,12 +5,12 @@ wsrep_sst_method=rsync
[mysqld.1] [mysqld.1]
wsrep_node_name='node.1' wsrep_node_name='node.1'
wsrep_provider_options='base_port=@mysqld.1.#galera_port;socket.ssl=yes;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera-key.pem;socket.dynamic=true' wsrep_provider_options='socket.ssl=yes;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera-key.pem;socket.dynamic=true;repl.causal_read_timeout=PT90S;base_port=@mysqld.1.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M'
[mysqld.2] [mysqld.2]
wsrep_node_name='node.2' wsrep_node_name='node.2'
wsrep_provider_options='base_port=@mysqld.2.#galera_port' wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.2.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M'
[mysqld.3] [mysqld.3]
wsrep_node_name='node.3' wsrep_node_name='node.3'
wsrep_provider_options='base_port=@mysqld.3.#galera_port;socket.ssl=yes;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera-key.pem;socket.dynamic=true' wsrep_provider_options='socket.ssl=yes;socket.ssl_cert=@ENV.MYSQL_TEST_DIR/std_data/galera-cert.pem;socket.ssl_key=@ENV.MYSQL_TEST_DIR/std_data/galera-key.pem;socket.dynamic=true;repl.causal_read_timeout=PT90S;base_port=@mysqld.3.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.wait_prim_timeout=PT60S;gcache.size=10M'

View File

@ -14,7 +14,6 @@
--let $node_3 = node_3 --let $node_3 = node_3
--source ../galera/include/auto_increment_offset_save.inc --source ../galera/include/auto_increment_offset_save.inc
--connection node_1 --connection node_1
--let $wait_condition = SELECT VARIABLE_VALUE = 'Synced' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_state_comment'; --let $wait_condition = SELECT VARIABLE_VALUE = 'Synced' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_state_comment';
--source include/wait_condition.inc --source include/wait_condition.inc

View File

@ -45,7 +45,7 @@ SET SESSION wsrep_sync_wait = 0;
SET SESSION wsrep_sync_wait = DEFAULT; SET SESSION wsrep_sync_wait = DEFAULT;
SET DEBUG_SYNC = 'now SIGNAL continue'; SET DEBUG_SYNC = 'now SIGNAL continue';
connection node_2; connection node_2;
ERROR HY000: Got error 6 "No such device or address" during COMMIT ERROR HY000: Error while appending streaming replication fragment(provider status: Not connected to Primary Component)
connection node_2a; connection node_2a;
SET DEBUG_SYNC = 'RESET'; SET DEBUG_SYNC = 'RESET';
connection node_1a; connection node_1a;

View File

@ -7774,6 +7774,7 @@ int handler::ha_write_row(const uchar *buf)
Log_func *log_func= Write_rows_log_event::binlog_row_logging_function; Log_func *log_func= Write_rows_log_event::binlog_row_logging_function;
error= binlog_log_row(table, 0, buf, log_func); error= binlog_log_row(table, 0, buf, log_func);
} }
#ifdef WITH_WSREP #ifdef WITH_WSREP
THD *thd= ha_thd(); THD *thd= ha_thd();
if (WSREP_NNULL(thd) && table_share->tmp_table == NO_TMP_TABLE && if (WSREP_NNULL(thd) && table_share->tmp_table == NO_TMP_TABLE &&

View File

@ -2473,25 +2473,22 @@ bool wsrep_should_replicate_ddl(THD* thd, const handlerton *hton)
case DB_TYPE_MYISAM: case DB_TYPE_MYISAM:
if (wsrep_check_mode(WSREP_MODE_REPLICATE_MYISAM)) if (wsrep_check_mode(WSREP_MODE_REPLICATE_MYISAM))
return true; return true;
else break;
WSREP_DEBUG("wsrep OSU failed for %s", wsrep_thd_query(thd)); case DB_TYPE_ARIA:
if (wsrep_check_mode(WSREP_MODE_REPLICATE_ARIA))
return true;
break; break;
case DB_TYPE_PARTITION_DB: case DB_TYPE_PARTITION_DB:
/* In most cases this means we could not find out /* In most cases this means we could not find out
table->file->partition_ht() */ table->file->partition_ht() */
return true; return true;
break; break;
case DB_TYPE_ARIA:
if (wsrep_check_mode(WSREP_MODE_REPLICATE_ARIA))
return true;
else
WSREP_DEBUG("wsrep OSU failed for %s", wsrep_thd_query(thd));
break;
default: default:
WSREP_DEBUG("wsrep OSU failed for %s", wsrep_thd_query(thd));
break; break;
} }
WSREP_DEBUG("wsrep OSU failed for %s", wsrep_thd_query(thd));
/* wsrep_mode = STRICT_REPLICATION, treat as error */ /* wsrep_mode = STRICT_REPLICATION, treat as error */
my_error(ER_GALERA_REPLICATION_NOT_SUPPORTED, MYF(0)); my_error(ER_GALERA_REPLICATION_NOT_SUPPORTED, MYF(0));
push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN, push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
@ -2506,15 +2503,14 @@ bool wsrep_should_replicate_ddl_iterate(THD* thd, const TABLE_LIST* table_list)
{ {
for (const TABLE_LIST* it= table_list; it; it= it->next_global) for (const TABLE_LIST* it= table_list; it; it= it->next_global)
{ {
if (it->table && !it->table_function) const TABLE* table= it->table;
if (table && !it->table_function)
{ {
/* If this is partitioned table we need to find out /* If this is partitioned table we need to find out
implementing storage engine handlerton. implementing storage engine handlerton.
*/ */
const handlerton *ht= it->table->file->partition_ht() ? const handlerton *ht= table->file->partition_ht();
it->table->file->partition_ht() : if (!ht) ht= table->s->db_type();
it->table->s->db_type();
if (!wsrep_should_replicate_ddl(thd, ht)) if (!wsrep_should_replicate_ddl(thd, ht))
return false; return false;
} }
@ -3208,6 +3204,7 @@ void wsrep_handle_mdl_conflict(MDL_context *requestor_ctx,
THD *request_thd= requestor_ctx->get_thd(); THD *request_thd= requestor_ctx->get_thd();
mysql_mutex_lock(&request_thd->LOCK_thd_data); mysql_mutex_lock(&request_thd->LOCK_thd_data);
if (wsrep_thd_is_toi(request_thd) || if (wsrep_thd_is_toi(request_thd) ||
wsrep_thd_is_applying(request_thd)) wsrep_thd_is_applying(request_thd))
{ {

View File

@ -237,25 +237,13 @@ static inline void wsrep_override_error(THD* thd,
wsrep::client_error ce, wsrep::client_error ce,
enum wsrep::provider::status status) enum wsrep::provider::status status)
{ {
DBUG_ASSERT(ce != wsrep::e_success); DBUG_ASSERT(ce != wsrep::e_success);
switch (ce) switch (ce)
{ {
case wsrep::e_error_during_commit: case wsrep::e_error_during_commit:
if (status == wsrep::provider::error_size_exceeded) if (status == wsrep::provider::error_size_exceeded)
wsrep_override_error(thd, ER_UNKNOWN_ERROR, "Maximum writeset size exceeded");
else
wsrep_override_error(thd, ER_ERROR_DURING_COMMIT, 0, status);
break;
case wsrep::e_deadlock_error:
wsrep_override_error(thd, ER_LOCK_DEADLOCK);
break;
case wsrep::e_interrupted_error:
wsrep_override_error(thd, ER_QUERY_INTERRUPTED);
break;
case wsrep::e_size_exceeded_error:
wsrep_override_error(thd, ER_UNKNOWN_ERROR, "Maximum writeset size exceeded"); wsrep_override_error(thd, ER_UNKNOWN_ERROR, "Maximum writeset size exceeded");
break; else
case wsrep::e_append_fragment_error:
/* TODO: Figure out better error number */ /* TODO: Figure out better error number */
if (status) if (status)
wsrep_override_error(thd, ER_ERROR_DURING_COMMIT, wsrep_override_error(thd, ER_ERROR_DURING_COMMIT,
@ -265,17 +253,45 @@ static inline void wsrep_override_error(THD* thd,
else else
wsrep_override_error(thd, ER_ERROR_DURING_COMMIT, wsrep_override_error(thd, ER_ERROR_DURING_COMMIT,
"Error while appending streaming replication fragment"); "Error while appending streaming replication fragment");
break; break;
case wsrep::e_not_supported_error: case wsrep::e_deadlock_error:
wsrep_override_error(thd, ER_NOT_SUPPORTED_YET); switch (thd->lex->sql_command)
break; {
case wsrep::e_timeout_error: case SQLCOM_XA_END:
wsrep_override_error(thd, ER_LOCK_WAIT_TIMEOUT); case SQLCOM_XA_PREPARE:
wsrep_override_error(thd, ER_XA_RBDEADLOCK);
break; break;
default: default:
wsrep_override_error(thd, ER_UNKNOWN_ERROR); wsrep_override_error(thd, ER_LOCK_DEADLOCK);
break; break;
} }
break;
case wsrep::e_interrupted_error:
wsrep_override_error(thd, ER_QUERY_INTERRUPTED);
break;
case wsrep::e_size_exceeded_error:
wsrep_override_error(thd, ER_UNKNOWN_ERROR, "Maximum writeset size exceeded");
break;
case wsrep::e_append_fragment_error:
/* TODO: Figure out better error number */
if (status)
wsrep_override_error(thd, ER_ERROR_DURING_COMMIT,
"Error while appending streaming replication fragment"
"(provider status: %s)",
wsrep::provider::to_string(status).c_str());
else
wsrep_override_error(thd, ER_ERROR_DURING_COMMIT,
"Error while appending streaming replication fragment");
break;
case wsrep::e_not_supported_error:
wsrep_override_error(thd, ER_NOT_SUPPORTED_YET);
break;
case wsrep::e_timeout_error:
wsrep_override_error(thd, ER_LOCK_WAIT_TIMEOUT);
break;
default:
wsrep_override_error(thd, ER_UNKNOWN_ERROR);
}
} }
/** /**