summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/suite/galera/r/MW-360.result161
-rw-r--r--mysql-test/suite/galera/r/MW-86-wait1.result48
-rw-r--r--mysql-test/suite/galera/r/MW-86-wait8.result50
-rw-r--r--mysql-test/suite/galera/r/MW-86.result65
-rw-r--r--mysql-test/suite/galera/t/MW-360-master.opt2
-rw-r--r--mysql-test/suite/galera/t/MW-360.test103
-rw-r--r--mysql-test/suite/galera/t/MW-86-wait1-master.opt (renamed from mysql-test/suite/galera/t/MW-86-master.opt)0
-rw-r--r--mysql-test/suite/galera/t/MW-86-wait1.test106
-rw-r--r--mysql-test/suite/galera/t/MW-86-wait8-master.opt1
-rw-r--r--mysql-test/suite/galera/t/MW-86-wait8.test (renamed from mysql-test/suite/galera/t/MW-86.test)125
-rw-r--r--sql/sql_class.cc6
-rw-r--r--sql/sql_parse.cc4
-rw-r--r--sql/wsrep_applier.cc3
-rw-r--r--sql/wsrep_mysqld.cc2
-rw-r--r--sql/wsrep_var.cc45
15 files changed, 267 insertions, 454 deletions
diff --git a/mysql-test/suite/galera/r/MW-360.result b/mysql-test/suite/galera/r/MW-360.result
deleted file mode 100644
index 4195b8f07bc..00000000000
--- a/mysql-test/suite/galera/r/MW-360.result
+++ /dev/null
@@ -1,161 +0,0 @@
-SET GLOBAL wsrep_on=OFF;
-RESET MASTER;
-SET GLOBAL wsrep_on=ON;
-SET GLOBAL wsrep_on=OFF;
-RESET MASTER;
-SET GLOBAL wsrep_on=ON;
-CREATE TEMPORARY TABLE t1 (f1 INTEGER) ENGINE=InnoDB;
-INSERT INTO t1 VALUES (1);
-DROP TABLE t1;
-CREATE TEMPORARY TABLE t1 (f1 INTEGER) ENGINE=InnoDB;
-INSERT INTO t1 VALUES (1);
-CREATE TABLE t2 (f1 INTEGER) ENGINE=InnoDB;
-INSERT INTO t2 VALUES (2);
-DROP TABLE t1, t2;
-CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB;
-INSERT INTO t1 VALUES (1);
-CREATE TEMPORARY TABLE t2 (f1 INTEGER) ENGINE=InnoDB;
-INSERT INTO t2 VALUES (2);
-DROP TABLE t1, t2;
-CREATE TEMPORARY TABLE t1 (f1 INTEGER) ENGINE=InnoDB;
-INSERT INTO t1 VALUES (1);
-CREATE TABLE t2 (f1 INTEGER) ENGINE=InnoDB;
-INSERT INTO t2 VALUES (2);
-CREATE TEMPORARY TABLE t3 (f1 INTEGER) ENGINE=InnoDB;
-INSERT INTO t3 VALUES (3);
-DROP TABLE t1, t2, t3;
-CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB;
-INSERT INTO t1 VALUES (1);
-CREATE TEMPORARY TABLE t2 (f1 INTEGER) ENGINE=InnoDB;
-INSERT INTO t2 VALUES (2);
-CREATE TABLE t3 (f1 INTEGER) ENGINE=InnoDB;
-INSERT INTO t3 VALUES (3);
-DROP TABLE t1, t2, t3;
-CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB;
-INSERT INTO t1 VALUES (1);
-CREATE TEMPORARY TABLE t1 (f1 INTEGER) ENGINE=InnoDB;
-INSERT INTO t1 VALUES (2);
-DROP TABLE t1;
-DROP TABLE t1;
-SHOW BINLOG EVENTS IN 'mysqld-bin.000001' FROM 120;
-Log_name Pos Event_type Server_id End_log_pos Info
-mysqld-bin.000001 120 Previous_gtids 1 151
-mysqld-bin.000001 151 Gtid 1 199 SET @@SESSION.GTID_NEXT= '<local_uuid>:1'
-mysqld-bin.000001 199 Query 1 339 use `test`; DROP TEMPORARY TABLE IF EXISTS `t1` /* generated by server */
-mysqld-bin.000001 339 Gtid 1 387 SET @@SESSION.GTID_NEXT= '<cluster_uuid>:1'
-mysqld-bin.000001 387 Query 1 503 use `test`; CREATE TABLE t2 (f1 INTEGER) ENGINE=InnoDB
-mysqld-bin.000001 503 Gtid 1 551 SET @@SESSION.GTID_NEXT= '<cluster_uuid>:2'
-mysqld-bin.000001 551 Query 1 628 BEGIN
-mysqld-bin.000001 628 Table_map 1 673 table_id: # (test.t2)
-mysqld-bin.000001 673 Write_rows 1 713 table_id: # flags: STMT_END_F
-mysqld-bin.000001 713 Xid 1 744 COMMIT /* xid=# */
-mysqld-bin.000001 744 Gtid 1 792 SET @@SESSION.GTID_NEXT= '<local_uuid>:2'
-mysqld-bin.000001 792 Query 1 927 use `test`; DROP TEMPORARY TABLE IF EXISTS `t1` /* generated by server */
-mysqld-bin.000001 927 Gtid 1 975 SET @@SESSION.GTID_NEXT= '<cluster_uuid>:3'
-mysqld-bin.000001 975 Query 1 1090 use `test`; DROP TABLE `t2` /* generated by server */
-mysqld-bin.000001 1090 Gtid 1 1138 SET @@SESSION.GTID_NEXT= '<cluster_uuid>:4'
-mysqld-bin.000001 1138 Query 1 1254 use `test`; CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB
-mysqld-bin.000001 1254 Gtid 1 1302 SET @@SESSION.GTID_NEXT= '<cluster_uuid>:5'
-mysqld-bin.000001 1302 Query 1 1379 BEGIN
-mysqld-bin.000001 1379 Table_map 1 1424 table_id: # (test.t1)
-mysqld-bin.000001 1424 Write_rows 1 1464 table_id: # flags: STMT_END_F
-mysqld-bin.000001 1464 Xid 1 1495 COMMIT /* xid=# */
-mysqld-bin.000001 1495 Gtid 1 1543 SET @@SESSION.GTID_NEXT= '<local_uuid>:3'
-mysqld-bin.000001 1543 Query 1 1678 use `test`; DROP TEMPORARY TABLE IF EXISTS `t2` /* generated by server */
-mysqld-bin.000001 1678 Gtid 1 1726 SET @@SESSION.GTID_NEXT= '<cluster_uuid>:6'
-mysqld-bin.000001 1726 Query 1 1841 use `test`; DROP TABLE `t1` /* generated by server */
-mysqld-bin.000001 1841 Gtid 1 1889 SET @@SESSION.GTID_NEXT= '<cluster_uuid>:7'
-mysqld-bin.000001 1889 Query 1 2005 use `test`; CREATE TABLE t2 (f1 INTEGER) ENGINE=InnoDB
-mysqld-bin.000001 2005 Gtid 1 2053 SET @@SESSION.GTID_NEXT= '<cluster_uuid>:8'
-mysqld-bin.000001 2053 Query 1 2130 BEGIN
-mysqld-bin.000001 2130 Table_map 1 2175 table_id: # (test.t2)
-mysqld-bin.000001 2175 Write_rows 1 2215 table_id: # flags: STMT_END_F
-mysqld-bin.000001 2215 Xid 1 2246 COMMIT /* xid=# */
-mysqld-bin.000001 2246 Gtid 1 2294 SET @@SESSION.GTID_NEXT= '<local_uuid>:4'
-mysqld-bin.000001 2294 Query 1 2434 use `test`; DROP TEMPORARY TABLE IF EXISTS `t1`,`t3` /* generated by server */
-mysqld-bin.000001 2434 Gtid 1 2482 SET @@SESSION.GTID_NEXT= '<cluster_uuid>:9'
-mysqld-bin.000001 2482 Query 1 2597 use `test`; DROP TABLE `t2` /* generated by server */
-mysqld-bin.000001 2597 Gtid 1 2645 SET @@SESSION.GTID_NEXT= '<cluster_uuid>:10'
-mysqld-bin.000001 2645 Query 1 2761 use `test`; CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB
-mysqld-bin.000001 2761 Gtid 1 2809 SET @@SESSION.GTID_NEXT= '<cluster_uuid>:11'
-mysqld-bin.000001 2809 Query 1 2886 BEGIN
-mysqld-bin.000001 2886 Table_map 1 2931 table_id: # (test.t1)
-mysqld-bin.000001 2931 Write_rows 1 2971 table_id: # flags: STMT_END_F
-mysqld-bin.000001 2971 Xid 1 3002 COMMIT /* xid=# */
-mysqld-bin.000001 3002 Gtid 1 3050 SET @@SESSION.GTID_NEXT= '<cluster_uuid>:12'
-mysqld-bin.000001 3050 Query 1 3166 use `test`; CREATE TABLE t3 (f1 INTEGER) ENGINE=InnoDB
-mysqld-bin.000001 3166 Gtid 1 3214 SET @@SESSION.GTID_NEXT= '<cluster_uuid>:13'
-mysqld-bin.000001 3214 Query 1 3291 BEGIN
-mysqld-bin.000001 3291 Table_map 1 3336 table_id: # (test.t3)
-mysqld-bin.000001 3336 Write_rows 1 3376 table_id: # flags: STMT_END_F
-mysqld-bin.000001 3376 Xid 1 3407 COMMIT /* xid=# */
-mysqld-bin.000001 3407 Gtid 1 3455 SET @@SESSION.GTID_NEXT= '<local_uuid>:5'
-mysqld-bin.000001 3455 Query 1 3590 use `test`; DROP TEMPORARY TABLE IF EXISTS `t2` /* generated by server */
-mysqld-bin.000001 3590 Gtid 1 3638 SET @@SESSION.GTID_NEXT= '<cluster_uuid>:14'
-mysqld-bin.000001 3638 Query 1 3758 use `test`; DROP TABLE `t1`,`t3` /* generated by server */
-mysqld-bin.000001 3758 Gtid 1 3806 SET @@SESSION.GTID_NEXT= '<cluster_uuid>:15'
-mysqld-bin.000001 3806 Query 1 3922 use `test`; CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB
-mysqld-bin.000001 3922 Gtid 1 3970 SET @@SESSION.GTID_NEXT= '<cluster_uuid>:16'
-mysqld-bin.000001 3970 Query 1 4047 BEGIN
-mysqld-bin.000001 4047 Table_map 1 4092 table_id: # (test.t1)
-mysqld-bin.000001 4092 Write_rows 1 4132 table_id: # flags: STMT_END_F
-mysqld-bin.000001 4132 Xid 1 4163 COMMIT /* xid=# */
-mysqld-bin.000001 4163 Gtid 1 4211 SET @@SESSION.GTID_NEXT= '<local_uuid>:6'
-mysqld-bin.000001 4211 Query 1 4351 use `test`; DROP TEMPORARY TABLE IF EXISTS `t1` /* generated by server */
-mysqld-bin.000001 4351 Gtid 1 4399 SET @@SESSION.GTID_NEXT= '<cluster_uuid>:17'
-mysqld-bin.000001 4399 Query 1 4514 use `test`; DROP TABLE `t1` /* generated by server */
-SHOW BINLOG EVENTS IN 'mysqld-bin.000001' FROM 120;
-Log_name Pos Event_type Server_id End_log_pos Info
-mysqld-bin.000001 120 Previous_gtids 2 151
-mysqld-bin.000001 151 Gtid 1 199 SET @@SESSION.GTID_NEXT= '<cluster_uuid>:1'
-mysqld-bin.000001 199 Query 1 315 use `test`; CREATE TABLE t2 (f1 INTEGER) ENGINE=InnoDB
-mysqld-bin.000001 315 Gtid 1 363 SET @@SESSION.GTID_NEXT= '<cluster_uuid>:2'
-mysqld-bin.000001 363 Query 1 431 BEGIN
-mysqld-bin.000001 431 Table_map 1 476 table_id: # (test.t2)
-mysqld-bin.000001 476 Write_rows 1 516 table_id: # flags: STMT_END_F
-mysqld-bin.000001 516 Xid 1 547 COMMIT /* xid=# */
-mysqld-bin.000001 547 Gtid 1 595 SET @@SESSION.GTID_NEXT= '<cluster_uuid>:3'
-mysqld-bin.000001 595 Query 1 710 use `test`; DROP TABLE `t2` /* generated by server */
-mysqld-bin.000001 710 Gtid 1 758 SET @@SESSION.GTID_NEXT= '<cluster_uuid>:4'
-mysqld-bin.000001 758 Query 1 874 use `test`; CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB
-mysqld-bin.000001 874 Gtid 1 922 SET @@SESSION.GTID_NEXT= '<cluster_uuid>:5'
-mysqld-bin.000001 922 Query 1 990 BEGIN
-mysqld-bin.000001 990 Table_map 1 1035 table_id: # (test.t1)
-mysqld-bin.000001 1035 Write_rows 1 1075 table_id: # flags: STMT_END_F
-mysqld-bin.000001 1075 Xid 1 1106 COMMIT /* xid=# */
-mysqld-bin.000001 1106 Gtid 1 1154 SET @@SESSION.GTID_NEXT= '<cluster_uuid>:6'
-mysqld-bin.000001 1154 Query 1 1269 use `test`; DROP TABLE `t1` /* generated by server */
-mysqld-bin.000001 1269 Gtid 1 1317 SET @@SESSION.GTID_NEXT= '<cluster_uuid>:7'
-mysqld-bin.000001 1317 Query 1 1433 use `test`; CREATE TABLE t2 (f1 INTEGER) ENGINE=InnoDB
-mysqld-bin.000001 1433 Gtid 1 1481 SET @@SESSION.GTID_NEXT= '<cluster_uuid>:8'
-mysqld-bin.000001 1481 Query 1 1549 BEGIN
-mysqld-bin.000001 1549 Table_map 1 1594 table_id: # (test.t2)
-mysqld-bin.000001 1594 Write_rows 1 1634 table_id: # flags: STMT_END_F
-mysqld-bin.000001 1634 Xid 1 1665 COMMIT /* xid=# */
-mysqld-bin.000001 1665 Gtid 1 1713 SET @@SESSION.GTID_NEXT= '<cluster_uuid>:9'
-mysqld-bin.000001 1713 Query 1 1828 use `test`; DROP TABLE `t2` /* generated by server */
-mysqld-bin.000001 1828 Gtid 1 1876 SET @@SESSION.GTID_NEXT= '<cluster_uuid>:10'
-mysqld-bin.000001 1876 Query 1 1992 use `test`; CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB
-mysqld-bin.000001 1992 Gtid 1 2040 SET @@SESSION.GTID_NEXT= '<cluster_uuid>:11'
-mysqld-bin.000001 2040 Query 1 2108 BEGIN
-mysqld-bin.000001 2108 Table_map 1 2153 table_id: # (test.t1)
-mysqld-bin.000001 2153 Write_rows 1 2193 table_id: # flags: STMT_END_F
-mysqld-bin.000001 2193 Xid 1 2224 COMMIT /* xid=# */
-mysqld-bin.000001 2224 Gtid 1 2272 SET @@SESSION.GTID_NEXT= '<cluster_uuid>:12'
-mysqld-bin.000001 2272 Query 1 2388 use `test`; CREATE TABLE t3 (f1 INTEGER) ENGINE=InnoDB
-mysqld-bin.000001 2388 Gtid 1 2436 SET @@SESSION.GTID_NEXT= '<cluster_uuid>:13'
-mysqld-bin.000001 2436 Query 1 2504 BEGIN
-mysqld-bin.000001 2504 Table_map 1 2549 table_id: # (test.t3)
-mysqld-bin.000001 2549 Write_rows 1 2589 table_id: # flags: STMT_END_F
-mysqld-bin.000001 2589 Xid 1 2620 COMMIT /* xid=# */
-mysqld-bin.000001 2620 Gtid 1 2668 SET @@SESSION.GTID_NEXT= '<cluster_uuid>:14'
-mysqld-bin.000001 2668 Query 1 2788 use `test`; DROP TABLE `t1`,`t3` /* generated by server */
-mysqld-bin.000001 2788 Gtid 1 2836 SET @@SESSION.GTID_NEXT= '<cluster_uuid>:15'
-mysqld-bin.000001 2836 Query 1 2952 use `test`; CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB
-mysqld-bin.000001 2952 Gtid 1 3000 SET @@SESSION.GTID_NEXT= '<cluster_uuid>:16'
-mysqld-bin.000001 3000 Query 1 3068 BEGIN
-mysqld-bin.000001 3068 Table_map 1 3113 table_id: # (test.t1)
-mysqld-bin.000001 3113 Write_rows 1 3153 table_id: # flags: STMT_END_F
-mysqld-bin.000001 3153 Xid 1 3184 COMMIT /* xid=# */
-mysqld-bin.000001 3184 Gtid 1 3232 SET @@SESSION.GTID_NEXT= '<cluster_uuid>:17'
-mysqld-bin.000001 3232 Query 1 3347 use `test`; DROP TABLE `t1` /* generated by server */
diff --git a/mysql-test/suite/galera/r/MW-86-wait1.result b/mysql-test/suite/galera/r/MW-86-wait1.result
new file mode 100644
index 00000000000..a38255eff8f
--- /dev/null
+++ b/mysql-test/suite/galera/r/MW-86-wait1.result
@@ -0,0 +1,48 @@
+SELECT @@debug_sync;
+@@debug_sync
+ON - current signal: ''
+SET SESSION wsrep_sync_wait = 1;
+SET GLOBAL debug = "+d,sync.wsrep_apply_cb";
+Warnings:
+Warning 1287 '@@debug' is deprecated and will be removed in a future release. Please use '@@debug_dbug' instead
+CREATE TABLE t_wait1 (f1 INTEGER) ENGINE=InnoDB;
+INSERT INTO t_wait1 VALUES (1);
+SET SESSION debug_sync = "now WAIT_FOR sync.wsrep_apply_cb_reached";
+SHOW BINARY LOGS;
+SHOW BINLOG EVENTS;
+SHOW COLUMNS FROM t1;
+SHOW CREATE EVENT e1;
+SHOW CREATE FUNCTION f1;
+SHOW CREATE PROCEDURE p1;
+SHOW CREATE TABLE t1;
+SHOW CREATE TRIGGER tr1;
+SHOW CREATE VIEW v1;
+SHOW DATABASES;
+SHOW ENGINE InnoDB STATUS;
+SHOW FUNCTION CODE f1;
+SHOW FUNCTION STATUS;
+SHOW GRANTS FOR 'root'@'localhost';
+SHOW INDEX FROM t1;
+SHOW OPEN TABLES;
+SHOW PROCEDURE CODE p1;
+SHOW PROCEDURE STATUS;
+SHOW PRIVILEGES;
+SHOW STATUS LIKE 'wsrep_cluster_size';
+SHOW TABLE STATUS;
+SHOW TABLES;
+SHOW TRIGGERS;
+SHOW GLOBAL VARIABLES LIKE 'foo_bar';
+SHOW WARNINGS;
+SET GLOBAL debug = "-d,sync.wsrep_apply_cb";
+Warnings:
+Warning 1287 '@@debug' is deprecated and will be removed in a future release. Please use '@@debug_dbug' instead
+SET SESSION debug_sync = "now SIGNAL signal.wsrep_apply_cb";
+SET SESSION wsrep_sync_wait = default;
+DROP TABLE t_wait1;
+SET GLOBAL debug = NULL;
+Warnings:
+Warning 1287 '@@debug' is deprecated and will be removed in a future release. Please use '@@debug_dbug' instead
+SET debug_sync='RESET';
+SELECT @@debug_sync;
+@@debug_sync
+ON - current signal: ''
diff --git a/mysql-test/suite/galera/r/MW-86-wait8.result b/mysql-test/suite/galera/r/MW-86-wait8.result
new file mode 100644
index 00000000000..04c93e9a9f2
--- /dev/null
+++ b/mysql-test/suite/galera/r/MW-86-wait8.result
@@ -0,0 +1,50 @@
+SELECT @@debug_sync;
+@@debug_sync
+ON - current signal: ''
+SET SESSION wsrep_sync_wait = 8;
+SET GLOBAL debug = "+d,sync.wsrep_apply_cb";
+Warnings:
+Warning 1287 '@@debug' is deprecated and will be removed in a future release. Please use '@@debug_dbug' instead
+CREATE TABLE t_wait8 (f1 INTEGER) ENGINE=InnoDB;
+INSERT INTO t_wait8 VALUES (1);
+SET GLOBAL wsrep_provider_options = "repl.causal_read_timeout=PT0.1S";
+SET SESSION debug_sync = "now WAIT_FOR sync.wsrep_apply_cb_reached";
+SHOW BINARY LOGS;
+SHOW BINLOG EVENTS;
+SHOW COLUMNS FROM t1;
+SHOW CREATE DATABASE db1;
+SHOW CREATE EVENT e1;
+SHOW CREATE FUNCTION f1;
+SHOW CREATE PROCEDURE p1;
+SHOW CREATE TABLE t1;
+SHOW CREATE TRIGGER tr1;
+SHOW CREATE VIEW v1;
+SHOW DATABASES;
+SHOW ENGINE InnoDB STATUS;
+SHOW FUNCTION CODE f1;
+SHOW FUNCTION STATUS;
+SHOW GRANTS FOR 'root'@'localhost';
+SHOW INDEX FROM t1;
+SHOW OPEN TABLES;
+SHOW PROCEDURE CODE p1;
+SHOW PROCEDURE STATUS;
+SHOW PRIVILEGES;
+SHOW STATUS LIKE 'wsrep_cluster_size';
+SHOW TABLE STATUS;
+SHOW TABLES;
+SHOW TRIGGERS;
+SHOW GLOBAL VARIABLES LIKE 'foo_bar';
+SHOW WARNINGS;
+SET GLOBAL debug = "-d,sync.wsrep_apply_cb";
+Warnings:
+Warning 1287 '@@debug' is deprecated and will be removed in a future release. Please use '@@debug_dbug' instead
+SET DEBUG_SYNC = "now SIGNAL signal.wsrep_apply_cb";
+SET SESSION wsrep_sync_wait = default;
+DROP TABLE t_wait8;
+SET GLOBAL debug = NULL;
+Warnings:
+Warning 1287 '@@debug' is deprecated and will be removed in a future release. Please use '@@debug_dbug' instead
+SET debug_sync='RESET';
+SELECT @@debug_sync;
+@@debug_sync
+ON - current signal: ''
diff --git a/mysql-test/suite/galera/r/MW-86.result b/mysql-test/suite/galera/r/MW-86.result
deleted file mode 100644
index b29175216a8..00000000000
--- a/mysql-test/suite/galera/r/MW-86.result
+++ /dev/null
@@ -1,65 +0,0 @@
-SET SESSION wsrep_sync_wait = 1;
-SET GLOBAL DEBUG = "d,sync.wsrep_apply_cb";
-CREATE DATABASE db1;
-SHOW BINARY LOGS;
-SHOW BINLOG EVENTS;
-SHOW COLUMNS FROM t1;
-SHOW CREATE DATABASE db1;
-SHOW CREATE EVENT e1;
-SHOW CREATE FUNCTION f1;
-SHOW CREATE PROCEDURE p1;
-SHOW CREATE TABLE t1;
-SHOW CREATE TRIGGER tr1;
-SHOW CREATE VIEW v1;
-SHOW DATABASES;
-SHOW ENGINE InnoDB STATUS;
-SHOW FUNCTION CODE f1;
-SHOW FUNCTION STATUS;
-SHOW GRANTS FOR 'root'@'localhost';
-SHOW INDEX FROM t1;
-SHOW OPEN TABLES;
-SHOW PROCEDURE CODE p1;
-SHOW PROCEDURE STATUS;
-SHOW PRIVILEGES;
-SHOW STATUS LIKE 'wsrep_cluster_size';
-SHOW TABLE STATUS;
-SHOW TABLES;
-SHOW TRIGGERS;
-SHOW GLOBAL VARIABLES LIKE 'foo_bar';
-SHOW WARNINGS;
-SET GLOBAL DEBUG = "";
-SET DEBUG_SYNC = "now SIGNAL signal.wsrep_apply_cb";
-SET SESSION wsrep_sync_wait = 8;
-DROP DATABASE db1;
-SET GLOBAL wsrep_provider_options = "repl.causal_read_timeout=PT0.1S";
-SET SESSION wsrep_sync_wait = 8;
-SET GLOBAL DEBUG = "d,sync.wsrep_apply_cb";
-CREATE TABLE q (f1 INTEGER) ENGINE=InnoDB;
-SHOW BINARY LOGS;
-SHOW BINLOG EVENTS;
-SHOW COLUMNS FROM t1;
-SHOW CREATE DATABASE db1;
-SHOW CREATE EVENT e1;
-SHOW CREATE FUNCTION f1;
-SHOW CREATE PROCEDURE p1;
-SHOW CREATE TABLE t1;
-SHOW CREATE TRIGGER tr1;
-SHOW CREATE VIEW v1;
-SHOW DATABASES;
-SHOW ENGINE InnoDB STATUS;
-SHOW FUNCTION CODE f1;
-SHOW FUNCTION STATUS;
-SHOW GRANTS FOR 'root'@'localhost';
-SHOW INDEX FROM t1;
-SHOW OPEN TABLES;
-SHOW PROCEDURE CODE p1;
-SHOW PROCEDURE STATUS;
-SHOW PRIVILEGES;
-SHOW STATUS LIKE 'wsrep_cluster_size';
-SHOW TABLE STATUS;
-SHOW TABLES;
-SHOW TRIGGERS;
-SHOW GLOBAL VARIABLES LIKE 'foo_bar';
-SHOW WARNINGS;
-SET GLOBAL DEBUG = "";
-SET DEBUG_SYNC = "now SIGNAL signal.wsrep_apply_cb";
diff --git a/mysql-test/suite/galera/t/MW-360-master.opt b/mysql-test/suite/galera/t/MW-360-master.opt
deleted file mode 100644
index 6cfaed135e4..00000000000
--- a/mysql-test/suite/galera/t/MW-360-master.opt
+++ /dev/null
@@ -1,2 +0,0 @@
---gtid-mode=ON --log-bin --log-slave-updates --enforce-gtid-consistency
-
diff --git a/mysql-test/suite/galera/t/MW-360.test b/mysql-test/suite/galera/t/MW-360.test
deleted file mode 100644
index 7ea743cdb3d..00000000000
--- a/mysql-test/suite/galera/t/MW-360.test
+++ /dev/null
@@ -1,103 +0,0 @@
-#
-# MW-360 DROP TABLE containing temporary tables results in binlog divergence
-#
-
---source include/galera_cluster.inc
---source include/have_binlog_format_row.inc
-
---connection node_1
-SET GLOBAL wsrep_on=OFF;
-RESET MASTER;
-SET GLOBAL wsrep_on=ON;
-
---connection node_2
-SET GLOBAL wsrep_on=OFF;
-RESET MASTER;
-SET GLOBAL wsrep_on=ON;
-
---connection node_1
-
-#
-# Straightforward temporary table
-#
-
-CREATE TEMPORARY TABLE t1 (f1 INTEGER) ENGINE=InnoDB;
-INSERT INTO t1 VALUES (1);
-DROP TABLE t1;
---let $local_uuid = `SELECT LEFT(@@global.gtid_executed, 36)`
-
-#
-# A mix of normal and temporary tables
-#
-
-# Temp table first, normal table second
-
-CREATE TEMPORARY TABLE t1 (f1 INTEGER) ENGINE=InnoDB;
-INSERT INTO t1 VALUES (1);
-
-CREATE TABLE t2 (f1 INTEGER) ENGINE=InnoDB;
-INSERT INTO t2 VALUES (2);
-
-DROP TABLE t1, t2;
-
-# Normal table first, temporary table second
-
-CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB;
-INSERT INTO t1 VALUES (1);
-
-CREATE TEMPORARY TABLE t2 (f1 INTEGER) ENGINE=InnoDB;
-INSERT INTO t2 VALUES (2);
-
-DROP TABLE t1, t2;
-
-# Temporary table first, normal table second, temp table third
-
-CREATE TEMPORARY TABLE t1 (f1 INTEGER) ENGINE=InnoDB;
-INSERT INTO t1 VALUES (1);
-
-CREATE TABLE t2 (f1 INTEGER) ENGINE=InnoDB;
-INSERT INTO t2 VALUES (2);
-
-CREATE TEMPORARY TABLE t3 (f1 INTEGER) ENGINE=InnoDB;
-INSERT INTO t3 VALUES (3);
-
-DROP TABLE t1, t2, t3;
-
-# Normal table first, temporary table second, normal table third
-
-CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB;
-INSERT INTO t1 VALUES (1);
-
-CREATE TEMPORARY TABLE t2 (f1 INTEGER) ENGINE=InnoDB;
-INSERT INTO t2 VALUES (2);
-
-CREATE TABLE t3 (f1 INTEGER) ENGINE=InnoDB;
-INSERT INTO t3 VALUES (3);
-
-DROP TABLE t1, t2, t3;
-
-#
-# A temporary table masking a normal one
-#
-
-CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB;
-INSERT INTO t1 VALUES (1);
-
-CREATE TEMPORARY TABLE t1 (f1 INTEGER) ENGINE=InnoDB;
-INSERT INTO t1 VALUES (2);
-
-DROP TABLE t1;
-DROP TABLE t1;
-
---connection node_2
---let $cluster_uuid = `SELECT LEFT(@@global.gtid_executed, 36)`
-
---connection node_1
---replace_regex /table_id: [0-9]+/table_id: #/ /xid=[0-9]+/xid=#/
---replace_result $local_uuid <local_uuid> $cluster_uuid <cluster_uuid>
-SHOW BINLOG EVENTS IN 'mysqld-bin.000001' FROM 120;
-
---connection node_2
---replace_regex /table_id: [0-9]+/table_id: #/ /xid=[0-9]+/xid=#/
---replace_result $local_uuid <local_uuid> $cluster_uuid <cluster_uuid>
-SHOW BINLOG EVENTS IN 'mysqld-bin.000001' FROM 120;
diff --git a/mysql-test/suite/galera/t/MW-86-master.opt b/mysql-test/suite/galera/t/MW-86-wait1-master.opt
index 8a755e98b00..8a755e98b00 100644
--- a/mysql-test/suite/galera/t/MW-86-master.opt
+++ b/mysql-test/suite/galera/t/MW-86-wait1-master.opt
diff --git a/mysql-test/suite/galera/t/MW-86-wait1.test b/mysql-test/suite/galera/t/MW-86-wait1.test
new file mode 100644
index 00000000000..6c0982ad8b3
--- /dev/null
+++ b/mysql-test/suite/galera/t/MW-86-wait1.test
@@ -0,0 +1,106 @@
+#
+# SHOW commands no longer obey wsrep_sync_wait = 1 (WSREP_SYNC_WAIT_BEFORE_READ)
+# (they do not wait for the background INSERT in the applier in node_2 to
+# complete)
+#
+--source include/galera_cluster.inc
+--source include/have_binlog_format_row.inc
+--source include/have_debug_sync.inc
+
+--connection node_2
+# Make sure no signals have been leftover from previous tests to surprise us.
+SELECT @@debug_sync;
+
+SET SESSION wsrep_sync_wait = 1;
+SET GLOBAL debug = "+d,sync.wsrep_apply_cb";
+
+--connection node_1
+CREATE TABLE t_wait1 (f1 INTEGER) ENGINE=InnoDB;
+# This will complete in node_1 but will start a background apply in node_2
+# which will stop because of sync.wsrep_apply_cb we set above.
+INSERT INTO t_wait1 VALUES (1);
+
+--connection node_2
+
+SET SESSION debug_sync = "now WAIT_FOR sync.wsrep_apply_cb_reached";
+
+--disable_result_log
+
+SHOW BINARY LOGS;
+
+SHOW BINLOG EVENTS;
+
+--error ER_NO_SUCH_TABLE
+SHOW COLUMNS FROM t1;
+
+--error ER_EVENT_DOES_NOT_EXIST
+SHOW CREATE EVENT e1;
+
+--error ER_SP_DOES_NOT_EXIST
+SHOW CREATE FUNCTION f1;
+
+--error ER_SP_DOES_NOT_EXIST
+SHOW CREATE PROCEDURE p1;
+
+--error ER_NO_SUCH_TABLE
+SHOW CREATE TABLE t1;
+
+--error ER_TRG_DOES_NOT_EXIST
+SHOW CREATE TRIGGER tr1;
+
+--error ER_NO_SUCH_TABLE
+SHOW CREATE VIEW v1;
+
+SHOW DATABASES;
+
+SHOW ENGINE InnoDB STATUS;
+
+--error ER_SP_DOES_NOT_EXIST
+SHOW FUNCTION CODE f1;
+
+SHOW FUNCTION STATUS;
+
+SHOW GRANTS FOR 'root'@'localhost';
+
+--error ER_NO_SUCH_TABLE
+SHOW INDEX FROM t1;
+
+SHOW OPEN TABLES;
+
+--error ER_SP_DOES_NOT_EXIST
+SHOW PROCEDURE CODE p1;
+
+SHOW PROCEDURE STATUS;
+
+SHOW PRIVILEGES;
+
+SHOW STATUS LIKE 'wsrep_cluster_size';
+
+SHOW TABLE STATUS;
+
+SHOW TABLES;
+
+SHOW TRIGGERS;
+
+SHOW GLOBAL VARIABLES LIKE 'foo_bar';
+
+--error 0
+SHOW WARNINGS;
+
+--enable_result_log
+
+# Unblock the background INSERT and remove the sync point.
+SET GLOBAL debug = "-d,sync.wsrep_apply_cb";
+SET SESSION debug_sync = "now SIGNAL signal.wsrep_apply_cb";
+
+SET SESSION wsrep_sync_wait = default;
+
+# This will wait for the background INSERT to complete before we quit
+# from the test.
+DROP TABLE t_wait1;
+
+SET GLOBAL debug = NULL;
+SET debug_sync='RESET';
+
+# Make sure no pending signals are leftover to surprise subsequent tests.
+SELECT @@debug_sync;
diff --git a/mysql-test/suite/galera/t/MW-86-wait8-master.opt b/mysql-test/suite/galera/t/MW-86-wait8-master.opt
new file mode 100644
index 00000000000..8a755e98b00
--- /dev/null
+++ b/mysql-test/suite/galera/t/MW-86-wait8-master.opt
@@ -0,0 +1 @@
+--log-bin --log-slave-updates
diff --git a/mysql-test/suite/galera/t/MW-86.test b/mysql-test/suite/galera/t/MW-86-wait8.test
index c6550ecdaaa..65e612c5c8e 100644
--- a/mysql-test/suite/galera/t/MW-86.test
+++ b/mysql-test/suite/galera/t/MW-86-wait8.test
@@ -1,104 +1,32 @@
---source include/galera_cluster.inc
---source include/have_binlog_format_row.inc
-
#
-# Test 1: SHOW commands no longer obey wsrep_sync_wait = 1
+# SHOW commands now obey wsrep_sync_wait = 8 (WSREP_SYNC_WAIT_BEFORE_SHOW)
#
+--source include/galera_cluster.inc
+--source include/have_binlog_format_row.inc
+--source include/have_debug_sync.inc
--connection node_2
-SET SESSION wsrep_sync_wait = 1;
-SET GLOBAL DEBUG = "d,sync.wsrep_apply_cb";
---disable_result_log
-
---connection node_1
-CREATE DATABASE db1;
-
---connection node_2
-SHOW BINARY LOGS;
-
-SHOW BINLOG EVENTS;
-
---error ER_NO_SUCH_TABLE
-SHOW COLUMNS FROM t1;
-
---error ER_BAD_DB_ERROR
-SHOW CREATE DATABASE db1;
-
---error ER_EVENT_DOES_NOT_EXIST
-SHOW CREATE EVENT e1;
-
---error ER_SP_DOES_NOT_EXIST
-SHOW CREATE FUNCTION f1;
-
---error ER_SP_DOES_NOT_EXIST
-SHOW CREATE PROCEDURE p1;
-
---error ER_NO_SUCH_TABLE
-SHOW CREATE TABLE t1;
-
---error ER_TRG_DOES_NOT_EXIST
-SHOW CREATE TRIGGER tr1;
-
---error ER_NO_SUCH_TABLE
-SHOW CREATE VIEW v1;
-
-SHOW DATABASES;
-
-SHOW ENGINE InnoDB STATUS;
-
---error ER_SP_DOES_NOT_EXIST
-SHOW FUNCTION CODE f1;
-
-SHOW FUNCTION STATUS;
-
-SHOW GRANTS FOR 'root'@'localhost';
-
---error ER_NO_SUCH_TABLE
-SHOW INDEX FROM t1;
-
-SHOW OPEN TABLES;
-
---error ER_SP_DOES_NOT_EXIST
-SHOW PROCEDURE CODE p1;
-
-SHOW PROCEDURE STATUS;
-
-SHOW PRIVILEGES;
-
-SHOW STATUS LIKE 'wsrep_cluster_size';
-
-SHOW TABLE STATUS;
-
-SHOW TABLES;
-
-SHOW TRIGGERS;
-
-SHOW GLOBAL VARIABLES LIKE 'foo_bar';
-
---error 0
-SHOW WARNINGS;
-
-SET GLOBAL DEBUG = "";
-SET DEBUG_SYNC = "now SIGNAL signal.wsrep_apply_cb";
+# Make sure no signals have been leftover from previous tests to surprise us.
+SELECT @@debug_sync;
SET SESSION wsrep_sync_wait = 8;
-DROP DATABASE db1;
-
+SET GLOBAL debug = "+d,sync.wsrep_apply_cb";
-#
-# Test 2: SHOW commands now obey wsrep_sync_wait = 8
-#
+--connection node_1
+CREATE TABLE t_wait8 (f1 INTEGER) ENGINE=InnoDB;
+# This will complete in node_1 but will start a background apply in node_2
+# which will stop because of sync.wsrep_apply_cb we set above.
+INSERT INTO t_wait8 VALUES (1);
--connection node_2
+
--let $wsrep_provider_options_orig = `SELECT @@wsrep_provider_options`
SET GLOBAL wsrep_provider_options = "repl.causal_read_timeout=PT0.1S";
-SET SESSION wsrep_sync_wait = 8;
-SET GLOBAL DEBUG = "d,sync.wsrep_apply_cb";
---connection node_1
-CREATE TABLE q (f1 INTEGER) ENGINE=InnoDB;
+SET SESSION debug_sync = "now WAIT_FOR sync.wsrep_apply_cb_reached";
+
+--disable_result_log
---connection node_2
--error ER_LOCK_WAIT_TIMEOUT
SHOW BINARY LOGS;
@@ -177,11 +105,24 @@ SHOW GLOBAL VARIABLES LIKE 'foo_bar';
--error 0
SHOW WARNINGS;
-SET GLOBAL DEBUG = "";
-SET DEBUG_SYNC = "now SIGNAL signal.wsrep_apply_cb";
+--enable_result_log
--disable_query_log
--eval SET GLOBAL wsrep_provider_options = "$wsrep_provider_options_orig"
+--enable_query_log
+
+# Unblock the background INSERT and remove the sync point.
+SET GLOBAL debug = "-d,sync.wsrep_apply_cb";
+SET DEBUG_SYNC = "now SIGNAL signal.wsrep_apply_cb";
+
+SET SESSION wsrep_sync_wait = default;
+
+# This will wait for the background INSERT to complete before we quit
+# from the test.
+DROP TABLE t_wait8;
+
+SET GLOBAL debug = NULL;
+SET debug_sync='RESET';
-SET SESSION wsrep_sync_wait = 15;
-DROP TABLE q;
+# Make sure no pending signals are leftover to surprise subsequent tests.
+SELECT @@debug_sync;
diff --git a/sql/sql_class.cc b/sql/sql_class.cc
index 5964f4475a4..83cdaadb3b9 100644
--- a/sql/sql_class.cc
+++ b/sql/sql_class.cc
@@ -1635,12 +1635,6 @@ void THD::init(void)
wsrep_affected_rows = 0;
wsrep_replicate_GTID = false;
wsrep_skip_wsrep_GTID = false;
- /*
- @@wsrep_causal_reads is now being handled via wsrep_sync_wait, update it
- appropriately.
- */
- if (variables.wsrep_causal_reads)
- variables.wsrep_sync_wait|= WSREP_SYNC_WAIT_BEFORE_READ;
#endif /* WITH_WSREP */
if (variables.sql_log_bin)
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index c487835c84e..e561aa521e2 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -2756,6 +2756,7 @@ mysql_execute_command(THD *thd)
#endif
case SQLCOM_SHOW_STATUS:
{
+ WSREP_SYNC_WAIT(thd, WSREP_SYNC_WAIT_BEFORE_SHOW);
execute_show_status(thd, all_tables);
break;
}
@@ -5808,11 +5809,10 @@ static bool execute_show_status(THD *thd, TABLE_LIST *all_tables)
bool res;
system_status_var old_status_var= thd->status_var;
thd->initial_status_var= &old_status_var;
- WSREP_SYNC_WAIT(thd, WSREP_SYNC_WAIT_BEFORE_SHOW);
if (!(res= check_table_access(thd, SELECT_ACL, all_tables, FALSE,
UINT_MAX, FALSE)))
res= execute_sqlcom_select(thd, all_tables);
-error:
+
/* Don't log SHOW STATUS commands to slow query log */
thd->server_status&= ~(SERVER_QUERY_NO_INDEX_USED |
SERVER_QUERY_NO_GOOD_INDEX_USED);
diff --git a/sql/wsrep_applier.cc b/sql/wsrep_applier.cc
index 49087d09224..db92878dbe5 100644
--- a/sql/wsrep_applier.cc
+++ b/sql/wsrep_applier.cc
@@ -224,7 +224,8 @@ wsrep_cb_status_t wsrep_apply_cb(void* const ctx,
{
const char act[]=
"now "
- "wait_for signal.wsrep_apply_cb";
+ "SIGNAL sync.wsrep_apply_cb_reached "
+ "WAIT_FOR signal.wsrep_apply_cb";
DBUG_ASSERT(!debug_sync_set_action(thd,
STRING_WITH_LEN(act)));
};);
diff --git a/sql/wsrep_mysqld.cc b/sql/wsrep_mysqld.cc
index 6e847a33dfb..49988287933 100644
--- a/sql/wsrep_mysqld.cc
+++ b/sql/wsrep_mysqld.cc
@@ -809,8 +809,6 @@ bool wsrep_must_sync_wait (THD* thd, uint mask)
{
return (thd->variables.wsrep_sync_wait & mask) &&
thd->variables.wsrep_on &&
- !(thd->variables.wsrep_dirty_reads &&
- !is_update_query(thd->lex->sql_command)) &&
!thd->in_active_multi_stmt_transaction() &&
thd->wsrep_conflict_state != REPLAYING &&
thd->wsrep_sync_wait_gtid.seqno == WSREP_SEQNO_UNDEFINED;
diff --git a/sql/wsrep_var.cc b/sql/wsrep_var.cc
index 9a5c7b86068..20091a3893e 100644
--- a/sql/wsrep_var.cc
+++ b/sql/wsrep_var.cc
@@ -64,19 +64,21 @@ bool wsrep_on_update (sys_var *self, THD* thd, enum_var_type var_type)
bool wsrep_causal_reads_update (sys_var *self, THD* thd, enum_var_type var_type)
{
- // wsrep_sync_wait should also be updated.
- if (var_type == OPT_GLOBAL) {
- if (global_system_variables.wsrep_causal_reads) {
- global_system_variables.wsrep_sync_wait |= WSREP_SYNC_WAIT_BEFORE_READ;
- } else {
- global_system_variables.wsrep_sync_wait &= ~WSREP_SYNC_WAIT_BEFORE_READ;
- }
+ // global setting should not affect session setting.
+ // if (var_type == OPT_GLOBAL) {
+ // thd->variables.wsrep_causal_reads = global_system_variables.wsrep_causal_reads;
+ // }
+ if (thd->variables.wsrep_causal_reads) {
+ thd->variables.wsrep_sync_wait |= WSREP_SYNC_WAIT_BEFORE_READ;
} else {
- if (thd->variables.wsrep_causal_reads) {
- thd->variables.wsrep_sync_wait |= WSREP_SYNC_WAIT_BEFORE_READ;
- } else {
- thd->variables.wsrep_sync_wait &= ~WSREP_SYNC_WAIT_BEFORE_READ;
- }
+ thd->variables.wsrep_sync_wait &= ~WSREP_SYNC_WAIT_BEFORE_READ;
+ }
+
+ // update global settings too.
+ if (global_system_variables.wsrep_causal_reads) {
+ global_system_variables.wsrep_sync_wait |= WSREP_SYNC_WAIT_BEFORE_READ;
+ } else {
+ global_system_variables.wsrep_sync_wait &= ~WSREP_SYNC_WAIT_BEFORE_READ;
}
return false;
@@ -84,14 +86,17 @@ bool wsrep_causal_reads_update (sys_var *self, THD* thd, enum_var_type var_type)
bool wsrep_sync_wait_update (sys_var* self, THD* thd, enum_var_type var_type)
{
- // wsrep_causal_reads should also be updated.
- if (var_type == OPT_GLOBAL) {
- global_system_variables.wsrep_causal_reads=
- global_system_variables.wsrep_sync_wait & WSREP_SYNC_WAIT_BEFORE_READ;
- } else {
- thd->variables.wsrep_causal_reads=
- thd->variables.wsrep_sync_wait & WSREP_SYNC_WAIT_BEFORE_READ;
- }
+ // global setting should not affect session setting.
+ // if (var_type == OPT_GLOBAL) {
+ // thd->variables.wsrep_sync_wait = global_system_variables.wsrep_sync_wait;
+ // }
+ thd->variables.wsrep_causal_reads = thd->variables.wsrep_sync_wait &
+ WSREP_SYNC_WAIT_BEFORE_READ;
+
+ // update global settings too
+ global_system_variables.wsrep_causal_reads = global_system_variables.wsrep_sync_wait &
+ WSREP_SYNC_WAIT_BEFORE_READ;
+
return false;
}