diff options
Diffstat (limited to 'mysql-test/suite/galera')
475 files changed, 7892 insertions, 998 deletions
diff --git a/mysql-test/suite/galera/disabled.def b/mysql-test/suite/galera/disabled.def index dd1721839e0..e986a0c8951 100644 --- a/mysql-test/suite/galera/disabled.def +++ b/mysql-test/suite/galera/disabled.def @@ -10,22 +10,41 @@ # ############################################################################## +GCF-1081 : MDEV-18283 Galera test failure on galera.GCF-1081 +GCF-939 : MDEV-21520 galera.GCF-939 +MDEV-16509 : MDEV-21523 galera.MDEV-16509 +MDEV-20225 : MDEV-20886 galera.MDEV-20225 MW-286 : MDEV-18464 Killing thread can cause mutex deadlock if done concurrently with Galera/replication victim kill MW-328A : MDEV-22666 galera.MW-328A MTR failed: "Semaphore wait has lasted > 600 seconds" and do not release port 16002 MW-328B : MDEV-22666 galera.MW-328A MTR failed: "Semaphore wait has lasted > 600 seconds" and do not release port 16002 MW-329 : MDEV-19962 Galera test failure on MW-329 galera.galera_defaults : MDEV-21494 Galera test sporadic failure on galera.galera_defaults galera_as_slave_replication_bundle : MDEV-15785 OPTION_GTID_BEGIN is set in Gtid_log_event::do_apply_event() +galera_bf_abort_group_commit : MDEV-18282 Galera test failure on galera.galera_bf_abort_group_commit galera_binlog_stmt_autoinc : MDEV-19959 Galera test failure on galera_binlog_stmt_autoinc +galera_encrypt_tmp_files : Get error failed to enable encryption of temporary files +galera_ftwrl : MDEV-21525 galera.galera_ftwrl galera_gcache_recover_manytrx : MDEV-18834 Galera test failure +galera_kill_largechanges : MDEV-18179 Galera test failure on galera.galera_kill_largechanges +galera_kill_nochanges : MDEV-18280 Galera test failure on galera_split_brain and galera_kill_nochanges +galera_many_tables_nopk : MDEV-18182 Galera test failure on galera.galera_many_tables_nopk +galera_mdl_race : MDEV-21524 galera.galera_mdl_race galera_parallel_simple : MDEV-20318 galera.galera_parallel_simple fails +galera_pc_ignore_sb : MDEV-20888 galera.galera_pc_ignore_sb galera_shutdown_nonprim : MDEV-21493 galera.galera_shutdown_nonprim +galera_split_brain : MDEV-18280 Galera test failure on galera_split_brain and galera_kill_nochanges galera_ssl_upgrade : MDEV-19950 Galera test failure on galera_ssl_upgrade galera_sst_mariabackup_encrypt_with_key : MDEV-21484 galera_sst_mariabackup_encrypt_with_key +galera_toi_ddl_nonconflicting : MDEV-21518 galera.galera_toi_ddl_nonconflicting +galera_toi_truncate : MDEV-22996 Hang on galera_toi_truncate test case galera_var_node_address : MDEV-20485 Galera test failure +galera_var_notify_cmd : MDEV-21905 Galera test galera_var_notify_cmd causes hang +galera_var_reject_queries : assertion in inline_mysql_socket_send +galera_var_retry_autocommit: MDEV-18181 Galera test failure on galera.galera_var_retry_autocommit galera_wan : MDEV-17259 Test failure on galera.galera_wan lp1376747-4 : MDEV-21911 Galera test failure on lp1376747-4 partition : MDEV-19958 Galera test failure on galera.partition query_cache: MDEV-15805 Test failure on galera.query_cache sql_log_bin : MDEV-21491 galera.sql_log_bin +versioning_trx_id : MDEV-18590 galera.versioning_trx_id MW-328A : MDEV-22666? diff --git a/mysql-test/suite/galera/galera_2nodes.cnf b/mysql-test/suite/galera/galera_2nodes.cnf index 67e9893179f..ef8a17a77be 100644 --- a/mysql-test/suite/galera/galera_2nodes.cnf +++ b/mysql-test/suite/galera/galera_2nodes.cnf @@ -10,6 +10,9 @@ wsrep-provider=@ENV.WSREP_PROVIDER wsrep_node_address=127.0.0.1 # enforce read-committed characteristics across the cluster wsrep-sync-wait=15 +# lock schedule alg appears to be VATS by default, and it is not +# yet compatible with galera +innodb_lock_schedule_algorithm=FCFS [mysqld.1] loose-innodb @@ -25,9 +28,13 @@ wsrep_sst_receive_address='127.0.0.1:@mysqld.1.#sst_port' # enforce read-committed characteristics across the cluster wsrep_causal_reads=ON wsrep_sync_wait = 15 +# lock schedule alg appears to be VATS by default, and it is not +# yet compatible with galera +innodb_lock_schedule_algorithm=FCFS [mysqld.2] loose-innodb +# debug=d:t:i:o,/tmp/mysqld.2.trace #galera_port=@OPT.port #ist_port=@OPT.port #sst_port=@OPT.port @@ -42,7 +49,14 @@ wsrep_sync_wait = 15 wsrep_node_address=127.0.0.1 wsrep_sst_receive_address=127.0.0.2:@mysqld.2.#sst_port wsrep_node_incoming_address=127.0.0.1:@mysqld.2.port -wsrep_sst_receive_address='127.0.0.1:@mysqld.2.#sst_port' +wsrep_sst_receive_address='127.0.0.2:@mysqld.2.#sst_port' + +# enforce read-committed characteristics across the cluster +wsrep_causal_reads=ON +wsrep_sync_wait = 15 +# lock schedule alg appears to be VATS by default, and it is not +# yet compatible with galera +innodb_lock_schedule_algorithm=FCFS [ENV] NODE_MYPORT_1= @mysqld.1.port @@ -50,4 +64,3 @@ NODE_MYSOCK_1= @mysqld.1.socket NODE_MYPORT_2= @mysqld.2.port NODE_MYSOCK_2= @mysqld.2.socket - diff --git a/mysql-test/suite/galera/galera_2nodes_as_master.cnf b/mysql-test/suite/galera/galera_2nodes_as_master.cnf index 33bfc475721..4403416b033 100644 --- a/mysql-test/suite/galera/galera_2nodes_as_master.cnf +++ b/mysql-test/suite/galera/galera_2nodes_as_master.cnf @@ -11,6 +11,9 @@ log-bin=mysqld-bin binlog-format=row innodb-autoinc-lock-mode=2 default-storage-engine=innodb +# lock schedule alg appears to be VATS by default, and it is not +# yet compatible with galera +innodb_lock_schedule_algorithm=FCFS [mysqld.1] #galera_port=@OPT.port @@ -30,6 +33,9 @@ wsrep_node_incoming_address=127.0.0.1:@mysqld.1.port # enforce read-committed characteristics across the cluster wsrep-causal-reads=ON wsrep-sync-wait=15 +# lock schedule alg appears to be VATS by default, and it is not +# yet compatible with galera +innodb_lock_schedule_algorithm=FCFS [mysqld.2] #galera_port=@OPT.port @@ -49,9 +55,15 @@ wsrep_node_incoming_address=127.0.0.1:@mysqld.2.port # enforce read-committed characteristics across the cluster wsrep-causal-reads=ON wsrep-sync-wait=15 +# lock schedule alg appears to be VATS by default, and it is not +# yet compatible with galera +innodb_lock_schedule_algorithm=FCFS [mysqld.3] server-id=3 +# lock schedule alg appears to be VATS by default, and it is not +# yet compatible with galera +innodb_lock_schedule_algorithm=FCFS [ENV] NODE_MYPORT_1= @mysqld.1.port @@ -62,9 +74,3 @@ NODE_MYSOCK_2= @mysqld.2.socket NODE_MYPORT_3= @mysqld.3.port NODE_MYSOCK_3= @mysqld.3.socket - -NODE_GALERAPORT_1= @mysqld.1.#galera_port -NODE_GALERAPORT_2= @mysqld.2.#galera_port - -NODE_SSTPORT_1= @mysqld.1.#sst_port -NODE_SSTPORT_2= @mysqld.2.#sst_port diff --git a/mysql-test/suite/galera/galera_2nodes_as_slave.cnf b/mysql-test/suite/galera/galera_2nodes_as_slave.cnf index 4d9e39d2aae..7daa501ca4a 100644 --- a/mysql-test/suite/galera/galera_2nodes_as_slave.cnf +++ b/mysql-test/suite/galera/galera_2nodes_as_slave.cnf @@ -9,17 +9,13 @@ binlog-format=row [mysqld.1] -log-bin -server-id=1 - -[mysqld.2] #galera_port=@OPT.port #ist_port=@OPT.port #sst_port=@OPT.port - wsrep-on=1 -log-bin +log-bin=master-bin +log-bin-index=master-bin log-slave-updates innodb-autoinc-lock-mode=2 @@ -27,38 +23,47 @@ default-storage-engine=innodb wsrep-provider=@ENV.WSREP_PROVIDER wsrep_node_address=127.0.0.1 wsrep-cluster-address=gcomm:// -wsrep_provider_options='base_port=@mysqld.2.#galera_port;gcache.size=10M' -wsrep_node_incoming_address=127.0.0.1:@mysqld.2.port -wsrep_sst_receive_address='127.0.0.1:@mysqld.2.#sst_port' +wsrep_provider_options='base_port=@mysqld.1.#galera_port;gcache.size=10M' +wsrep_node_incoming_address=127.0.0.1:@mysqld.1.port +wsrep_sst_receive_address='127.0.0.1:@mysqld.1.#sst_port' # enforce read-committed characteristics across the cluster wsrep-causal-reads=ON wsrep-sync-wait=15 -server-id=2 +server-id=1 +# lock schedule alg appears to be VATS by default, and it is not +# yet compatible with galera +innodb_lock_schedule_algorithm=FCFS -[mysqld.3] +[mysqld.2] #galera_port=@OPT.port #ist_port=@OPT.port #sst_port=@OPT.port - wsrep-on=1 -log-bin +log-bin=master-bin +log-bin-index=master-bin log-slave-updates innodb-autoinc-lock-mode=2 default-storage-engine=innodb wsrep-provider=@ENV.WSREP_PROVIDER wsrep_node_address=127.0.0.1 -wsrep_cluster_address='gcomm://127.0.0.1:@mysqld.2.#galera_port' -wsrep_provider_options='base_port=@mysqld.3.#galera_port;gcache.size=10M' -wsrep_node_incoming_address=127.0.0.1:@mysqld.3.port -wsrep_sst_receive_address='127.0.0.1:@mysqld.3.#sst_port' +wsrep_cluster_address='gcomm://127.0.0.1:@mysqld.1.#galera_port' +wsrep_provider_options='base_port=@mysqld.2.#galera_port;gcache.size=10M' +wsrep_node_incoming_address=127.0.0.1:@mysqld.2.port +wsrep_sst_receive_address='127.0.0.1:@mysqld.2.#sst_port' # enforce read-committed characteristics across the cluster wsrep-causal-reads=ON wsrep-sync-wait=15 +server-id=2 + +[mysqld.3] +log-bin=master-bin +log-bin-index=master-bin server-id=3 +wsrep-on=OFF [ENV] NODE_MYPORT_1= @mysqld.1.port @@ -69,9 +74,3 @@ NODE_MYSOCK_2= @mysqld.2.socket NODE_MYPORT_3= @mysqld.3.port NODE_MYSOCK_3= @mysqld.3.socket - -NODE_GALERAPORT_2= @mysqld.2.#galera_port -NODE_GALERAPORT_3= @mysqld.3.#galera_port - -NODE_SSTPORT_2= @mysqld.2.#sst_port -NODE_SSTPORT_3= @mysqld.3.#sst_port diff --git a/mysql-test/suite/galera/galera_3nodes_as_slave.cnf b/mysql-test/suite/galera/galera_3nodes_as_slave.cnf index 28fa5095a56..4181ee13ebc 100644 --- a/mysql-test/suite/galera/galera_3nodes_as_slave.cnf +++ b/mysql-test/suite/galera/galera_3nodes_as_slave.cnf @@ -8,14 +8,15 @@ [mysqld] log-bin binlog-format=row +# lock schedule alg appears to be VATS by default, and it is not +# yet compatible with galera +innodb_lock_schedule_algorithm=FCFS [mysqld.1] -server-id=1 - -[mysqld.2] #galera_port=@OPT.port #ist_port=@OPT.port #sst_port=@OPT.port +wsrep-on=1 log-slave-updates wsrep-on=1 @@ -25,19 +26,23 @@ default-storage-engine=innodb wsrep-provider=@ENV.WSREP_PROVIDER wsrep_node_address=127.0.0.1 wsrep-cluster-address=gcomm:// -wsrep_provider_options='base_port=@mysqld.2.#galera_port;evs.install_timeout = PT15S;evs.max_install_timeouts=1;gcache.size=10M' -wsrep_node_incoming_address=127.0.0.1:@mysqld.2.port -wsrep_sst_receive_address='127.0.0.1:@mysqld.2.#sst_port' +wsrep_provider_options='base_port=@mysqld.1.#galera_port;evs.install_timeout = PT15S;evs.max_install_timeouts=1;gcache.size=10M' +wsrep_node_incoming_address=127.0.0.1:@mysqld.1.port +wsrep_sst_receive_address='127.0.0.1:@mysqld.1.#sst_port' # enforce read-committed characteristics across the cluster wsrep-causal-reads=ON wsrep-sync-wait=15 -server-id=2 +server-id=1 +# lock schedule alg appears to be VATS by default, and it is not +# yet compatible with galera +innodb_lock_schedule_algorithm=FCFS -[mysqld.3] +[mysqld.2] #galera_port=@OPT.port #ist_port=@OPT.port #sst_port=@OPT.port +wsrep-on=1 log-slave-updates wsrep-on=1 @@ -46,20 +51,24 @@ innodb-autoinc-lock-mode=2 default-storage-engine=innodb wsrep-provider=@ENV.WSREP_PROVIDER wsrep_node_address=127.0.0.1 -wsrep_cluster_address='gcomm://127.0.0.1:@mysqld.2.#galera_port' -wsrep_provider_options='base_port=@mysqld.3.#galera_port;evs.install_timeout=PT15S;evs.max_install_timeouts=1;gcache.size=10M' -wsrep_node_incoming_address=127.0.0.1:@mysqld.3.port -wsrep_sst_receive_address='127.0.0.1:@mysqld.3.#sst_port' +wsrep_cluster_address='gcomm://127.0.0.1:@mysqld.1.#galera_port' +wsrep_provider_options='base_port=@mysqld.2.#galera_port;evs.install_timeout=PT15S;evs.max_install_timeouts=1;gcache.size=10M' +wsrep_node_incoming_address=127.0.0.1:@mysqld.2.port +wsrep_sst_receive_address='127.0.0.1:@mysqld.2.#sst_port' # enforce read-committed characteristics across the cluster wsrep-causal-reads=ON wsrep-sync-wait=15 -server-id=3 +server-id=2 +# lock schedule alg appears to be VATS by default, and it is not +# yet compatible with galera +innodb_lock_schedule_algorithm=FCFS -[mysqld.4] +[mysqld.3] #galera_port=@OPT.port #ist_port=@OPT.port #sst_port=@OPT.port +wsrep-on=1 log-slave-updates wsrep-on=1 @@ -68,15 +77,24 @@ innodb-autoinc-lock-mode=2 default-storage-engine=innodb wsrep-provider=@ENV.WSREP_PROVIDER wsrep_node_address=127.0.0.1 -wsrep_cluster_address='gcomm://127.0.0.1:@mysqld.2.#galera_port' -wsrep_provider_options='base_port=@mysqld.4.#galera_port;evs.install_timeout=PT15S;evs.max_install_timeouts=1;gcache.size=10M' -wsrep_node_incoming_address=127.0.0.1:@mysqld.4.port -wsrep_sst_receive_address='127.0.0.1:@mysqld.4.#sst_port' +wsrep_cluster_address='gcomm://127.0.0.1:@mysqld.1.#galera_port' +wsrep_provider_options='base_port=@mysqld.3.#galera_port;evs.install_timeout=PT15S;evs.max_install_timeouts=1;gcache.size=10M' +wsrep_node_incoming_address=127.0.0.1:@mysqld.3.port +wsrep_sst_receive_address='127.0.0.1:@mysqld.3.#sst_port' # enforce read-committed characteristics across the cluster wsrep-causal-reads=ON wsrep-sync-wait=15 +server-id=3 +# lock schedule alg appears to be VATS by default, and it is not +# yet compatible with galera +innodb_lock_schedule_algorithm=FCFS + +[mysqld.4] server-id=4 +# lock schedule alg appears to be VATS by default, and it is not +# yet compatible with galera +innodb_lock_schedule_algorithm=FCFS [ENV] NODE_MYPORT_1= @mysqld.1.port @@ -90,11 +108,3 @@ NODE_MYSOCK_3= @mysqld.3.socket NODE_MYPORT_4= @mysqld.4.port NODE_MYSOCK_4= @mysqld.4.socket - -NODE_GALERAPORT_2= @mysqld.2.#galera_port -NODE_GALERAPORT_3= @mysqld.3.#galera_port -NODE_GALERAPORT_4= @mysqld.4.#galera_port - -NODE_SSTPORT_2= @mysqld.2.#sst_port -NODE_SSTPORT_3= @mysqld.3.#sst_port -NODE_SSTPORT_4= @mysqld.4.#sst_port diff --git a/mysql-test/suite/galera/galera_4nodes.cnf b/mysql-test/suite/galera/galera_4nodes.cnf index 426a6ae6d92..7f59f75b2dc 100644 --- a/mysql-test/suite/galera/galera_4nodes.cnf +++ b/mysql-test/suite/galera/galera_4nodes.cnf @@ -5,12 +5,14 @@ binlog-format=row innodb-autoinc-lock-mode=2 default-storage-engine=innodb -wsrep-on=1 wsrep-provider=@ENV.WSREP_PROVIDER wsrep_node_address=127.0.0.1 # enforce read-committed characteristics across the cluster wsrep-causal-reads=ON wsrep-sync-wait=15 +# lock schedule alg appears to be VATS by default, and it is not +# yet compatible with galera +innodb_lock_schedule_algorithm=FCFS [mysqld.1] #galera_port=@OPT.port @@ -21,6 +23,9 @@ wsrep-cluster-address=gcomm:// wsrep_provider_options='base_port=@mysqld.1.#galera_port;gcache.size=10M' wsrep_node_incoming_address=127.0.0.1:@mysqld.1.port wsrep_sst_receive_address='127.0.0.1:@mysqld.1.#sst_port' +# lock schedule alg appears to be VATS by default, and it is not +# yet compatible with galera +innodb_lock_schedule_algorithm=FCFS [mysqld.2] #galera_port=@OPT.port @@ -31,6 +36,9 @@ wsrep_cluster_address='gcomm://127.0.0.1:@mysqld.1.#galera_port' wsrep_provider_options='base_port=@mysqld.2.#galera_port;gcache.size=10M' wsrep_node_incoming_address=127.0.0.1:@mysqld.2.port wsrep_sst_receive_address='127.0.0.1:@mysqld.2.#sst_port' +# lock schedule alg appears to be VATS by default, and it is not +# yet compatible with galera +innodb_lock_schedule_algorithm=FCFS [mysqld.3] @@ -42,6 +50,9 @@ wsrep_cluster_address='gcomm://127.0.0.1:@mysqld.1.#galera_port' wsrep_provider_options='base_port=@mysqld.3.#galera_port;gcache.size=10M' wsrep_node_incoming_address=127.0.0.1:@mysqld.3.port wsrep_sst_receive_address='127.0.0.1:@mysqld.3.#sst_port' +# lock schedule alg appears to be VATS by default, and it is not +# yet compatible with galera +innodb_lock_schedule_algorithm=FCFS [mysqld.4] @@ -53,6 +64,9 @@ wsrep_cluster_address='gcomm://127.0.0.1:@mysqld.1.#galera_port' wsrep_provider_options='base_port=@mysqld.4.#galera_port;gcache.size=10M' wsrep_node_incoming_address=127.0.0.1:@mysqld.4.port wsrep_sst_receive_address='127.0.0.1:@mysqld.4.#sst_port' +# lock schedule alg appears to be VATS by default, and it is not +# yet compatible with galera +innodb_lock_schedule_algorithm=FCFS [ENV] NODE_MYPORT_1= @mysqld.1.port @@ -66,13 +80,3 @@ NODE_MYSOCK_3= @mysqld.3.socket NODE_MYPORT_4= @mysqld.4.port NODE_MYSOCK_4= @mysqld.4.socket - -NODE_GALERAPORT_1= @mysqld.1.#galera_port -NODE_GALERAPORT_2= @mysqld.2.#galera_port -NODE_GALERAPORT_3= @mysqld.3.#galera_port -NODE_GALERAPORT_4= @mysqld.4.#galera_port - -NODE_SSTPORT_1= @mysqld.1.#sst_port -NODE_SSTPORT_2= @mysqld.2.#sst_port -NODE_SSTPORT_3= @mysqld.3.#sst_port -NODE_SSTPORT_4= @mysqld.4.#sst_port diff --git a/mysql-test/suite/galera/include/galera_base_port.inc b/mysql-test/suite/galera/include/galera_base_port.inc new file mode 100644 index 00000000000..caf986ee950 --- /dev/null +++ b/mysql-test/suite/galera/include/galera_base_port.inc @@ -0,0 +1,8 @@ +# +# Extract base_port from galera node. +# + +# Convert "... base_port = N; ..." to "N; ..." +--let $s1 = `SELECT SUBSTR(@@wsrep_provider_options, LOCATE('base_port =', @@wsrep_provider_options) + LENGTH('base_port = '))` +# Convert "N; ..." to "N" +--let $_NODE_GALERAPORT = `SELECT SUBSTR('$s1', 1, LOCATE(';', '$s1') - 1)` diff --git a/mysql-test/suite/galera/include/galera_concurrent_test.inc b/mysql-test/suite/galera/include/galera_concurrent_test.inc new file mode 100644 index 00000000000..3d1bc7674a1 --- /dev/null +++ b/mysql-test/suite/galera/include/galera_concurrent_test.inc @@ -0,0 +1,90 @@ +# +# Perform a quick concurrent test on two nodes using a set of predefined statements. +# +# Such tests are not deterministic, so we are hoping to catch assertions, slave apply errors +# and cases where the two nodes diverge +# +# Parameters: +# - $wsrep_trx_fragment_size +# - $count +# - $query_node_1 +# - $query_node_1a (optional) +# - $query_node_2 +# + +if (!$count) { + --let $count = 50; +} + +if (!$node_1a_connected) { + --connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1 + --let $node_1a_connected = 1 +} + +--echo Running a concurrent test with the following queries: +--echo $query_node_1 +--echo $query_node_1a +--echo $query_node_2 + +--connection node_1 +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings + +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY AUTO_INCREMENT, f2 CHAR(255)) ENGINE=InnoDB; + +SET SESSION wsrep_sync_wait = 0; +--eval SET SESSION wsrep_trx_fragment_size = $wsrep_trx_fragment_size; + +--connection node_1a +SET SESSION wsrep_sync_wait = 0; +--eval SET SESSION wsrep_trx_fragment_size = $wsrep_trx_fragment_size; + +--connection node_2 +SET SESSION wsrep_sync_wait = 0; +--eval SET SESSION wsrep_trx_fragment_size = $wsrep_trx_fragment_size; + +--disable_query_log +--let $i = `SELECT $count` +while ($i) +{ + --connection node_1 + --send_eval $query_node_1 + + --connection node_1a + if ($query_node_1a) { + --send_eval $query_node_1a + } + + --connection node_2 + --send_eval $query_node_2 + + --connection node_1 + --error 0,ER_QUERY_INTERRUPTED,ER_LOCK_DEADLOCK,ER_DUP_ENTRY + --reap + + --connection node_1a + if ($query_node_1a) { + --error 0,ER_QUERY_INTERRUPTED,ER_LOCK_DEADLOCK,ER_DUP_ENTRY + --reap + } + + --connection node_2 + --error 0,ER_QUERY_INTERRUPTED,ER_LOCK_DEADLOCK,ER_DUP_ENTRY + --reap + --dec $i +} + +SET SESSION wsrep_sync_wait = 15; +--enable_query_log + +--let $diff_servers = 1 2 +--source include/diff_servers.inc + +DROP TABLE t1; + +--let $query_node_1 = "" +--let $query_node_1a = "" +--let $query_node_2 = "" + +--echo Concurrent test end diff --git a/mysql-test/suite/galera/include/galera_dump_sr_table.inc b/mysql-test/suite/galera/include/galera_dump_sr_table.inc new file mode 100644 index 00000000000..1e6ff5548d2 --- /dev/null +++ b/mysql-test/suite/galera/include/galera_dump_sr_table.inc @@ -0,0 +1,28 @@ +# +# Dump the contents of the SR table using mysqldump +# + +--let $sr_min = `SELECT MIN(seqno) FROM mysql.wsrep_streaming_log` +--let $sr_max = `SELECT MAX(seqno) FROM mysql.wsrep_streaming_log` + +--let $seqno = $sr_min +while ($seqno <= $sr_max) +{ + --let $sr_fragment_file = $MYSQLTEST_VARDIR/tmp/sr_fragment.log + --exec rm -rf $sr_fragment_file + --disable_query_log + --eval SELECT frag INTO DUMPFILE '$sr_fragment_file' FROM mysql.wsrep_streaming_log WHERE seqno = $seqno + --enable_query_log + + --let $sr_binlog_file = $MYSQLTEST_VARDIR/tmp/sr_binlog.log + --exec rm -rf $sr_binlog_file + + --exec cp std_data/binlog-header.binlog $sr_binlog_file + --exec cat $sr_fragment_file >> $sr_binlog_file + + --replace_regex /SET TIMESTAMP=[0-9]+/SET TIMESTAMP=<TIMESTAMP>/ /#[0-9]+ +[0-9]+:[0-9]+:[0-9]+/<ISO TIMESTAMP>/ /pseudo_thread_id=[0-9]+/pseudo_thread_id=<PSEUDO_THREAD_ID>/ /thread_id=[0-9]+/thread_id=<QUERY_THREAD_ID>/ /table id [0-9]+/table id <TABLE_ID>/ /mapped to number [0-9]+/mapped to number <TABLE_ID>/ /auto_increment_increment=[0-9]+/auto_increment_increment=<AUTO_INCREMENT_INCREMENT>/ /auto_increment_offset=[0-9]+/auto_increment_offset=<AUTO_INCREMENT_OFFSET>/ /exec_time=[0-9]+/exec_time=<EXEC_TIME>/ + --exec $MYSQL_BINLOG $sr_binlog_file --base64-output=decode-rows --start-position=256 --skip-annotate-row-events | grep -v 'SET @' 2>&1 + + --inc $seqno +} + diff --git a/mysql-test/suite/galera/include/galera_have_debug_sync.inc b/mysql-test/suite/galera/include/galera_have_debug_sync.inc deleted file mode 100644 index 21e7b3c88c3..00000000000 --- a/mysql-test/suite/galera/include/galera_have_debug_sync.inc +++ /dev/null @@ -1,9 +0,0 @@ ---disable_query_log - ---let $galera_have_debug_sync = `SELECT 1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_debug_sync_waiters'` - ---if (!$galera_have_debug_sync) { - --skip Test requires Galera debug library with debug_sync functionality -} - ---enable_query_log diff --git a/mysql-test/suite/galera/include/galera_load_provider.inc b/mysql-test/suite/galera/include/galera_load_provider.inc index aeab7e6ea19..0f843597d9c 100644 --- a/mysql-test/suite/galera/include/galera_load_provider.inc +++ b/mysql-test/suite/galera/include/galera_load_provider.inc @@ -2,7 +2,75 @@ --disable_query_log --eval SET GLOBAL wsrep_provider = '$wsrep_provider_orig'; + +# +# count occurences of successful node starts in error log +# +perl; + use strict; + my $test_log=$ENV{'LOG_FILE'} or die "LOG_FILE not set"; + my $test_log_copy=$test_log . '.copy'; + if (-e $test_log_copy) { + unlink $test_log_copy; + } + +EOF +--copy_file $LOG_FILE $LOG_FILE.copy + +# +# now join to the cluster +# --eval SET GLOBAL wsrep_cluster_address = '$wsrep_cluster_address_orig'; + +--enable_query_log + +# +# Cluster address change above, will launch SST/IST +# if mysqldump ST has been configured, mysqld will close all +# client connections, and it will be hard for us to poll for +# cluster status during SST process, therefore wait_until_connected_again.inc +# and wait_until_ready.inc may fail in this phase +# To workaround this, we do first lazy polling here just to see when +# client connections will be possible, and after that check for node readyness +# +--disable_result_log +--disable_query_log + +--error 0,1 +perl; + use strict; + my $logfile = $ENV{'LOG_FILE'} or die ("no error log file set"); + + my $counter = 1000; + #my $found = false + + while ($counter > 0) { + + open(FILE, "$logfile") or die("Unable to open $logfile : $!\n"); + my $new_sync_count = () = grep(/Synchronized with group/g,<FILE>); + close(FILE); + + open(FILEN, "$logfile.copy") or die("Unable to open $logfile.copy : $!\n"); + my $old_sync_count = () = grep(/Synchronized with group/g,<FILEN>); + close(FILEN); + + if ($new_sync_count > $old_sync_count ) { + exit(0); + } + $counter--; + sleep(5); + } + exit(1); +EOF +if ($errno) +{ +--echo "SST failed $errno" +} + +--remove_file $LOG_FILE.copy + --enable_query_log +--enable_result_log +#--eval SET GLOBAL log_error = $log_error_; --source include/galera_wait_ready.inc diff --git a/mysql-test/suite/galera/include/galera_sst_restore.inc b/mysql-test/suite/galera/include/galera_sst_restore.inc index 7c9a08090ad..83d07f086d1 100644 --- a/mysql-test/suite/galera/include/galera_sst_restore.inc +++ b/mysql-test/suite/galera/include/galera_sst_restore.inc @@ -20,7 +20,7 @@ CALL mtr.add_suppression("Can't open and lock time zone table"); CALL mtr.add_suppression("Can't open and lock privilege tables"); CALL mtr.add_suppression("Info table is not ready to be used"); CALL mtr.add_suppression("Native table .* has the wrong structure"); - +CALL mtr.add_suppression("Table \'mysql.gtid_slave_pos\' doesn\'t exist"); --disable_query_log --eval SET GLOBAL wsrep_sst_method = '$wsrep_sst_method_orig'; --eval SET GLOBAL wsrep_sst_receive_address = '$wsrep_sst_receive_address_orig'; diff --git a/mysql-test/suite/galera/include/galera_st_disconnect_slave.inc b/mysql-test/suite/galera/include/galera_st_disconnect_slave.inc index 4674fc7867f..3ac52deb284 100644 --- a/mysql-test/suite/galera/include/galera_st_disconnect_slave.inc +++ b/mysql-test/suite/galera/include/galera_st_disconnect_slave.inc @@ -55,6 +55,14 @@ INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); --connection node_2 --source suite/galera/include/galera_load_provider.inc +# +# client connections were killed by provider load, so have to re-open here +# +--disconnect node_2 +--connect node_2, 127.0.0.1, root, , test, $NODE_MYPORT_2 +--connection node_2 +--enable_reconnect + --let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size' --source include/wait_condition.inc diff --git a/mysql-test/suite/galera/include/galera_unload_provider.inc b/mysql-test/suite/galera/include/galera_unload_provider.inc index edc7eb31e0e..cd841f51fbc 100644 --- a/mysql-test/suite/galera/include/galera_unload_provider.inc +++ b/mysql-test/suite/galera/include/galera_unload_provider.inc @@ -3,5 +3,13 @@ --let $wsrep_cluster_address_orig = `SELECT @@wsrep_cluster_address` --let $wsrep_provider_orig = `SELECT @@wsrep_provider` --let $wsrep_provider_options_orig = `SELECT @@wsrep_provider_options` +--let $wsrep_error_log_orig = `SELECT @@log_error` +if(!$wsrep_log_error_orig) +{ + # MySQL Server on windows is started with --console and thus + # does not know the location of its .err log, use default location + let $wsrep_log_error_orig = $MYSQLTEST_VARDIR/log/mysqld.2.err; +} +--let LOG_FILE= $wsrep_log_error_orig SET GLOBAL wsrep_provider = 'none'; diff --git a/mysql-test/suite/galera/r/GAL-382.result b/mysql-test/suite/galera/r/GAL-382.result index c16c46d2e58..2150326757c 100644 --- a/mysql-test/suite/galera/r/GAL-382.result +++ b/mysql-test/suite/galera/r/GAL-382.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; create table t1 (i int, j int, k int, primary key pk(i)) engine=innodb; Warnings: diff --git a/mysql-test/suite/galera/r/GAL-401.result b/mysql-test/suite/galera/r/GAL-401.result index 3b55b7589b7..3dfc32ffb8c 100644 --- a/mysql-test/suite/galera/r/GAL-401.result +++ b/mysql-test/suite/galera/r/GAL-401.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; SET GLOBAL wsrep_provider_options = 'pc.ignore_sb=true'; connection node_2; SET @@global.wsrep_desync = 1; diff --git a/mysql-test/suite/galera/r/GAL-419.result b/mysql-test/suite/galera/r/GAL-419.result index 3a776e6988e..74508a1e75e 100644 --- a/mysql-test/suite/galera/r/GAL-419.result +++ b/mysql-test/suite/galera/r/GAL-419.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; call mtr.add_suppression("WSREP: It may not be safe to bootstrap the cluster from this node.*"); call mtr.add_suppression("Aborting"); connection node_2; diff --git a/mysql-test/suite/galera/r/GAL-480.result b/mysql-test/suite/galera/r/GAL-480.result index 143f48a69e3..8a4f8edcdd6 100644 --- a/mysql-test/suite/galera/r/GAL-480.result +++ b/mysql-test/suite/galera/r/GAL-480.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; CREATE TABLE t1 (f1 CHAR(10), f0 integer) ENGINE=InnoDB; FLUSH TABLE t1 FOR EXPORT; diff --git a/mysql-test/suite/galera/r/GCF-1081.result b/mysql-test/suite/galera/r/GCF-1081.result new file mode 100644 index 00000000000..ede512ec6b1 --- /dev/null +++ b/mysql-test/suite/galera/r/GCF-1081.result @@ -0,0 +1,47 @@ +connection node_2; +connection node_1; +connection node_1; +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY, f2 INTEGER) ENGINE=InnoDB; +INSERT INTO t1 VALUES (1, 0), (3, 0); +CREATE PROCEDURE proc_update () +BEGIN +UPDATE t1 SET f2 = 1 where f1 > 0; +END| +connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1; +SET GLOBAL wsrep_provider_options = 'dbug=d,commit_monitor_master_enter_sync'; +connection node_1; +CALL proc_update ();; +connection node_1a; +SET SESSION wsrep_sync_wait = 0; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +connection node_1a; +SET GLOBAL DEBUG = 'd,sync.wsrep_before_BF_victim_unlock'; +Warnings: +Warning 1287 '@@debug' is deprecated and will be removed in a future release. Please use '@@debug_dbug' instead +connection node_2; +INSERT INTO t1 VALUES (2, 2);; +connection node_1a; +SET SESSION DEBUG_SYNC = 'now WAIT_FOR sync.wsrep_before_BF_victim_unlock_reached'; +SET GLOBAL DEBUG = ''; +Warnings: +Warning 1287 '@@debug' is deprecated and will be removed in a future release. Please use '@@debug_dbug' instead +connection node_1a; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'signal=commit_monitor_master_enter_sync'; +connection node_2; +SELECT * FROM t1; +f1 f2 +1 1 +2 2 +3 1 +connection node_1; +SELECT * FROM t1; +f1 f2 +1 1 +2 2 +3 1 +wsrep_local_replays +1 +DROP PROCEDURE proc_update; +DROP TABLE t1; diff --git a/mysql-test/suite/galera/r/GCF-939.result b/mysql-test/suite/galera/r/GCF-939.result new file mode 100644 index 00000000000..24d4eab67e5 --- /dev/null +++ b/mysql-test/suite/galera/r/GCF-939.result @@ -0,0 +1,13 @@ +connection node_2; +connection node_1; +connection node_1; +DROP TABLE t1; +ERROR 42S02: Unknown table 'test.t1' +CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB; +INSERT INTO t1 VALUES (1); +GRA_.log +GRA_.log +DROP TABLE t1; +CALL mtr.add_suppression("Ignoring error 'Unknown table 'test.t1'' on query"); +connection node_2; +CALL mtr.add_suppression("Error 'Unknown table 'test.t1'' on query"); diff --git a/mysql-test/suite/galera/r/MDEV-15443.result b/mysql-test/suite/galera/r/MDEV-15443.result index 618e5459878..21332b372e8 100644 --- a/mysql-test/suite/galera/r/MDEV-15443.result +++ b/mysql-test/suite/galera/r/MDEV-15443.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INT PRIMARY KEY) ENGINE=InnoDB; INSERT INTO t1 VALUES (1); connection node_2; diff --git a/mysql-test/suite/galera/r/MDEV-16509.result b/mysql-test/suite/galera/r/MDEV-16509.result new file mode 100644 index 00000000000..b56622da2c0 --- /dev/null +++ b/mysql-test/suite/galera/r/MDEV-16509.result @@ -0,0 +1,76 @@ +connection node_2; +connection node_1; +CREATE TABLE t1 (f1 INT PRIMARY KEY) ENGINE=InnoDB; +SET SESSION wsrep_sync_wait = 0; +connection node_1; +SET SESSION wsrep_sync_wait = 0; +SET DEBUG_SYNC = "wsrep_before_commit_order_leave SIGNAL bcol_reached WAIT_FOR bcol_continue"; +SET DEBUG_SYNC = "wsrep_after_commit_order_leave SIGNAL acol_reached WAIT_FOR acol_continue"; +SET DEBUG_SYNC = "after_group_after_commit SIGNAL after_group_reached WAIT_FOR after_group_continue"; +INSERT INTO t1 VALUES (1); +connection ctrl; +SET DEBUG_SYNC = "now WAIT_FOR bcol_reached"; +wsrep_last_seen_gtid_match +1 +SELECT * FROM t1; +f1 +1 +SET DEBUG_SYNC = "now SIGNAL bcol_continue"; +SET DEBUG_SYNC = "now WAIT_FOR acol_reached"; +wsrep_last_seen_gtid_match +1 +SELECT * FROM t1; +f1 +1 +SET DEBUG_SYNC = "now SIGNAL acol_continue"; +SET DEBUG_SYNC = "now WAIT_FOR after_group_reached"; +wsrep_last_seen_gtid_do_not_match +1 +SET DEBUG_SYNC = "now SIGNAL after_group_continue"; +connection node_1; +SET SESSION wsrep_sync_wait = 0; +connection ctrl; +connection node_1; +SET DEBUG_SYNC = "wsrep_before_commit_order_leave SIGNAL bcol_reached_1 WAIT_FOR bcol_continue_1"; +SET DEBUG_SYNC = "wsrep_after_commit_order_leave SIGNAL acol_reached_1 WAIT_FOR acol_continue_1"; +SET DEBUG_SYNC = "after_group_after_commit SIGNAL agac_reached_1 WAIT_FOR agac_continue_1"; +INSERT INTO t1 VALUES (2);; +connection ctrl; +SET DEBUG_SYNC = "now WAIT_FOR bcol_reached_1"; +wsrep_last_seen_gtid_match +1 +connection node_1a; +SET DEBUG_SYNC = "wsrep_before_commit_order_leave SIGNAL bcol_reached_2 WAIT_FOR bcol_continue_2"; +SET DEBUG_SYNC = "wsrep_after_commit_order_leave SIGNAL acol_reached_2 WAIT_FOR acol_continue_2"; +SET DEBUG_SYNC = "after_group_after_commit SIGNAL agac_reached_2 WAIT_FOR agac_continue_2"; +INSERT INTO t1 VALUES (3);; +connection ctrl; +SET DEBUG_SYNC = "now SIGNAL bcol_continue_1"; +SET DEBUG_SYNC = "now WAIT_FOR acol_reached_1"; +SET DEBUG_SYNC = "now WAIT_FOR bcol_reached_2"; +wsrep_last_seen_gtid_match +1 +SET DEBUG_SYNC = "now SIGNAL bcol_continue_2"; +SET DEBUG_SYNC = "now WAIT_FOR acol_reached_2"; +wsrep_last_seen_gtid_match +1 +SET DEBUG_SYNC = "now SIGNAL acol_continue_1"; +SET DEBUG_SYNC = "now WAIT_FOR agac_reached_1"; +wsrep_last_seen_gtid_no_match +1 +SET DEBUG_SYNC = "now SIGNAL acol_continue_2"; +SET DEBUG_SYNC = "now WAIT_FOR agac_reached_2"; +wsrep_last_seen_gtid_no_match +1 +SET DEBUG_SYNC = "now SIGNAL agac_continue_1"; +connection node_1; +connection ctrl; +SET DEBUG_SYNC = "now SIGNAL agac_continue_2"; +connection node_1a; +connection ctrl; +SET DEBUG_SYNC = "RESET"; +DROP TABLE t1; +disconnect ctrl; +disconnect node_1a; +disconnect node_2; +disconnect node_1; diff --git a/mysql-test/suite/galera/r/MDEV-18832.result b/mysql-test/suite/galera/r/MDEV-18832.result new file mode 100644 index 00000000000..700a0bbefb1 --- /dev/null +++ b/mysql-test/suite/galera/r/MDEV-18832.result @@ -0,0 +1,14 @@ +connection node_2; +connection node_1; +CREATE SEQUENCE Seq1_1 START WITH 1 INCREMENT BY 1; +CREATE TABLE t1 (Id int(11) NOT NULL, PRIMARY KEY (Id)); +INSERT INTO t1 VALUES (NEXT VALUE FOR Seq1_1); +INSERT INTO t1 VALUES (NEXT VALUE FOR Seq1_1); +INSERT INTO t1 VALUES (NEXT VALUE FOR Seq1_1); +INSERT INTO t1 VALUES (NEXT VALUE FOR Seq1_1); +DROP SEQUENCE Seq1_1; +CREATE SEQUENCE Seq1_1 START WITH 1 INCREMENT BY 1; +INSERT INTO t1 VALUES (NEXT VALUE FOR Seq1_1); +ERROR 23000: Duplicate entry '1' for key 'PRIMARY' +DROP SEQUENCE Seq1_1; +DROP TABLE t1; diff --git a/mysql-test/suite/galera/r/MDEV-20225.result b/mysql-test/suite/galera/r/MDEV-20225.result index d769a3e021b..9f20daed9de 100644 --- a/mysql-test/suite/galera/r/MDEV-20225.result +++ b/mysql-test/suite/galera/r/MDEV-20225.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INT NOT NULL PRIMARY KEY AUTO_INCREMENT) ENGINE=InnoDB; CREATE TABLE t2 (f1 INT NOT NULL PRIMARY KEY AUTO_INCREMENT, f2 INT) ENGINE=InnoDB; CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW INSERT INTO t2 VALUES (NULL, NEW.f1); diff --git a/mysql-test/suite/galera/r/MDEV-20616.result b/mysql-test/suite/galera/r/MDEV-20616.result new file mode 100644 index 00000000000..488d8985d35 --- /dev/null +++ b/mysql-test/suite/galera/r/MDEV-20616.result @@ -0,0 +1,114 @@ +connection node_2; +connection node_1; + +Test phase 1 to make sure that natral deadlock in trigger SP execution is +handled correctly + +CREATE TABLE t1(a INT); +CREATE TABLE t2(f1 INT, f2 INT, f3 INT); +CREATE PROCEDURE proc() +BEGIN +INSERT INTO t2 VALUES(100, 200, 300); +UPDATE t2 SET f3 = f3 + 100; +END| +CREATE TRIGGER t1 BEFORE INSERT ON t1 FOR EACH ROW CALL proc(); +INSERT INTO t1 VALUES(2);; +connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1; +INSERT INTO t1 VALUES(1);; +connection node_1; +connection node_1a; +connection node_1; +wsrep__bf_aborts +0 +DROP TABLE t1; +DROP TABLE t2; +DROP PROCEDURE proc; + +Test phase 2 to make sure that BF abort for SP execution is +handled correctly + +connection node_1; +SET SESSION wsrep_retry_autocommit = 0; +SET SESSION wsrep_sync_wait = 0; +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY, f2 CHAR(1)); +connection node_1a; +SET SESSION wsrep_retry_autocommit = 0; +SET SESSION wsrep_sync_wait = 0; +CREATE PROCEDURE proc_update() +BEGIN +UPDATE t1 SET f2 = 'b'; +END| +INSERT INTO t1 VALUES(1, 'a'); +connection node_1; +SET debug_sync='wsrep_before_certification SIGNAL ready WAIT_FOR cont'; +CALL proc_update; +connection node_1a; +SET debug_sync='now WAIT_FOR ready'; +connection node_2; +UPDATE t1 SET f2='c'; +connection node_1a; +SET debug_sync='now SIGNAL cont'; +connection node_1; +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction +connection node_1a; +SET debug_sync='RESET'; +DROP PROCEDURE proc_update; +connection node_1; + +Test phase 3 to make sure natural deadlock is not treated as BF abort + +TRUNCATE t1; +INSERT INTO t1 VALUES (1, 'a'), (2, 'a'); +connection node_1a; +START TRANSACTION; +UPDATE t1 SET f2 = 'b' WHERE f1 = 1; +connection node_1; +START TRANSACTION; +UPDATE t1 SET f2 = 'c' WHERE f1 = 2; +connection node_1a; +UPDATE t1 SET f2 = 'b' WHERE f1 = 2; +connection node_1; +UPDATE t1 SET f2 = 'c' WHERE f1 = 1; +connection node_1a; +COMMIT; +wsrep__bf_aborts +0 +connection node_1; +ROLLBACK; + +Test phase 4 to make sure natural deadlock inside SP execution +is not treated as BF abort + +connection node_1a; +TRUNCATE t1; +INSERT INTO t1 VALUES (1, 'a'), (2, 'a'); +CREATE PROCEDURE proc_update_1() +BEGIN +START TRANSACTION; +UPDATE t1 SET f2 = 'b' WHERE f1 = 1; +SELECT SLEEP(5); +UPDATE t1 SET f2 = 'b' WHERE f1 = 2; +COMMIT; +END| +CREATE PROCEDURE proc_update_2() +BEGIN +START TRANSACTION; +UPDATE t1 SET f2 = 'c' WHERE f1 = 2; +SELECT SLEEP(5); +UPDATE t1 SET f2 = 'c' WHERE f1 = 1; +COMMIT; +END| +connection node_1; +CALL proc_update_1; +connection node_1a; +CALL proc_update_2; +SLEEP(5) +0 +wsrep__bf_aborts +0 +connection node_1; +SLEEP(5) +0 +DROP PROCEDURE proc_update_1; +DROP PROCEDURE proc_update_2; +DROP TABLE t1; diff --git a/mysql-test/suite/galera/r/MDEV-20793.result b/mysql-test/suite/galera/r/MDEV-20793.result new file mode 100644 index 00000000000..b420c8720f5 --- /dev/null +++ b/mysql-test/suite/galera/r/MDEV-20793.result @@ -0,0 +1,39 @@ +connection node_2; +connection node_1; +CREATE TABLE t1 (f1 INT PRIMARY KEY, f2 INT); +INSERT INTO t1 VALUES (1, 0), (5, 0); +connection node_1_ctrl; +SET SESSION wsrep_sync_wait = 0; +SET GLOBAL wsrep_slave_threads = 2; +connection node_1; +SET SESSION wsrep_retry_autocommit = 0; +START TRANSACTION; +UPDATE t1 SET f2 = 1; +SET SESSION debug_sync = "wsrep_before_replay SIGNAL reached WAIT_FOR continue"; +connection node_1_ctrl; +SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; +connection node_2; +INSERT INTO t1 VALUES (2, 2); +connection node_1_ctrl; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_slave_enter_sync'; +connection node_2; +UPDATE t1 SET f2 = 2 WHERE f1 = 5; +connection node_1_ctrl; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +connection node_1; +COMMIT; +connection node_1_ctrl; +SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; +SET SESSION debug_sync = "now WAIT_FOR reached"; +SET GLOBAL wsrep_provider_options = 'signal=local_monitor_slave_enter_sync'; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET SESSION debug_sync = "now SIGNAL continue"; +connection node_1; +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction +SET debug_sync = "RESET"; +DROP TABLE t1; +SET GLOBAL wsrep_slave_threads = 1; diff --git a/mysql-test/suite/galera/r/MDEV-22021.result b/mysql-test/suite/galera/r/MDEV-22021.result index 590fa518c3c..a217e66e2f0 100644 --- a/mysql-test/suite/galera/r/MDEV-22021.result +++ b/mysql-test/suite/galera/r/MDEV-22021.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY); START TRANSACTION; INSERT INTO t1 VALUES (1); diff --git a/mysql-test/suite/galera/r/MDEV-22051.result b/mysql-test/suite/galera/r/MDEV-22051.result new file mode 100644 index 00000000000..9f5394637c2 --- /dev/null +++ b/mysql-test/suite/galera/r/MDEV-22051.result @@ -0,0 +1,20 @@ +connection node_2; +connection node_1; +FLUSH TABLES WITH READ LOCK; +CREATE TABLE t1 (a INT) ENGINE=InnoDB; +ERROR 08S01: Aborting TOI: Global Read-Lock (FTWRL) in place. +SET wsrep_OSU_method=RSU; +CREATE TABLE t1 (a INT) ENGINE=InnoDB; +ERROR 08S01: Aborting TOI: Global Read-Lock (FTWRL) in place. +SET wsrep_OSU_method=TOI; +connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1; +CREATE TABLE t1 (a INT) ENGINE=InnoDB; +ERROR 08S01: Aborting TOI: Global Read-Lock (FTWRL) in place. +connection node_1; +UNLOCK TABLES; +CREATE TABLE t1 (a INT) ENGINE=InnoDB; +FLUSH TABLES WITH READ LOCK; +INSERT INTO t1 VALUES (1); +ERROR HY000: Can't execute the query because you have a conflicting read lock +UNLOCK TABLES; +DROP TABLE t1; diff --git a/mysql-test/suite/galera/r/MDEV-22055.result b/mysql-test/suite/galera/r/MDEV-22055.result new file mode 100644 index 00000000000..651f8501a0a --- /dev/null +++ b/mysql-test/suite/galera/r/MDEV-22055.result @@ -0,0 +1,18 @@ +connection node_2; +connection node_1; +ROLLBACK AND CHAIN; +CREATE TABLE t1(a int not null primary key) engine=innodb; +INSERT INTO t1 values (1); +BEGIN; +INSERT INTO t1 values (2); +ROLLBACK AND CHAIN; +SELECT * FROM t1; +a +1 +connection node_2; +SET SESSION wsrep_sync_wait=15; +SELECT * FROM t1; +a +1 +connection node_1; +DROP TABLE t1; diff --git a/mysql-test/suite/galera/r/MDEV-22458.result b/mysql-test/suite/galera/r/MDEV-22458.result new file mode 100644 index 00000000000..d1f9d94bd1c --- /dev/null +++ b/mysql-test/suite/galera/r/MDEV-22458.result @@ -0,0 +1,10 @@ +connection node_2; +connection node_1; +CREATE TABLE t1 (a INT); +connect con1,localhost,root,,test; +INSERT INTO t1 VALUES (1),(2),(3),(4); +SHOW EXPLAIN FOR $con1; +ERROR HY000: Target is not running an EXPLAINable command +connection con1; +INSERT INTO t1 VALUES (5),(6),(7),(8); +DROP TABLE t1; diff --git a/mysql-test/suite/galera/r/MDEV-6860.result b/mysql-test/suite/galera/r/MDEV-6860.result new file mode 100644 index 00000000000..72a743537c4 --- /dev/null +++ b/mysql-test/suite/galera/r/MDEV-6860.result @@ -0,0 +1,14 @@ +connection node_2; +connection node_1; +connection node_2; +START SLAVE; +connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3; +connection node_3; +CREATE TABLE t1 (f1 int, f2 int) ENGINE=InnoDB; +connection node_2; +connection node_1; +connection node_3; +DROP TABLE t1; +connection node_2; +STOP SLAVE; +RESET SLAVE ALL; diff --git a/mysql-test/suite/galera/r/MW-252.result b/mysql-test/suite/galera/r/MW-252.result index 795d3fff670..4d458802614 100644 --- a/mysql-test/suite/galera/r/MW-252.result +++ b/mysql-test/suite/galera/r/MW-252.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB; FLUSH TABLES WITH READ LOCK; diff --git a/mysql-test/suite/galera/r/MW-258.result b/mysql-test/suite/galera/r/MW-258.result index 1c2a1744c98..22963557daf 100644 --- a/mysql-test/suite/galera/r/MW-258.result +++ b/mysql-test/suite/galera/r/MW-258.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; CREATE TABLE t1 (f1 INTEGER); LOCK TABLE t1 WRITE; diff --git a/mysql-test/suite/galera/r/MW-259.result b/mysql-test/suite/galera/r/MW-259.result index 5256a95c52c..9a0f2ccfa23 100644 --- a/mysql-test/suite/galera/r/MW-259.result +++ b/mysql-test/suite/galera/r/MW-259.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1; connect node_1b, 127.0.0.1, root, , test, $NODE_MYPORT_1; connection node_1; diff --git a/mysql-test/suite/galera/r/MW-284.result b/mysql-test/suite/galera/r/MW-284.result index 6f7bdf3917a..3df126de728 100644 --- a/mysql-test/suite/galera/r/MW-284.result +++ b/mysql-test/suite/galera/r/MW-284.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3; call mtr.add_suppression("\\[ERROR\\] Error reading packet from server: WSREP has not yet prepared node for application use .*"); call mtr.add_suppression("WSREP has not yet prepared node for application use"); diff --git a/mysql-test/suite/galera/r/MW-285.result b/mysql-test/suite/galera/r/MW-285.result index 8c5a21fcbee..762f22d5d25 100644 --- a/mysql-test/suite/galera/r/MW-285.result +++ b/mysql-test/suite/galera/r/MW-285.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE parent1 ( id INT PRIMARY KEY, KEY (id) ) ENGINE=InnoDB; CREATE TABLE parent2 ( id INT PRIMARY KEY, KEY (id) ) ENGINE=InnoDB; CREATE TABLE child ( diff --git a/mysql-test/suite/galera/r/MW-286.result b/mysql-test/suite/galera/r/MW-286.result index f3bef6f7516..b3accb1cd9b 100644 --- a/mysql-test/suite/galera/r/MW-286.result +++ b/mysql-test/suite/galera/r/MW-286.result @@ -1,15 +1,24 @@ +connection node_2; +connection node_1; connection node_1; -CREATE TABLE ten (f1 INTEGER) Engine=InnoDB; -INSERT INTO ten VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); CREATE TABLE t1 (f1 INTEGER) Engine=InnoDB; -INSERT INTO t1 (f1) SELECT 000000 + (10000 * a1.f1) + (1000 * a2.f1) + (100 * a3.f1) + (10 * a4.f1) + a5.f1 FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4, ten AS a5; -INSERT INTO t1 (f1) SELECT 100000 + (10000 * a1.f1) + (1000 * a2.f1) + (100 * a3.f1) + (10 * a4.f1) + a5.f1 FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4, ten AS a5;; +INSERT INTO t1 (f1) VALUES (1), (2), (3); connection node_2; SET GLOBAL wsrep_desync = TRUE; SET wsrep_on = FALSE; -ALTER TABLE t1 ADD PRIMARY KEY (f1); +SET SESSION debug_sync = "alter_table_inplace_after_lock_upgrade SIGNAL mdl_locked WAIT_FOR mdl_continue"; +ALTER TABLE t1 ADD PRIMARY KEY (f1);; +connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2; +connection node_2a; +SET SESSION debug_sync = "now WAIT_FOR mdl_locked"; +connection node_1; +INSERT INTO t1(f1) VALUES (11); +connection node_2a; +SET debug_sync = "now SIGNAL mdl_continue"; +SET debug_sync='RESET'; +connection node_2; +ERROR 70100: Query execution was interrupted SET wsrep_on = TRUE; SET GLOBAL wsrep_desync = FALSE; connection node_1; DROP TABLE t1; -DROP TABLE ten; diff --git a/mysql-test/suite/galera/r/MW-292.result b/mysql-test/suite/galera/r/MW-292.result index 5b9214ace2a..81e5a316b63 100644 --- a/mysql-test/suite/galera/r/MW-292.result +++ b/mysql-test/suite/galera/r/MW-292.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE rand_table (f1 FLOAT); CREATE TABLE t1 (f1 INTEGER PRIMARY KEY, f2 CHAR(1)); INSERT INTO t1 VALUES (1, 'a'); @@ -10,19 +12,28 @@ SELECT * FROM t1 WHERE f1 = 2 FOR UPDATE; f1 f2 2 a connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1; -SET GLOBAL wsrep_provider_options = 'dbug=d,commit_monitor_enter_sync'; -connection node_1; -COMMIT;; -connection node_1a; -SET SESSION wsrep_sync_wait = 0; -SET SESSION wsrep_on = 0; -SET SESSION wsrep_on = 1; +SET SESSION wsrep_sync_wait=0; +SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; connection node_2; UPDATE t1 SET f2 = 'c' WHERE f1 = 2; connection node_1a; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'dbug=d,commit_monitor_master_enter_sync'; +connection node_1; +COMMIT; connection node_1a; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'dbug=d,abort_trx_end'; +SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; SET GLOBAL wsrep_provider_options = 'dbug='; -SET GLOBAL wsrep_provider_options = 'signal=commit_monitor_enter_sync'; +SET GLOBAL wsrep_provider_options = 'signal=abort_trx_end'; +SET GLOBAL wsrep_provider_options = 'signal=commit_monitor_master_enter_sync'; connection node_1; SELECT TIMEDIFF(SYSDATE(), NOW()) < 2; TIMEDIFF(SYSDATE(), NOW()) < 2 diff --git a/mysql-test/suite/galera/r/MW-309.result b/mysql-test/suite/galera/r/MW-309.result index 3dd49a041ee..0169b56e3e1 100644 --- a/mysql-test/suite/galera/r/MW-309.result +++ b/mysql-test/suite/galera/r/MW-309.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB; INSERT INTO t1 VALUES (1); INSERT INTO t1 SELECT * FROM t1; diff --git a/mysql-test/suite/galera/r/MW-313.result b/mysql-test/suite/galera/r/MW-313.result index dc605ffc370..909caf77f1d 100644 --- a/mysql-test/suite/galera/r/MW-313.result +++ b/mysql-test/suite/galera/r/MW-313.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB; INSERT INTO t1 VALUES (1); INSERT INTO t1 SELECT * FROM t1; diff --git a/mysql-test/suite/galera/r/MW-328A.result b/mysql-test/suite/galera/r/MW-328A.result index 535f04bfbab..f256558644e 100644 --- a/mysql-test/suite/galera/r/MW-328A.result +++ b/mysql-test/suite/galera/r/MW-328A.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INTEGER AUTO_INCREMENT PRIMARY KEY, f2 CHAR(20) DEFAULT 'abc') ENGINE=InnoDB; INSERT INTO t1 (f1) VALUES (1); CREATE TABLE t2 (f1 CHAR(20)) ENGINE=InnoDB; @@ -12,7 +14,10 @@ END| connect node_1X, 127.0.0.1, root, , test, $NODE_MYPORT_1; connection node_1X; CALL proc_update();; +connection node_1; +call mtr.add_suppression("WSREP: Wait for gtid returned error 3 while waiting for prior transactions to commit before setting position"); connection node_2; +call mtr.add_suppression("WSREP: Wait for gtid returned error 3 while waiting for prior transactions to commit before setting position"); SET SESSION wsrep_retry_autocommit = 0; connection node_1; connection node_1X; @@ -30,7 +35,7 @@ connection node_2; UPDATE t1 SET j=2 WHERE i=1; connection node_1; COMMIT; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction SELECT * FROM t1; i j 1 2 diff --git a/mysql-test/suite/galera/r/MW-328B.result b/mysql-test/suite/galera/r/MW-328B.result index 531c5de8029..93a8685cc9e 100644 --- a/mysql-test/suite/galera/r/MW-328B.result +++ b/mysql-test/suite/galera/r/MW-328B.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INTEGER AUTO_INCREMENT PRIMARY KEY, f2 CHAR(20) DEFAULT 'abc') ENGINE=InnoDB; INSERT INTO t1 (f1) VALUES (1); CREATE TABLE t2 (f1 CHAR(20)) ENGINE=InnoDB; diff --git a/mysql-test/suite/galera/r/MW-328C.result b/mysql-test/suite/galera/r/MW-328C.result new file mode 100644 index 00000000000..7a00bb718de --- /dev/null +++ b/mysql-test/suite/galera/r/MW-328C.result @@ -0,0 +1,25 @@ +connection node_2; +connection node_1; +CREATE TABLE t1 (f1 INTEGER AUTO_INCREMENT PRIMARY KEY, f2 CHAR(20) DEFAULT 'abc') ENGINE=InnoDB; +INSERT INTO t1 (f1) VALUES (1); +CREATE TABLE t2 (f1 CHAR(20)) ENGINE=InnoDB; +CREATE PROCEDURE proc_update () +BEGIN +DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN END; +SET SESSION wsrep_sync_wait = 0; +WHILE 1 DO +UPDATE t1 SET f2 = LEFT(MD5(RAND()), 4); +END WHILE; +END| +connect node_1X, 127.0.0.1, root, , test, $NODE_MYPORT_1; +connection node_1X; +CALL proc_update();; +connection node_2; +SET SESSION wsrep_retry_autocommit = 10000; +connection node_1; +connection node_1X; +Got one of the listed errors +connection node_1; +DROP PROCEDURE proc_update; +DROP TABLE t1, t2; +CALL mtr.add_suppression("conflict state ABORTED after post commit"); diff --git a/mysql-test/suite/galera/r/MW-328D.result b/mysql-test/suite/galera/r/MW-328D.result index 6562136ec27..43e1cefe08f 100644 --- a/mysql-test/suite/galera/r/MW-328D.result +++ b/mysql-test/suite/galera/r/MW-328D.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (i INT) ENGINE = InnoDB; INSERT INTO t1 (i) VALUES(1); CREATE TABLE t2 (i INT) ENGINE = InnoDB; diff --git a/mysql-test/suite/galera/r/MW-328E.result b/mysql-test/suite/galera/r/MW-328E.result index 89654ec066a..729fdea1a63 100644 --- a/mysql-test/suite/galera/r/MW-328E.result +++ b/mysql-test/suite/galera/r/MW-328E.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; create table t1 (i int primary key, j int) engine=innodb; create table t2 (i int primary key, j int) engine=innodb; insert into t1 values (1,0); diff --git a/mysql-test/suite/galera/r/MW-329.result b/mysql-test/suite/galera/r/MW-329.result index b6d88573d58..54d55eea7ca 100644 --- a/mysql-test/suite/galera/r/MW-329.result +++ b/mysql-test/suite/galera/r/MW-329.result @@ -1,10 +1,8 @@ +connection node_2; +connection node_1; CALL mtr.add_suppression("WSREP: .*conflict state . after post commit .*"); CREATE TABLE t1 (f1 INTEGER, f2 CHAR(20) DEFAULT 'abc') ENGINE=InnoDB; INSERT INTO t1 (f1) VALUES (1),(65535); -FLUSH STATUS; -SELECT VARIABLE_VALUE = 0 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_replays'; -VARIABLE_VALUE = 0 -1 CREATE PROCEDURE proc_insert () BEGIN DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN END; @@ -16,7 +14,6 @@ END WHILE; END| connect node_1b, 127.0.0.1, root, , test, $NODE_MYPORT_1; connection node_1b; -SELECT VARIABLE_VALUE > 0 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_replays'; connection node_1; connection node_1b; connection node_1; diff --git a/mysql-test/suite/galera/r/MW-336.result b/mysql-test/suite/galera/r/MW-336.result index dc1f0763a3f..8996b85c77c 100644 --- a/mysql-test/suite/galera/r/MW-336.result +++ b/mysql-test/suite/galera/r/MW-336.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; CREATE TABLE t1 (f1 INTEGER) Engine=InnoDB; SET GLOBAL wsrep_slave_threads = 10; diff --git a/mysql-test/suite/galera/r/MW-357.result b/mysql-test/suite/galera/r/MW-357.result index 35855e21233..dc391be4dd3 100644 --- a/mysql-test/suite/galera/r/MW-357.result +++ b/mysql-test/suite/galera/r/MW-357.result @@ -1,4 +1,6 @@ connection node_2; +connection node_1; +connection node_2; SET GLOBAL wsrep_slave_threads = 0; Warnings: Warning 1292 Truncated incorrect wsrep_slave_threads value: '0' diff --git a/mysql-test/suite/galera/r/MW-369.result b/mysql-test/suite/galera/r/MW-369.result index 9e209529db3..9f0a77edbbc 100644 --- a/mysql-test/suite/galera/r/MW-369.result +++ b/mysql-test/suite/galera/r/MW-369.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE p (f1 INTEGER PRIMARY KEY, f2 INTEGER) ENGINE=INNODB; CREATE TABLE c (f1 INTEGER PRIMARY KEY, p_id INTEGER, CONSTRAINT fk_1 FOREIGN KEY (p_id) REFERENCES p (f1)) ; @@ -17,17 +19,17 @@ connection node_1a; SET SESSION wsrep_on = 0; SET SESSION wsrep_on = 1; SET GLOBAL wsrep_provider_options = 'dbug='; -SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_enter_sync'; +SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_master_enter_sync'; connection node_1; COMMIT; connection node_1a; SET SESSION wsrep_on = 0; SET SESSION wsrep_on = 1; SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; -SET GLOBAL wsrep_provider_options = 'signal=local_monitor_enter_sync'; +SET GLOBAL wsrep_provider_options = 'signal=local_monitor_master_enter_sync'; SET GLOBAL wsrep_provider_options = 'dbug='; connection node_1; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction connection node_2; SELECT * FROM p; f1 f2 @@ -59,14 +61,14 @@ connection node_1a; SET SESSION wsrep_on = 0; SET SESSION wsrep_on = 1; SET GLOBAL wsrep_provider_options = 'dbug='; -SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_enter_sync'; +SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_master_enter_sync'; connection node_1; COMMIT; connection node_1a; SET SESSION wsrep_on = 0; SET SESSION wsrep_on = 1; SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; -SET GLOBAL wsrep_provider_options = 'signal=local_monitor_enter_sync'; +SET GLOBAL wsrep_provider_options = 'signal=local_monitor_master_enter_sync'; SET GLOBAL wsrep_provider_options = 'dbug='; connection node_1; connection node_2; @@ -99,14 +101,14 @@ connection node_1a; SET SESSION wsrep_on = 0; SET SESSION wsrep_on = 1; SET GLOBAL wsrep_provider_options = 'dbug='; -SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_enter_sync'; +SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_master_enter_sync'; connection node_1; COMMIT; connection node_1a; SET SESSION wsrep_on = 0; SET SESSION wsrep_on = 1; SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; -SET GLOBAL wsrep_provider_options = 'signal=local_monitor_enter_sync'; +SET GLOBAL wsrep_provider_options = 'signal=local_monitor_master_enter_sync'; SET GLOBAL wsrep_provider_options = 'dbug='; connection node_1; connection node_2; @@ -135,17 +137,17 @@ connection node_1a; SET SESSION wsrep_on = 0; SET SESSION wsrep_on = 1; SET GLOBAL wsrep_provider_options = 'dbug='; -SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_enter_sync'; +SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_master_enter_sync'; connection node_1; COMMIT; connection node_1a; SET SESSION wsrep_on = 0; SET SESSION wsrep_on = 1; SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; -SET GLOBAL wsrep_provider_options = 'signal=local_monitor_enter_sync'; +SET GLOBAL wsrep_provider_options = 'signal=local_monitor_master_enter_sync'; SET GLOBAL wsrep_provider_options = 'dbug='; connection node_1; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction connection node_2; SELECT * FROM p; f1 f2 @@ -175,17 +177,17 @@ connection node_1a; SET SESSION wsrep_on = 0; SET SESSION wsrep_on = 1; SET GLOBAL wsrep_provider_options = 'dbug='; -SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_enter_sync'; +SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_master_enter_sync'; connection node_1; COMMIT; connection node_1a; SET SESSION wsrep_on = 0; SET SESSION wsrep_on = 1; SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; -SET GLOBAL wsrep_provider_options = 'signal=local_monitor_enter_sync'; +SET GLOBAL wsrep_provider_options = 'signal=local_monitor_master_enter_sync'; SET GLOBAL wsrep_provider_options = 'dbug='; connection node_1; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction connection node_2; SELECT * FROM p; f1 f2 @@ -196,3 +198,87 @@ f1 p_id f2 1 1 1 DROP TABLE c; DROP TABLE p; +# +# Start of 10.4 tests +# +connection node_1; +CREATE TABLE pf (f1 INTEGER PRIMARY KEY) ENGINE=INNODB; +CREATE TABLE cf ( +f1 INTEGER PRIMARY KEY, +p_id INTEGER, +CONSTRAINT fk_1 FOREIGN KEY (p_id) REFERENCES pf (f1) +); +INSERT INTO pf VALUES (1); +connection node_1; +SET AUTOCOMMIT=ON; +START TRANSACTION; +INSERT INTO cf (f1, p_id) VALUES (10, 1); +connection node_1a; +SET SESSION wsrep_sync_wait = 0; +SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; +connection node_2; +INSERT INTO cf (f1, p_id) VALUES (20, 1); +connection node_1a; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_master_enter_sync'; +connection node_1; +COMMIT; +connection node_1a; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; +SET GLOBAL wsrep_provider_options = 'signal=local_monitor_master_enter_sync'; +SET GLOBAL wsrep_provider_options = 'dbug='; +connection node_1; +connection node_2; +SELECT * FROM pf; +f1 +1 +SELECT * FROM cf; +f1 p_id +10 1 +20 1 +DROP TABLE cf; +DROP TABLE pf; +connection node_1; +CREATE TABLE pg (f1 INTEGER PRIMARY KEY, f2 INTEGER) ENGINE=INNODB; +CREATE TABLE cg (f1 INTEGER PRIMARY KEY, p_id INTEGER, +f2 INTEGER, +CONSTRAINT fk_1 FOREIGN KEY (p_id) REFERENCES pg (f1)) ; +INSERT INTO pg VALUES (1, 0); +INSERT INTO pg VALUES (2, 0); +connection node_1; +SET AUTOCOMMIT=ON; +START TRANSACTION; +UPDATE pg SET f2 = 1 WHERE f1 = 1; +connection node_1a; +SET SESSION wsrep_sync_wait = 0; +SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; +connection node_2; +INSERT INTO cg VALUES (1, 1, 0); +connection node_1a; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_master_enter_sync'; +connection node_1; +COMMIT; +connection node_1a; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; +SET GLOBAL wsrep_provider_options = 'signal=local_monitor_master_enter_sync'; +SET GLOBAL wsrep_provider_options = 'dbug='; +connection node_1; +connection node_2; +SELECT * FROM pg; +f1 f2 +1 1 +2 0 +SELECT * FROM cg; +f1 p_id f2 +1 1 0 +DROP TABLE cg; +DROP TABLE pg; diff --git a/mysql-test/suite/galera/r/MW-388.result b/mysql-test/suite/galera/r/MW-388.result index 59d499e117d..b16addc542a 100644 --- a/mysql-test/suite/galera/r/MW-388.result +++ b/mysql-test/suite/galera/r/MW-388.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY, f2 CHAR(255)) Engine=InnoDB; CREATE PROCEDURE insert_proc () @@ -27,7 +29,7 @@ connection node_2; connection node_1; SELECT @errno = 1213; @errno = 1213 -0 +1 SELECT * FROM t1; f1 f2 1 node 2 diff --git a/mysql-test/suite/galera/r/MW-402.result b/mysql-test/suite/galera/r/MW-402.result index 9f04984adc8..f692c90d611 100644 --- a/mysql-test/suite/galera/r/MW-402.result +++ b/mysql-test/suite/galera/r/MW-402.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1; connection node_1; CREATE TABLE p (f1 INTEGER PRIMARY KEY, f2 INTEGER) ENGINE=INNODB; @@ -20,17 +22,17 @@ connection node_1a; SET SESSION wsrep_on = 0; SET SESSION wsrep_on = 1; SET GLOBAL wsrep_provider_options = 'dbug='; -SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_enter_sync'; +SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_master_enter_sync'; connection node_1; COMMIT; connection node_1a; SET SESSION wsrep_on = 0; SET SESSION wsrep_on = 1; SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; -SET GLOBAL wsrep_provider_options = 'signal=local_monitor_enter_sync'; +SET GLOBAL wsrep_provider_options = 'signal=local_monitor_master_enter_sync'; SET GLOBAL wsrep_provider_options = 'dbug='; connection node_1; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction connection node_2; SELECT * FROM p; f1 f2 @@ -60,17 +62,17 @@ connection node_1a; SET SESSION wsrep_on = 0; SET SESSION wsrep_on = 1; SET GLOBAL wsrep_provider_options = 'dbug='; -SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_enter_sync'; +SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_master_enter_sync'; connection node_1; COMMIT; connection node_1a; SET SESSION wsrep_on = 0; SET SESSION wsrep_on = 1; SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; -SET GLOBAL wsrep_provider_options = 'signal=local_monitor_enter_sync'; +SET GLOBAL wsrep_provider_options = 'signal=local_monitor_master_enter_sync'; SET GLOBAL wsrep_provider_options = 'dbug='; connection node_1; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction connection node_2; SELECT * FROM p; f1 f2 @@ -102,17 +104,17 @@ connection node_1a; SET SESSION wsrep_on = 0; SET SESSION wsrep_on = 1; SET GLOBAL wsrep_provider_options = 'dbug='; -SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_enter_sync'; +SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_master_enter_sync'; connection node_1; COMMIT; connection node_1a; SET SESSION wsrep_on = 0; SET SESSION wsrep_on = 1; SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; -SET GLOBAL wsrep_provider_options = 'signal=local_monitor_enter_sync'; +SET GLOBAL wsrep_provider_options = 'signal=local_monitor_master_enter_sync'; SET GLOBAL wsrep_provider_options = 'dbug='; connection node_1; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction connection node_2; SELECT * FROM p; f1 f2 @@ -135,17 +137,17 @@ connection node_1a; SET SESSION wsrep_on = 0; SET SESSION wsrep_on = 1; SET GLOBAL wsrep_provider_options = 'dbug='; -SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_enter_sync'; +SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_master_enter_sync'; connection node_1; COMMIT; connection node_1a; SET SESSION wsrep_on = 0; SET SESSION wsrep_on = 1; SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; -SET GLOBAL wsrep_provider_options = 'signal=local_monitor_enter_sync'; +SET GLOBAL wsrep_provider_options = 'signal=local_monitor_master_enter_sync'; SET GLOBAL wsrep_provider_options = 'dbug='; connection node_1; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction connection node_2; SELECT * FROM p; f1 f2 @@ -159,8 +161,10 @@ DROP TABLE p; connection node_1; CREATE TABLE p1 (f1 INTEGER PRIMARY KEY, f2 INTEGER) ENGINE=INNODB; CREATE TABLE p2 (f1 INTEGER PRIMARY KEY, f2 INTEGER) ENGINE=INNODB; -CREATE TABLE c (f1 INTEGER PRIMARY KEY, p1_id INTEGER, p2_id INTEGER, f2 INTEGER, -CONSTRAINT fk_1 FOREIGN KEY (p1_id) REFERENCES p1 (f1) ON DELETE CASCADE, +CREATE TABLE c (f1 INTEGER PRIMARY KEY, p1_id INTEGER, p2_id INTEGER, +f2 INTEGER, +CONSTRAINT fk_1 FOREIGN KEY (p1_id) REFERENCES p1 (f1) +ON DELETE CASCADE, CONSTRAINT fk_2 FOREIGN KEY (p2_id) REFERENCES p2 (f1)); INSERT INTO p1 VALUES (1, 0); INSERT INTO p2 VALUES (1, 0); @@ -179,14 +183,14 @@ connection node_1a; SET SESSION wsrep_on = 0; SET SESSION wsrep_on = 1; SET GLOBAL wsrep_provider_options = 'dbug='; -SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_enter_sync'; +SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_master_enter_sync'; connection node_1; COMMIT; connection node_1a; SET SESSION wsrep_on = 0; SET SESSION wsrep_on = 1; SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; -SET GLOBAL wsrep_provider_options = 'signal=local_monitor_enter_sync'; +SET GLOBAL wsrep_provider_options = 'signal=local_monitor_master_enter_sync'; SET GLOBAL wsrep_provider_options = 'dbug='; connection node_1; connection node_2; @@ -197,4 +201,52 @@ f1 f2 1 2 SELECT * FROM c; f1 p1_id p2_id f2 +DROP TABLE c; +DROP TABLE p1; +DROP TABLE p2; +connection node_1; +CREATE TABLE p1 (f1 INTEGER PRIMARY KEY, f2 INTEGER) ENGINE=INNODB; +CREATE TABLE p2 (f1 INTEGER PRIMARY KEY, f2 INTEGER) ENGINE=INNODB; +CREATE TABLE c (f1 INTEGER PRIMARY KEY, p1_id INTEGER, p2_id INTEGER, +f2 INTEGER, +CONSTRAINT fk_1 FOREIGN KEY (p1_id) REFERENCES p1 (f1) +ON DELETE CASCADE, +CONSTRAINT fk_2 FOREIGN KEY (p2_id) REFERENCES p2 (f1) +ON DELETE CASCADE); +INSERT INTO p1 VALUES (1, 0); +INSERT INTO p2 VALUES (1, 0); +INSERT INTO c VALUES (1, 1, 1, 0); +connection node_1a; +connection node_1; +SET AUTOCOMMIT=ON; +START TRANSACTION; +DELETE FROM p2 WHERE f1=1; +connection node_1a; +SET SESSION wsrep_sync_wait = 0; +SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; +connection node_2; +DELETE FROM p1 WHERE f1=1; +connection node_1a; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_master_enter_sync'; +connection node_1; +COMMIT; +connection node_1a; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; +SET GLOBAL wsrep_provider_options = 'signal=local_monitor_master_enter_sync'; +SET GLOBAL wsrep_provider_options = 'dbug='; +connection node_1; +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction +connection node_2; +SELECT * FROM p1; +f1 f2 +SELECT * FROM p2; +f1 f2 +1 0 +SELECT * FROM c; +f1 p1_id p2_id f2 DROP TABLE c,p1,p2; diff --git a/mysql-test/suite/galera/r/MW-416.result b/mysql-test/suite/galera/r/MW-416.result index 499b5350972..68406c4dcf4 100644 --- a/mysql-test/suite/galera/r/MW-416.result +++ b/mysql-test/suite/galera/r/MW-416.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE USER 'userMW416'@'localhost'; GRANT SELECT, INSERT, UPDATE ON test.* TO 'userMW416'@'localhost'; connect userMW416, localhost, userMW416,, test, $NODE_MYPORT_1; diff --git a/mysql-test/suite/galera/r/MW-44.result b/mysql-test/suite/galera/r/MW-44.result index 7335acc445a..604bd139024 100644 --- a/mysql-test/suite/galera/r/MW-44.result +++ b/mysql-test/suite/galera/r/MW-44.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; TRUNCATE TABLE mysql.general_log; connection node_2; diff --git a/mysql-test/suite/galera/r/MW-86-wait1.result b/mysql-test/suite/galera/r/MW-86-wait1.result index 85729c6462e..8ad9c8bf181 100644 --- a/mysql-test/suite/galera/r/MW-86-wait1.result +++ b/mysql-test/suite/galera/r/MW-86-wait1.result @@ -1,9 +1,13 @@ connection node_2; +connection node_1; +SET @orig_debug=@@debug_dbug; +connection node_2; SELECT @@debug_sync; @@debug_sync ON - current signal: '' +set debug_sync='RESET'; SET SESSION wsrep_sync_wait = 1; -SET GLOBAL debug_dbug = "d,sync.wsrep_apply_cb"; +SET GLOBAL debug_dbug = "+d,sync.wsrep_apply_cb"; connection node_1; CREATE TABLE t_wait1 (f1 INTEGER) ENGINE=InnoDB; INSERT INTO t_wait1 VALUES (1); @@ -34,11 +38,11 @@ SHOW TABLES; SHOW TRIGGERS; SHOW GLOBAL VARIABLES LIKE 'foo_bar'; SHOW WARNINGS; -SET GLOBAL debug_dbug = ""; +SET GLOBAL debug_dbug = @orig_debug; SET SESSION debug_sync = "now SIGNAL signal.wsrep_apply_cb"; +SET debug_sync='RESET'; SET SESSION wsrep_sync_wait = default; DROP TABLE t_wait1; -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 index d1341542ef7..07e59ebbe0a 100644 --- a/mysql-test/suite/galera/r/MW-86-wait8.result +++ b/mysql-test/suite/galera/r/MW-86-wait8.result @@ -1,9 +1,12 @@ connection node_2; +connection node_1; +SET @orig_debug=@@debug_dbug; +connection node_2; SELECT @@debug_sync; @@debug_sync ON - current signal: '' SET SESSION wsrep_sync_wait = 8; -SET GLOBAL debug_dbug = "d,sync.wsrep_apply_cb"; +SET GLOBAL debug_dbug = "+d,sync.wsrep_apply_cb"; connection node_1; CREATE TABLE t_wait8 (f1 INTEGER) ENGINE=InnoDB; INSERT INTO t_wait8 VALUES (1); @@ -36,11 +39,11 @@ SHOW TABLES; SHOW TRIGGERS; SHOW GLOBAL VARIABLES LIKE 'foo_bar'; SHOW WARNINGS; -SET GLOBAL debug_dbug = ""; +SET GLOBAL debug_dbug = @orig_debug; SET DEBUG_SYNC = "now SIGNAL signal.wsrep_apply_cb"; +SET debug_sync='RESET'; SET SESSION wsrep_sync_wait = default; DROP TABLE t_wait8; -SET debug_sync='RESET'; SELECT @@debug_sync; @@debug_sync ON - current signal: '' diff --git a/mysql-test/suite/galera/r/basic.result b/mysql-test/suite/galera/r/basic.result index e85c805253f..10f180e7a94 100644 --- a/mysql-test/suite/galera/r/basic.result +++ b/mysql-test/suite/galera/r/basic.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; USE test; CREATE TABLE t1(c1 INT PRIMARY KEY) ENGINE=INNODB; INSERT INTO t1 VALUES (1), (2), (3), (4), (5); diff --git a/mysql-test/suite/galera/r/binlog_checksum.result b/mysql-test/suite/galera/r/binlog_checksum.result index e86f3892ac7..4106354eb7d 100644 --- a/mysql-test/suite/galera/r/binlog_checksum.result +++ b/mysql-test/suite/galera/r/binlog_checksum.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; # On node_1 connection node_1; SET @binlog_checksum_saved= @@GLOBAL.BINLOG_CHECKSUM; diff --git a/mysql-test/suite/galera/r/create.result b/mysql-test/suite/galera/r/create.result index a445b32e8bf..6ad94dd3d43 100644 --- a/mysql-test/suite/galera/r/create.result +++ b/mysql-test/suite/galera/r/create.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; # # MDEV-6924 : Server crashed on CREATE TABLE ... SELECT # diff --git a/mysql-test/suite/galera/r/enforce_storage_engine.result b/mysql-test/suite/galera/r/enforce_storage_engine.result index 746aa22bf20..1a453241427 100644 --- a/mysql-test/suite/galera/r/enforce_storage_engine.result +++ b/mysql-test/suite/galera/r/enforce_storage_engine.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; # # MDEV-8831 : enforce_storage_engine doesn't block table creation on # other nodes (galera cluster) diff --git a/mysql-test/suite/galera/r/enforce_storage_engine2.result b/mysql-test/suite/galera/r/enforce_storage_engine2.result index 128994ed221..8b174139eae 100644 --- a/mysql-test/suite/galera/r/enforce_storage_engine2.result +++ b/mysql-test/suite/galera/r/enforce_storage_engine2.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; # # MDEV-9312: storage engine not enforced during galera cluster # replication diff --git a/mysql-test/suite/galera/r/ev51914.result b/mysql-test/suite/galera/r/ev51914.result index 3f3d67d01ef..b9d8a82bfa0 100644 --- a/mysql-test/suite/galera/r/ev51914.result +++ b/mysql-test/suite/galera/r/ev51914.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; SAVEPOINT in a stored function should be forbidden CREATE FUNCTION f1 () RETURNS INT BEGIN diff --git a/mysql-test/suite/galera/r/fk.result b/mysql-test/suite/galera/r/fk.result index ab8e1c8f680..17fc99a904e 100644 --- a/mysql-test/suite/galera/r/fk.result +++ b/mysql-test/suite/galera/r/fk.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; USE test; # On node_1 diff --git a/mysql-test/suite/galera/r/galera#414.result b/mysql-test/suite/galera/r/galera#414.result index 34dcb6242d3..2c1dccfd131 100644 --- a/mysql-test/suite/galera/r/galera#414.result +++ b/mysql-test/suite/galera/r/galera#414.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; connection node_2; connection node_2; diff --git a/mysql-test/suite/galera/r/galera#500.result b/mysql-test/suite/galera/r/galera#500.result index 7ba02c56053..a5ab0b19718 100644 --- a/mysql-test/suite/galera/r/galera#500.result +++ b/mysql-test/suite/galera/r/galera#500.result @@ -1,4 +1,8 @@ connection node_2; +connection node_1; +connection node_1; +connection node_2; +connection node_2; SET SESSION wsrep_sync_wait = 0; SET GLOBAL wsrep_provider_options="gmcast.isolate=2"; connection node_1; diff --git a/mysql-test/suite/galera/r/galera#505.result b/mysql-test/suite/galera/r/galera#505.result index 8d3e3ec072a..bc7eb3b9ed4 100644 --- a/mysql-test/suite/galera/r/galera#505.result +++ b/mysql-test/suite/galera/r/galera#505.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; SET SESSION wsrep_sync_wait=0; SET SESSION wsrep_sync_wait=DEFAULT; diff --git a/mysql-test/suite/galera/r/galera_FK_duplicate_client_insert.result b/mysql-test/suite/galera/r/galera_FK_duplicate_client_insert.result index 3eb638ca49a..5ae577a6323 100644 --- a/mysql-test/suite/galera/r/galera_FK_duplicate_client_insert.result +++ b/mysql-test/suite/galera/r/galera_FK_duplicate_client_insert.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE user(id int primary key, j int) ENGINE=InnoDB; CREATE TABLE user_session(id int primary key, fk1 int, fk2 int) ENGINE=InnoDB; alter table user_session add foreign key (fk1) references user(id); diff --git a/mysql-test/suite/galera/r/galera_admin.result b/mysql-test/suite/galera/r/galera_admin.result index ed753247236..01e2aac16b2 100644 --- a/mysql-test/suite/galera/r/galera_admin.result +++ b/mysql-test/suite/galera/r/galera_admin.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; DROP TABLE IF EXISTS t1, t2; DROP TABLE IF EXISTS x1, x2; connection node_1; @@ -16,7 +18,9 @@ connection node_2; connection node_1; ANALYZE TABLE t1, t2; Table Op Msg_type Msg_text +test.t1 analyze status Engine-independent statistics collected test.t1 analyze status OK +test.t2 analyze status Engine-independent statistics collected test.t2 analyze status OK connection node_2; # OPTIMIZE test diff --git a/mysql-test/suite/galera/r/galera_alter_engine_innodb.result b/mysql-test/suite/galera/r/galera_alter_engine_innodb.result index ff6ab792c0e..dfa30441f85 100644 --- a/mysql-test/suite/galera/r/galera_alter_engine_innodb.result +++ b/mysql-test/suite/galera/r/galera_alter_engine_innodb.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB; INSERT INTO t1 VALUES (1); ALTER TABLE t1 ENGINE=InnoDB; diff --git a/mysql-test/suite/galera/r/galera_alter_engine_myisam.result b/mysql-test/suite/galera/r/galera_alter_engine_myisam.result index 389383858ac..b3a9bdd30df 100644 --- a/mysql-test/suite/galera/r/galera_alter_engine_myisam.result +++ b/mysql-test/suite/galera/r/galera_alter_engine_myisam.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; SET GLOBAL wsrep_replicate_myisam = TRUE; CREATE TABLE t1 (f1 INTEGER) ENGINE=MyISAM; INSERT INTO t1 VALUES (1); diff --git a/mysql-test/suite/galera/r/galera_alter_table_force.result b/mysql-test/suite/galera/r/galera_alter_table_force.result index d0a2f81b631..271796422cd 100644 --- a/mysql-test/suite/galera/r/galera_alter_table_force.result +++ b/mysql-test/suite/galera/r/galera_alter_table_force.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB; INSERT INTO t1 VALUES (1); ALTER TABLE t1 FORCE; diff --git a/mysql-test/suite/galera/r/galera_applier_ftwrl_table.result b/mysql-test/suite/galera/r/galera_applier_ftwrl_table.result index a6607906661..11fda5d8aab 100644 --- a/mysql-test/suite/galera/r/galera_applier_ftwrl_table.result +++ b/mysql-test/suite/galera/r/galera_applier_ftwrl_table.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; SET SESSION wsrep_sync_wait = 0; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; diff --git a/mysql-test/suite/galera/r/galera_applier_ftwrl_table_alter.result b/mysql-test/suite/galera/r/galera_applier_ftwrl_table_alter.result index 9711100d155..a5aeb6eb366 100644 --- a/mysql-test/suite/galera/r/galera_applier_ftwrl_table_alter.result +++ b/mysql-test/suite/galera/r/galera_applier_ftwrl_table_alter.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; SET SESSION wsrep_sync_wait = 0; SET SESSION lock_wait_timeout = 60; diff --git a/mysql-test/suite/galera/r/galera_as_master.result b/mysql-test/suite/galera/r/galera_as_master.result index 2a7262359fa..4aca328be56 100644 --- a/mysql-test/suite/galera/r/galera_as_master.result +++ b/mysql-test/suite/galera/r/galera_as_master.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3; START SLAVE; connection node_1; @@ -54,4 +56,6 @@ STOP SLAVE; RESET SLAVE ALL; CALL mtr.add_suppression('You need to use --log-bin to make --binlog-format work'); connection node_1; +set global wsrep_on=OFF; RESET MASTER; +set global wsrep_on=ON; diff --git a/mysql-test/suite/galera/r/galera_as_master_large.result b/mysql-test/suite/galera/r/galera_as_master_large.result index dad74211af9..826d2f32057 100644 --- a/mysql-test/suite/galera/r/galera_as_master_large.result +++ b/mysql-test/suite/galera/r/galera_as_master_large.result @@ -2,6 +2,8 @@ # MDEV-9044 : Getting binlog corruption on my Galera cluster (10.1.8) # making it impossible to async slave. # +connection node_2; +connection node_1; connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3; START SLAVE; connection node_1; diff --git a/mysql-test/suite/galera/r/galera_as_slave.result b/mysql-test/suite/galera/r/galera_as_slave.result index 9ccb5106234..391ceecd509 100644 --- a/mysql-test/suite/galera/r/galera_as_slave.result +++ b/mysql-test/suite/galera/r/galera_as_slave.result @@ -1,12 +1,14 @@ -connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2; connection node_2; -START SLAVE; connection node_1; +connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3; +connection node_2; +START SLAVE; +connection node_3; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; INSERT INTO t1 VALUES(1); connection node_2; INSERT INTO t1 VALUES (2); -connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3; +connection node_1; SELECT COUNT(*) = 2 FROM t1; COUNT(*) = 2 1 @@ -15,10 +17,10 @@ connection node_2; SELECT COUNT(*) = 3 FROM t1; COUNT(*) = 3 1 -connection node_1; +connection node_3; DROP TABLE t1; connection node_2; STOP SLAVE; RESET SLAVE ALL; -connection node_1; +connection node_3; RESET MASTER; diff --git a/mysql-test/suite/galera/r/galera_as_slave_autoinc.result b/mysql-test/suite/galera/r/galera_as_slave_autoinc.result index 60f3216aa9c..6ac51f44950 100644 --- a/mysql-test/suite/galera/r/galera_as_slave_autoinc.result +++ b/mysql-test/suite/galera/r/galera_as_slave_autoinc.result @@ -1,7 +1,9 @@ -connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2; connection node_2; -START SLAVE; connection node_1; +connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3; +connection node_2; +START SLAVE; +connection node_3; SET SESSION binlog_format='STATEMENT'; CREATE TABLE t1 ( i int(11) NOT NULL AUTO_INCREMENT, @@ -60,7 +62,7 @@ binlog_format ROW show variables like 'auto_increment_increment'; Variable_name Value auto_increment_increment 2 -connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3; +connection node_1; select * from t1; i c 1 dummy_text @@ -79,10 +81,10 @@ binlog_format ROW show variables like 'auto_increment_increment'; Variable_name Value auto_increment_increment 2 -connection node_1; +connection node_3; DROP TABLE t1; connection node_2; STOP SLAVE; RESET SLAVE ALL; -connection node_1; +connection node_3; RESET MASTER; diff --git a/mysql-test/suite/galera/r/galera_as_slave_ctas.result b/mysql-test/suite/galera/r/galera_as_slave_ctas.result index 13cbbc905e3..a3d28ce42aa 100644 --- a/mysql-test/suite/galera/r/galera_as_slave_ctas.result +++ b/mysql-test/suite/galera/r/galera_as_slave_ctas.result @@ -1,28 +1,31 @@ -connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2; -connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3; connection node_2; -START SLAVE; connection node_1; +connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3; +SELECT @@wsrep_on; +@@wsrep_on +0 +connection node_1; +START SLAVE; +connection node_3; SHOW VARIABLES LIKE 'binlog_format'; Variable_name Value binlog_format ROW -connection node_1; CREATE TABLE source (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; CREATE TABLE target AS SELECT * FROM source; +connection node_1; connection node_2; connection node_3; -connection node_1; DROP TABLE target; INSERT INTO source VALUES(1); CREATE TABLE target AS SELECT * FROM source; +connection node_1; connection node_2; connection node_3; -connection node_1; DROP TABLE source; DROP TABLE target; -connection node_3; connection node_2; +connection node_1; STOP SLAVE; RESET SLAVE ALL; -connection node_1; +connection node_3; RESET MASTER; diff --git a/mysql-test/suite/galera/r/galera_as_slave_gtid.result b/mysql-test/suite/galera/r/galera_as_slave_gtid.result index 844d4f3fb7e..41d9085ccac 100644 --- a/mysql-test/suite/galera/r/galera_as_slave_gtid.result +++ b/mysql-test/suite/galera/r/galera_as_slave_gtid.result @@ -1,31 +1,38 @@ -connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2; connection node_2; -START SLAVE; connection node_1; +connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3; +connection node_2; +START SLAVE; +connection node_3; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; INSERT INTO t1 VALUES(1); SELECT LENGTH(@@global.gtid_binlog_state) > 1; LENGTH(@@global.gtid_binlog_state) > 1 1 +connection node_1; connection node_2; gtid_binlog_state_equal 1 -connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3; +connection node_1; SELECT COUNT(*) = 1 FROM t1; COUNT(*) = 1 1 gtid_binlog_state_equal 1 -connection node_1; -DROP TABLE t1; connection node_3; +DROP TABLE t1; +connection node_1; connection node_2; STOP SLAVE; RESET SLAVE ALL; #cleanup 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_3; reset master; diff --git a/mysql-test/suite/galera/r/galera_as_slave_gtid_auto_engine.result b/mysql-test/suite/galera/r/galera_as_slave_gtid_auto_engine.result new file mode 100644 index 00000000000..cff5bb0a5d0 --- /dev/null +++ b/mysql-test/suite/galera/r/galera_as_slave_gtid_auto_engine.result @@ -0,0 +1,41 @@ +connection node_2; +connection node_1; +connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3; +connection node_2; +START SLAVE; +connection node_3; +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; +INSERT INTO t1 VALUES(1); +SELECT LENGTH(@@global.gtid_binlog_state) > 1; +LENGTH(@@global.gtid_binlog_state) > 1 +1 +connection node_1; +connection node_2; +gtid_binlog_state_equal +1 +connection node_1; +SELECT COUNT(*) = 1 FROM t1; +COUNT(*) = 1 +1 +gtid_binlog_state_equal +1 +connection node_3; +DROP TABLE t1; +connection node_1; +connection node_2; +STOP SLAVE; +RESET SLAVE ALL; +#cleanup +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_3; +reset master; +connection node_2; +DROP TABLE mysql.gtid_slave_pos_InnoDB; +CALL mtr.add_suppression("The automatically created table"); diff --git a/mysql-test/suite/galera/r/galera_as_slave_gtid_myisam.result b/mysql-test/suite/galera/r/galera_as_slave_gtid_myisam.result index bea76e19dbb..b498f334bf8 100644 --- a/mysql-test/suite/galera/r/galera_as_slave_gtid_myisam.result +++ b/mysql-test/suite/galera/r/galera_as_slave_gtid_myisam.result @@ -1,35 +1,46 @@ -connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2; +connection node_2; +connection node_1; SELECT @@WSREP_ON; @@WSREP_ON +1 +connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3; +SELECT @@wsrep_on; +@@wsrep_on 0 -connection node_2; +connection node_1; ALTER TABLE mysql.gtid_slave_pos engine = InnoDB; START SLAVE; -connection node_1; +connection node_3; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=MyISAM; INSERT INTO t1 VALUES(1); SELECT LENGTH(@@global.gtid_binlog_state) > 1; LENGTH(@@global.gtid_binlog_state) > 1 1 -connection node_2; +connection node_1; gtid_binlog_state_equal 0 -connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3; -SELECT COUNT(*) = 0 FROM t1; -COUNT(*) = 0 -1 +connection node_2; +SELECT COUNT(*) AS EXPECT_0 FROM t1; +EXPECT_0 +0 gtid_binlog_state_equal 0 #cleanup -connection node_1; +connection node_3; DROP TABLE t1; +connection node_1; connection node_2; connection node_3; +RESET MASTER; connection node_1; -reset master; -connection node_2; STOP SLAVE; RESET SLAVE ALL; +SET GLOBAL WSREP_ON=OFF; reset master; -connection node_3; +SET GLOBAL WSREP_ON=ON; +connection node_2; +SET GLOBAL WSREP_ON=OFF; reset master; +SET GLOBAL WSREP_ON=ON; +connection node_3; +RESET MASTER; diff --git a/mysql-test/suite/galera/r/galera_as_slave_nonprim.result b/mysql-test/suite/galera/r/galera_as_slave_nonprim.result index 6d0bcd4204a..fefc988d9d4 100644 --- a/mysql-test/suite/galera/r/galera_as_slave_nonprim.result +++ b/mysql-test/suite/galera/r/galera_as_slave_nonprim.result @@ -1,25 +1,26 @@ -connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2; +connection node_2; +connection node_1; +connect node_4, 127.0.0.1, root, , test, $NODE_MYPORT_4; connection node_2; START SLAVE; SET SESSION wsrep_sync_wait = 0; -connection node_1; +connection node_4; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; connection node_2; SET GLOBAL wsrep_provider_options = 'gmcast.isolate=1'; -connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3; -connection node_3; connection node_1; +connection node_4; INSERT INTO t1 VALUES (1),(2),(3),(4),(5); connection node_2; -connection node_3; +connection node_1; expected_error 1 connection node_2; SET GLOBAL wsrep_provider_options = 'gmcast.isolate=0'; -connection node_3; +connection node_1; connection node_2; START SLAVE; -connection node_1; +connection node_4; DROP TABLE t1; connection node_2; STOP SLAVE; @@ -29,5 +30,5 @@ CALL mtr.add_suppression("Slave: Unknown command Error_code: 1047"); CALL mtr.add_suppression("Transport endpoint is not connected"); CALL mtr.add_suppression("Slave SQL: Error in Xid_log_event: Commit could not be completed, 'Deadlock found when trying to get lock; try restarting transaction', Error_code: 1213"); CALL mtr.add_suppression("Slave SQL: Node has dropped from cluster, Error_code: 1047"); -connection node_1; +connection node_4; RESET MASTER; diff --git a/mysql-test/suite/galera/r/galera_as_slave_replication_bundle.result b/mysql-test/suite/galera/r/galera_as_slave_replication_bundle.result deleted file mode 100644 index a86bfd20e2f..00000000000 --- a/mysql-test/suite/galera/r/galera_as_slave_replication_bundle.result +++ /dev/null @@ -1,15 +0,0 @@ -START SLAVE USER='root'; -Warnings: -Note 1759 Sending passwords in plain text without SSL/TLS is extremely insecure. -CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; -INSERT INTO t1 VALUES(1); -INSERT INTO t1 VALUES(2); -INSERT INTO t1 VALUES(3); -INSERT INTO t1 VALUES(4); -INSERT INTO t1 VALUES(5); -SELECT COUNT(*) = 4 FROM t1; -COUNT(*) = 4 -1 -DROP TABLE t1; -STOP SLAVE; -RESET SLAVE ALL; diff --git a/mysql-test/suite/galera/r/galera_autoinc_sst_mariabackup.result b/mysql-test/suite/galera/r/galera_autoinc_sst_mariabackup.result index 00ae490021b..0ba269558d5 100644 --- a/mysql-test/suite/galera/r/galera_autoinc_sst_mariabackup.result +++ b/mysql-test/suite/galera/r/galera_autoinc_sst_mariabackup.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; connection node_2; connection node_1; diff --git a/mysql-test/suite/galera/r/galera_bf_abort.result b/mysql-test/suite/galera/r/galera_bf_abort.result index c2e89965fce..cb4a27c82fd 100644 --- a/mysql-test/suite/galera/r/galera_bf_abort.result +++ b/mysql-test/suite/galera/r/galera_bf_abort.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY, f2 CHAR(6)) ENGINE=InnoDB; connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2; connection node_2; @@ -9,7 +11,7 @@ INSERT INTO t1 VALUES (1,'node_1'); connection node_2a; connection node_2; INSERT INTO t1 VALUES (2, 'node_2'); -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction wsrep_local_aborts_increment 1 DROP TABLE t1; diff --git a/mysql-test/suite/galera/r/galera_bf_abort_at_after_statement.result b/mysql-test/suite/galera/r/galera_bf_abort_at_after_statement.result new file mode 100644 index 00000000000..e44a925baf4 --- /dev/null +++ b/mysql-test/suite/galera/r/galera_bf_abort_at_after_statement.result @@ -0,0 +1,21 @@ +connection node_2; +connection node_1; +connection node_1; +CREATE TABLE t1 (id INT PRIMARY KEY, val INT); +INSERT INTO t1 VALUES (1, 1); +connection node_2; +START TRANSACTION; +SET DEBUG_SYNC = 'wsrep_after_statement_enter SIGNAL blocked WAIT_FOR continue'; +UPDATE t1 SET val=2 WHERE id=1; +connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2; +SET DEBUG_SYNC = 'now WAIT_FOR blocked'; +connection node_1; +UPDATE t1 SET val=3 WHERE id=1; +connection node_2a; +SET DEBUG_SYNC = 'now SIGNAL continue'; +connection node_2; +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction +COMMIT; +SET DEBUG_SYNC = 'RESET'; +connection node_1; +DROP TABLE t1; diff --git a/mysql-test/suite/galera/r/galera_bf_abort_flush_for_export.result b/mysql-test/suite/galera/r/galera_bf_abort_flush_for_export.result index 7b98c807efb..1150a9fff63 100644 --- a/mysql-test/suite/galera/r/galera_bf_abort_flush_for_export.result +++ b/mysql-test/suite/galera/r/galera_bf_abort_flush_for_export.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; connection node_2; SET AUTOCOMMIT=OFF; diff --git a/mysql-test/suite/galera/r/galera_bf_abort_for_update.result b/mysql-test/suite/galera/r/galera_bf_abort_for_update.result index ec8bddb087a..7dd3053b7bb 100644 --- a/mysql-test/suite/galera/r/galera_bf_abort_for_update.result +++ b/mysql-test/suite/galera/r/galera_bf_abort_for_update.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY, f2 INT) ENGINE=InnoDB; INSERT INTO t1 VALUES (1, 10); connection node_1; @@ -10,7 +12,7 @@ UPDATE t1 SET f1 = 2; connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1; connection node_1; COMMIT; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction wsrep_local_bf_aborts_diff 1 connection node_1; @@ -23,7 +25,7 @@ UPDATE t1 SET f2 = 20; connection node_1a; connection node_1; COMMIT; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction wsrep_local_bf_aborts_diff 1 DROP TABLE t1; diff --git a/mysql-test/suite/galera/r/galera_bf_abort_ftwrl.result b/mysql-test/suite/galera/r/galera_bf_abort_ftwrl.result index ae1ca6d2157..43ca6089d78 100644 --- a/mysql-test/suite/galera/r/galera_bf_abort_ftwrl.result +++ b/mysql-test/suite/galera/r/galera_bf_abort_ftwrl.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; connection node_2; SET AUTOCOMMIT=OFF; diff --git a/mysql-test/suite/galera/r/galera_bf_abort_get_lock.result b/mysql-test/suite/galera/r/galera_bf_abort_get_lock.result index 8c6c7b7d7a4..0ef2a1a72c6 100644 --- a/mysql-test/suite/galera/r/galera_bf_abort_get_lock.result +++ b/mysql-test/suite/galera/r/galera_bf_abort_get_lock.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; connection node_2a; SELECT GET_LOCK("foo", 1000); @@ -10,7 +12,7 @@ SELECT GET_LOCK("foo", 1000);; connection node_1; INSERT INTO t1 VALUES (1); connection node_2; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction wsrep_local_aborts_increment 1 DROP TABLE t1; diff --git a/mysql-test/suite/galera/r/galera_bf_abort_group_commit.result b/mysql-test/suite/galera/r/galera_bf_abort_group_commit.result new file mode 100644 index 00000000000..2a2ddd519f4 --- /dev/null +++ b/mysql-test/suite/galera/r/galera_bf_abort_group_commit.result @@ -0,0 +1,685 @@ +SET SESSION wsrep_sync_wait = 0; +galera_sr_bf_abort_at_commit = 0 +after_replicate_sync +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; +SET SESSION wsrep_trx_fragment_size = 1; +SET AUTOCOMMIT=OFF; +INSERT INTO t1 VALUES (1); +SELECT * FROM t1 FOR UPDATE; +f1 +1 +SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; +SET AUTOCOMMIT=ON; +INSERT INTO t1 VALUES (2); +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'dbug=d,after_replicate_sync'; +INSERT INTO t1 VALUES (3); +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'dbug=d,abort_trx_end'; +SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'signal=abort_trx_end'; +SET GLOBAL wsrep_provider_options = 'signal=after_replicate_sync'; +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction +ROLLBACK; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'signal=abort_trx_end'; +SELECT * FROM t1; +f1 +2 +SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 2; +COUNT(*) = 1 +1 +SELECT * FROM t1; +f1 +2 +SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 2; +COUNT(*) = 1 +1 +SELECT COUNT(*) = 0 FROM mysql.wsrep_streaming_log; +COUNT(*) = 0 +1 +SELECT COUNT(*) = 0 FROM mysql.wsrep_streaming_log; +COUNT(*) = 0 +1 +SET AUTOCOMMIT=ON; +SET SESSION wsrep_trx_fragment_size = 0; +DELETE FROM t1; +DROP TABLE t1; +local_monitor_master_enter_sync +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; +SET SESSION wsrep_trx_fragment_size = 1; +SET AUTOCOMMIT=OFF; +INSERT INTO t1 VALUES (1); +SELECT * FROM t1 FOR UPDATE; +f1 +1 +SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; +SET AUTOCOMMIT=ON; +INSERT INTO t1 VALUES (2); +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_master_enter_sync'; +INSERT INTO t1 VALUES (3); +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'dbug=d,abort_trx_end'; +SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'signal=abort_trx_end'; +SET GLOBAL wsrep_provider_options = 'signal=local_monitor_master_enter_sync'; +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction +ROLLBACK; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'signal=abort_trx_end'; +SELECT * FROM t1; +f1 +2 +SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 2; +COUNT(*) = 1 +1 +SELECT * FROM t1; +f1 +2 +SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 2; +COUNT(*) = 1 +1 +SELECT COUNT(*) = 0 FROM mysql.wsrep_streaming_log; +COUNT(*) = 0 +1 +SELECT COUNT(*) = 0 FROM mysql.wsrep_streaming_log; +COUNT(*) = 0 +1 +SET AUTOCOMMIT=ON; +SET SESSION wsrep_trx_fragment_size = 0; +DELETE FROM t1; +DROP TABLE t1; +apply_monitor_master_enter_sync +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; +SET SESSION wsrep_trx_fragment_size = 1; +SET AUTOCOMMIT=OFF; +INSERT INTO t1 VALUES (1); +SELECT * FROM t1 FOR UPDATE; +f1 +1 +SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; +SET AUTOCOMMIT=ON; +INSERT INTO t1 VALUES (2); +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_master_enter_sync'; +INSERT INTO t1 VALUES (3); +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'dbug=d,abort_trx_end'; +SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'signal=abort_trx_end'; +SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_master_enter_sync'; +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction +ROLLBACK; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'signal=abort_trx_end'; +SELECT * FROM t1; +f1 +2 +SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 2; +COUNT(*) = 1 +1 +SELECT * FROM t1; +f1 +2 +SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 2; +COUNT(*) = 1 +1 +SELECT COUNT(*) = 0 FROM mysql.wsrep_streaming_log; +COUNT(*) = 0 +1 +SELECT COUNT(*) = 0 FROM mysql.wsrep_streaming_log; +COUNT(*) = 0 +1 +SET AUTOCOMMIT=ON; +SET SESSION wsrep_trx_fragment_size = 0; +DELETE FROM t1; +DROP TABLE t1; +commit_monitor_master_enter_sync +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; +SET SESSION wsrep_trx_fragment_size = 1; +SET AUTOCOMMIT=OFF; +INSERT INTO t1 VALUES (1); +SELECT * FROM t1 FOR UPDATE; +f1 +1 +SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; +SET AUTOCOMMIT=ON; +INSERT INTO t1 VALUES (2); +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'dbug=d,commit_monitor_master_enter_sync'; +INSERT INTO t1 VALUES (3); +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'dbug=d,abort_trx_end'; +SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'signal=abort_trx_end'; +SET GLOBAL wsrep_provider_options = 'signal=commit_monitor_master_enter_sync'; +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction +ROLLBACK; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'signal=abort_trx_end'; +SELECT * FROM t1; +f1 +2 +SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 2; +COUNT(*) = 1 +1 +SELECT * FROM t1; +f1 +2 +SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 2; +COUNT(*) = 1 +1 +SELECT COUNT(*) = 0 FROM mysql.wsrep_streaming_log; +COUNT(*) = 0 +1 +SELECT COUNT(*) = 0 FROM mysql.wsrep_streaming_log; +COUNT(*) = 0 +1 +SET AUTOCOMMIT=ON; +SET SESSION wsrep_trx_fragment_size = 0; +DELETE FROM t1; +DROP TABLE t1; +galera_sr_bf_abort_at_commit = 1 +after_replicate_sync +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; +SET SESSION wsrep_trx_fragment_size = 1; +SET AUTOCOMMIT=OFF; +INSERT INTO t1 VALUES (1); +SELECT * FROM t1 FOR UPDATE; +f1 +1 +SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; +SET AUTOCOMMIT=ON; +INSERT INTO t1 VALUES (2); +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'dbug=d,after_replicate_sync'; +COMMIT; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'dbug=d,abort_trx_end'; +SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'signal=abort_trx_end'; +SET GLOBAL wsrep_provider_options = 'signal=after_replicate_sync'; +ROLLBACK; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'signal=abort_trx_end'; +SELECT * FROM t1; +f1 +1 +2 +SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 1; +COUNT(*) = 1 +1 +SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 2; +COUNT(*) = 1 +1 +SELECT * FROM t1; +f1 +1 +2 +SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 1; +COUNT(*) = 1 +1 +SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 2; +COUNT(*) = 1 +1 +SELECT COUNT(*) = 0 FROM mysql.wsrep_streaming_log; +COUNT(*) = 0 +1 +SELECT COUNT(*) = 0 FROM mysql.wsrep_streaming_log; +COUNT(*) = 0 +1 +SET AUTOCOMMIT=ON; +SET SESSION wsrep_trx_fragment_size = 0; +DELETE FROM t1; +DROP TABLE t1; +local_monitor_master_enter_sync +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; +SET SESSION wsrep_trx_fragment_size = 1; +SET AUTOCOMMIT=OFF; +INSERT INTO t1 VALUES (1); +SELECT * FROM t1 FOR UPDATE; +f1 +1 +SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; +SET AUTOCOMMIT=ON; +INSERT INTO t1 VALUES (2); +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_master_enter_sync'; +COMMIT; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'dbug=d,abort_trx_end'; +SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'signal=abort_trx_end'; +SET GLOBAL wsrep_provider_options = 'signal=local_monitor_master_enter_sync'; +ROLLBACK; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'signal=abort_trx_end'; +SELECT * FROM t1; +f1 +1 +2 +SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 1; +COUNT(*) = 1 +1 +SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 2; +COUNT(*) = 1 +1 +SELECT * FROM t1; +f1 +1 +2 +SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 1; +COUNT(*) = 1 +1 +SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 2; +COUNT(*) = 1 +1 +SELECT COUNT(*) = 0 FROM mysql.wsrep_streaming_log; +COUNT(*) = 0 +1 +SELECT COUNT(*) = 0 FROM mysql.wsrep_streaming_log; +COUNT(*) = 0 +1 +SET AUTOCOMMIT=ON; +SET SESSION wsrep_trx_fragment_size = 0; +DELETE FROM t1; +DROP TABLE t1; +apply_monitor_master_enter_sync +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; +SET SESSION wsrep_trx_fragment_size = 1; +SET AUTOCOMMIT=OFF; +INSERT INTO t1 VALUES (1); +SELECT * FROM t1 FOR UPDATE; +f1 +1 +SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; +SET AUTOCOMMIT=ON; +INSERT INTO t1 VALUES (2); +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_master_enter_sync'; +COMMIT; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'dbug=d,abort_trx_end'; +SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'signal=abort_trx_end'; +SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_master_enter_sync'; +ROLLBACK; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'signal=abort_trx_end'; +SELECT * FROM t1; +f1 +1 +2 +SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 1; +COUNT(*) = 1 +1 +SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 2; +COUNT(*) = 1 +1 +SELECT * FROM t1; +f1 +1 +2 +SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 1; +COUNT(*) = 1 +1 +SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 2; +COUNT(*) = 1 +1 +SELECT COUNT(*) = 0 FROM mysql.wsrep_streaming_log; +COUNT(*) = 0 +1 +SELECT COUNT(*) = 0 FROM mysql.wsrep_streaming_log; +COUNT(*) = 0 +1 +SET AUTOCOMMIT=ON; +SET SESSION wsrep_trx_fragment_size = 0; +DELETE FROM t1; +DROP TABLE t1; +commit_monitor_master_enter_sync +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; +SET SESSION wsrep_trx_fragment_size = 1; +SET AUTOCOMMIT=OFF; +INSERT INTO t1 VALUES (1); +SELECT * FROM t1 FOR UPDATE; +f1 +1 +SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; +SET AUTOCOMMIT=ON; +INSERT INTO t1 VALUES (2); +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'dbug=d,commit_monitor_master_enter_sync'; +COMMIT; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'dbug=d,abort_trx_end'; +SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'signal=abort_trx_end'; +SET GLOBAL wsrep_provider_options = 'signal=commit_monitor_master_enter_sync'; +ROLLBACK; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'signal=abort_trx_end'; +SELECT * FROM t1; +f1 +1 +2 +SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 1; +COUNT(*) = 1 +1 +SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 2; +COUNT(*) = 1 +1 +SELECT * FROM t1; +f1 +1 +2 +SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 1; +COUNT(*) = 1 +1 +SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 2; +COUNT(*) = 1 +1 +SELECT COUNT(*) = 0 FROM mysql.wsrep_streaming_log; +COUNT(*) = 0 +1 +SELECT COUNT(*) = 0 FROM mysql.wsrep_streaming_log; +COUNT(*) = 0 +1 +SET AUTOCOMMIT=ON; +SET SESSION wsrep_trx_fragment_size = 0; +DELETE FROM t1; +DROP TABLE t1; +galera_sr_bf_abort_at_commit = 1 +after_replicate_sync +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; +SET SESSION wsrep_trx_fragment_size = 0; +SET AUTOCOMMIT=OFF; +INSERT INTO t1 VALUES (1); +SELECT * FROM t1 FOR UPDATE; +f1 +1 +SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; +SET AUTOCOMMIT=ON; +INSERT INTO t1 VALUES (2); +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'dbug=d,after_replicate_sync'; +COMMIT; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'dbug=d,abort_trx_end'; +SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'signal=abort_trx_end'; +SET GLOBAL wsrep_provider_options = 'signal=after_replicate_sync'; +ROLLBACK; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'signal=abort_trx_end'; +SELECT * FROM t1; +f1 +1 +2 +SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 1; +COUNT(*) = 1 +1 +SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 2; +COUNT(*) = 1 +1 +SELECT * FROM t1; +f1 +1 +2 +SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 1; +COUNT(*) = 1 +1 +SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 2; +COUNT(*) = 1 +1 +SELECT COUNT(*) = 0 FROM mysql.wsrep_streaming_log; +COUNT(*) = 0 +1 +SELECT COUNT(*) = 0 FROM mysql.wsrep_streaming_log; +COUNT(*) = 0 +1 +SET AUTOCOMMIT=ON; +SET SESSION wsrep_trx_fragment_size = 0; +DELETE FROM t1; +DROP TABLE t1; +local_monitor_master_enter_sync +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; +SET SESSION wsrep_trx_fragment_size = 0; +SET AUTOCOMMIT=OFF; +INSERT INTO t1 VALUES (1); +SELECT * FROM t1 FOR UPDATE; +f1 +1 +SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; +SET AUTOCOMMIT=ON; +INSERT INTO t1 VALUES (2); +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_master_enter_sync'; +COMMIT; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'dbug=d,abort_trx_end'; +SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'signal=abort_trx_end'; +SET GLOBAL wsrep_provider_options = 'signal=local_monitor_master_enter_sync'; +ROLLBACK; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'signal=abort_trx_end'; +SELECT * FROM t1; +f1 +1 +2 +SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 1; +COUNT(*) = 1 +1 +SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 2; +COUNT(*) = 1 +1 +SELECT * FROM t1; +f1 +1 +2 +SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 1; +COUNT(*) = 1 +1 +SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 2; +COUNT(*) = 1 +1 +SELECT COUNT(*) = 0 FROM mysql.wsrep_streaming_log; +COUNT(*) = 0 +1 +SELECT COUNT(*) = 0 FROM mysql.wsrep_streaming_log; +COUNT(*) = 0 +1 +SET AUTOCOMMIT=ON; +SET SESSION wsrep_trx_fragment_size = 0; +DELETE FROM t1; +DROP TABLE t1; +apply_monitor_master_enter_sync +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; +SET SESSION wsrep_trx_fragment_size = 0; +SET AUTOCOMMIT=OFF; +INSERT INTO t1 VALUES (1); +SELECT * FROM t1 FOR UPDATE; +f1 +1 +SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; +SET AUTOCOMMIT=ON; +INSERT INTO t1 VALUES (2); +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_master_enter_sync'; +COMMIT; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'dbug=d,abort_trx_end'; +SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'signal=abort_trx_end'; +SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_master_enter_sync'; +ROLLBACK; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'signal=abort_trx_end'; +SELECT * FROM t1; +f1 +1 +2 +SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 1; +COUNT(*) = 1 +1 +SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 2; +COUNT(*) = 1 +1 +SELECT * FROM t1; +f1 +1 +2 +SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 1; +COUNT(*) = 1 +1 +SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 2; +COUNT(*) = 1 +1 +SELECT COUNT(*) = 0 FROM mysql.wsrep_streaming_log; +COUNT(*) = 0 +1 +SELECT COUNT(*) = 0 FROM mysql.wsrep_streaming_log; +COUNT(*) = 0 +1 +SET AUTOCOMMIT=ON; +SET SESSION wsrep_trx_fragment_size = 0; +DELETE FROM t1; +DROP TABLE t1; +commit_monitor_master_enter_sync +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; +SET SESSION wsrep_trx_fragment_size = 0; +SET AUTOCOMMIT=OFF; +INSERT INTO t1 VALUES (1); +SELECT * FROM t1 FOR UPDATE; +f1 +1 +SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; +SET AUTOCOMMIT=ON; +INSERT INTO t1 VALUES (2); +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'dbug=d,commit_monitor_master_enter_sync'; +COMMIT; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'dbug=d,abort_trx_end'; +SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'signal=abort_trx_end'; +SET GLOBAL wsrep_provider_options = 'signal=commit_monitor_master_enter_sync'; +ROLLBACK; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'signal=abort_trx_end'; +SELECT * FROM t1; +f1 +1 +2 +SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 1; +COUNT(*) = 1 +1 +SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 2; +COUNT(*) = 1 +1 +SELECT * FROM t1; +f1 +1 +2 +SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 1; +COUNT(*) = 1 +1 +SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 2; +COUNT(*) = 1 +1 +SELECT COUNT(*) = 0 FROM mysql.wsrep_streaming_log; +COUNT(*) = 0 +1 +SELECT COUNT(*) = 0 FROM mysql.wsrep_streaming_log; +COUNT(*) = 0 +1 +SET AUTOCOMMIT=ON; +SET SESSION wsrep_trx_fragment_size = 0; +DELETE FROM t1; +DROP TABLE t1; +CALL mtr.add_suppression("WSREP: fragment replication failed: 1"); diff --git a/mysql-test/suite/galera/r/galera_bf_abort_lock_table.result b/mysql-test/suite/galera/r/galera_bf_abort_lock_table.result index 81b5816ddbe..e7882e43b6a 100644 --- a/mysql-test/suite/galera/r/galera_bf_abort_lock_table.result +++ b/mysql-test/suite/galera/r/galera_bf_abort_lock_table.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; connection node_2; SET AUTOCOMMIT=OFF; diff --git a/mysql-test/suite/galera/r/galera_bf_abort_shutdown.result b/mysql-test/suite/galera/r/galera_bf_abort_shutdown.result new file mode 100644 index 00000000000..fa2a5c373f2 --- /dev/null +++ b/mysql-test/suite/galera/r/galera_bf_abort_shutdown.result @@ -0,0 +1,12 @@ +connection node_2; +connection node_1; +connection node_1; +connection node_2; +connection node_1; +CREATE TABLE t1 (f1 INT PRIMARY KEY); +connection node_2; +SET DEBUG_SYNC = 'wsrep_before_certification WAIT_FOR continue'; +INSERT INTO t1 VALUES (1); +connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2; +connection node_1; +DROP TABLE t1; diff --git a/mysql-test/suite/galera/r/galera_bf_abort_sleep.result b/mysql-test/suite/galera/r/galera_bf_abort_sleep.result index 9cd6abad5a1..00d6600d264 100644 --- a/mysql-test/suite/galera/r/galera_bf_abort_sleep.result +++ b/mysql-test/suite/galera/r/galera_bf_abort_sleep.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; connection node_2; SET AUTOCOMMIT=OFF; @@ -6,7 +8,7 @@ SELECT SLEEP(1000);; connection node_1; INSERT INTO t1 VALUES (1); connection node_2; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction wsrep_local_aborts_increment 1 DROP TABLE t1; diff --git a/mysql-test/suite/galera/r/galera_bf_background_statistics.result b/mysql-test/suite/galera/r/galera_bf_background_statistics.result index c2c3fce2b14..a8c8842b8e1 100644 --- a/mysql-test/suite/galera/r/galera_bf_background_statistics.result +++ b/mysql-test/suite/galera/r/galera_bf_background_statistics.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; SELECT @@innodb_stats_persistent; @@innodb_stats_persistent 1 @@ -27,7 +29,7 @@ SELECT SLEEP(1000);; connection node_1; ALTER TABLE t1 CHANGE f2 f2 INTEGER NOT NULL DEFAULT 1; connection node_2; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction wsrep_local_aborts_increment 1 DROP TABLE t1; diff --git a/mysql-test/suite/galera/r/galera_bf_kill.result b/mysql-test/suite/galera/r/galera_bf_kill.result new file mode 100644 index 00000000000..3738e8c9684 --- /dev/null +++ b/mysql-test/suite/galera/r/galera_bf_kill.result @@ -0,0 +1,73 @@ +connection node_2; +connection node_1; +connection node_2; +CREATE TABLE t1(a int not null primary key auto_increment,b int) engine=InnoDB; +insert into t1 values (NULL,1); +connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2; +connection node_2a; +begin; +update t1 set a = 5; +connection node_2; +select * from t1; +a b +2 1 +disconnect node_2a; +connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2; +connection node_2a; +begin; +update t1 set a =5; +connection node_2; +select * from t1; +a b +2 1 +disconnect node_2a; +connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2; +connection node_2a; +begin; +update t1 set a =5, b=2; +connection node_2; +ALTER TABLE t1 ADD UNIQUE KEY b1(b); +ALTER TABLE t1 DROP KEY b1; +select * from t1; +a b +2 1 +disconnect node_2a; +connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2; +connection node_2a; +begin; +update t1 set a =5, b=2; +connect node_2b, 127.0.0.1, root, , test, $NODE_MYPORT_2; +connection node_2b; +begin; +update t1 set a =6, b=7; +connection node_2; +ALTER TABLE t1 ADD UNIQUE KEY b2(b); +ALTER TABLE t1 DROP KEY b2; +select * from t1; +a b +2 1 +disconnect node_2a; +disconnect node_2b; +connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2; +connection node_2a; +SET SESSION wsrep_on=OFF; +begin; +update t1 set a =5, b=2; +connection node_2; +ALTER TABLE t1 ADD UNIQUE KEY b3(b); +select * from t1; +a b +2 1 +disconnect node_2a; +connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2; +connection node_2a; +SET SESSION wsrep_on=OFF; +begin; +update t1 set a =5, b=2; +connection node_2; +select * from t1; +a b +2 1 +disconnect node_2a; +connection node_1; +drop table t1; diff --git a/mysql-test/suite/galera/r/galera_bf_kill_debug.result b/mysql-test/suite/galera/r/galera_bf_kill_debug.result new file mode 100644 index 00000000000..c3eae243f47 --- /dev/null +++ b/mysql-test/suite/galera/r/galera_bf_kill_debug.result @@ -0,0 +1,54 @@ +connection node_2; +connection node_1; +connection node_2; +CREATE TABLE t1(a int not null primary key auto_increment,b int) engine=InnoDB; +insert into t1 values (NULL,1); +connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2; +connection node_2a; +truncate t1; +insert into t1 values (1,0); +begin; +update t1 set b=2 where a=1; +connection node_2; +set session wsrep_sync_wait=0; +connect node_2b, 127.0.0.1, root, , test, $NODE_MYPORT_2; +connection node_2b; +SET GLOBAL debug_dbug = "d,sync.before_wsrep_thd_abort"; +connection node_1; +select * from t1; +a b +1 0 +update t1 set b= 1 where a=1; +connection node_2b; +SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.before_wsrep_thd_abort_reached"; +connection node_2; +SET DEBUG_SYNC= 'before_awake_no_mutex SIGNAL awake_reached WAIT_FOR continue_kill'; +connection node_2b; +SET DEBUG_SYNC='now WAIT_FOR awake_reached'; +SET GLOBAL debug_dbug = ""; +SET DEBUG_SYNC = "now SIGNAL signal.before_wsrep_thd_abort"; +SET DEBUG_SYNC = "now SIGNAL continue_kill"; +connection node_2; +connection node_2a; +select * from t1; +connection node_2; +SET DEBUG_SYNC = "RESET"; +drop table t1; +disconnect node_2a; +connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2; +connection node_2a; +CREATE TABLE t1 (i int primary key); +SET DEBUG_SYNC = "before_wsrep_ordered_commit SIGNAL bwoc_reached WAIT_FOR bwoc_continue"; +INSERT INTO t1 VALUES (1); +connection node_2; +SET DEBUG_SYNC = "now WAIT_FOR bwoc_reached"; +SET DEBUG_SYNC = "now SIGNAL bwoc_continue"; +SET DEBUG_SYNC='RESET'; +connection node_2a; +connection node_2; +select * from t1; +i +1 +disconnect node_2a; +connection node_1; +drop table t1; diff --git a/mysql-test/suite/galera/r/galera_bf_lock_wait.result b/mysql-test/suite/galera/r/galera_bf_lock_wait.result index 0b22f963b29..757fbf50cad 100644 --- a/mysql-test/suite/galera/r/galera_bf_lock_wait.result +++ b/mysql-test/suite/galera/r/galera_bf_lock_wait.result @@ -1,4 +1,9 @@ +connection node_2; +connection node_1; +connection node_2; +call mtr.add_suppression("WSREP: Trying to continue unpaused monitor"); connection node_1; +call mtr.add_suppression("WSREP: Trying to continue unpaused monitor"); CREATE TABLE t1 ENGINE=InnoDB select 1 as a, 1 as b union select 2, 2; ALTER TABLE t1 add primary key(a); CREATE PROCEDURE p1(repeat_count INT) diff --git a/mysql-test/suite/galera/r/galera_binlog_cache_size.result b/mysql-test/suite/galera/r/galera_binlog_cache_size.result index 6aac74ab5f0..c5a09074537 100644 --- a/mysql-test/suite/galera/r/galera_binlog_cache_size.result +++ b/mysql-test/suite/galera/r/galera_binlog_cache_size.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 VARCHAR(767)) ENGINE=InnoDB; CREATE TABLE ten (f1 INTEGER); INSERT INTO ten VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10); diff --git a/mysql-test/suite/galera/r/galera_binlog_checksum.result b/mysql-test/suite/galera/r/galera_binlog_checksum.result index 7303aa61122..3ef7cf5c41e 100644 --- a/mysql-test/suite/galera/r/galera_binlog_checksum.result +++ b/mysql-test/suite/galera/r/galera_binlog_checksum.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INT PRIMARY KEY) ENGINE=InnoDB; INSERT INTO t1 VALUES (1); connection node_2; diff --git a/mysql-test/suite/galera/r/galera_binlog_event_max_size_max.result b/mysql-test/suite/galera/r/galera_binlog_event_max_size_max.result index 46582ff5c4b..b513c491bb0 100644 --- a/mysql-test/suite/galera/r/galera_binlog_event_max_size_max.result +++ b/mysql-test/suite/galera/r/galera_binlog_event_max_size_max.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE ten (f1 INTEGER); INSERT INTO ten VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10); CREATE TABLE t1 (f1 VARCHAR(1000)); diff --git a/mysql-test/suite/galera/r/galera_binlog_event_max_size_min.result b/mysql-test/suite/galera/r/galera_binlog_event_max_size_min.result index 7b88af5d5af..6c2279bece0 100644 --- a/mysql-test/suite/galera/r/galera_binlog_event_max_size_min.result +++ b/mysql-test/suite/galera/r/galera_binlog_event_max_size_min.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 VARCHAR(1000)); INSERT INTO t1 VALUES (REPEAT('x', 1000)); connection node_2; diff --git a/mysql-test/suite/galera/r/galera_binlog_row_image.result b/mysql-test/suite/galera/r/galera_binlog_row_image.result index d54db61105e..20e6bd9fab8 100644 --- a/mysql-test/suite/galera/r/galera_binlog_row_image.result +++ b/mysql-test/suite/galera/r/galera_binlog_row_image.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; SET SESSION binlog_row_image=minimal; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; diff --git a/mysql-test/suite/galera/r/galera_binlog_stmt_autoinc.result b/mysql-test/suite/galera/r/galera_binlog_stmt_autoinc.result index 78b40228eb0..a09ad6b97b9 100644 --- a/mysql-test/suite/galera/r/galera_binlog_stmt_autoinc.result +++ b/mysql-test/suite/galera/r/galera_binlog_stmt_autoinc.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; connection node_2; connection node_2; diff --git a/mysql-test/suite/galera/r/galera_change_user.result b/mysql-test/suite/galera/r/galera_change_user.result new file mode 100644 index 00000000000..3be9c956a28 --- /dev/null +++ b/mysql-test/suite/galera/r/galera_change_user.result @@ -0,0 +1,14 @@ +connection node_2; +connection node_1; +connection node_1; +CREATE USER user1; +CREATE TABLE t1 (f1 INT PRIMARY KEY) ENGINE=InnoDB; +connect node_1a, 127.0.0.1, root, , test, $MYPORT_NODE_1; +disconnect node_1a; +connect node_1a, 127.0.0.1, root, , test, $MYPORT_NODE_1; +START TRANSACTION; +INSERT INTO t1 VALUES (1); +disconnect node_1a; +connection node_1; +DROP TABLE t1; +DROP USER user1; diff --git a/mysql-test/suite/galera/r/galera_commit_empty.result b/mysql-test/suite/galera/r/galera_commit_empty.result new file mode 100644 index 00000000000..75b94c54b1e --- /dev/null +++ b/mysql-test/suite/galera/r/galera_commit_empty.result @@ -0,0 +1,15 @@ +connection node_2; +connection node_1; +START TRANSACTION; +COMMIT; +START TRANSACTION; +COMMIT; +START TRANSACTION READ ONLY; +COMMIT; +START TRANSACTION; +COMMIT; +START TRANSACTION; +START TRANSACTION; +COMMIT; +wsrep_last_committed_diff +1 diff --git a/mysql-test/suite/galera/r/galera_concurrent_ctas.result b/mysql-test/suite/galera/r/galera_concurrent_ctas.result index 8a3ac1ae0d3..39c55277c52 100644 --- a/mysql-test/suite/galera/r/galera_concurrent_ctas.result +++ b/mysql-test/suite/galera/r/galera_concurrent_ctas.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; disconnect node_2; disconnect node_1; # End of test diff --git a/mysql-test/suite/galera/r/galera_create_function.result b/mysql-test/suite/galera/r/galera_create_function.result index 9118c2864f3..85fa85d81f1 100644 --- a/mysql-test/suite/galera/r/galera_create_function.result +++ b/mysql-test/suite/galera/r/galera_create_function.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; CREATE USER 'user1'; CREATE diff --git a/mysql-test/suite/galera/r/galera_create_procedure.result b/mysql-test/suite/galera/r/galera_create_procedure.result index 98dc4a856dc..24a0bd66b39 100644 --- a/mysql-test/suite/galera/r/galera_create_procedure.result +++ b/mysql-test/suite/galera/r/galera_create_procedure.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; CREATE USER 'user1'; CREATE TABLE t1 (f1 INTEGER); diff --git a/mysql-test/suite/galera/r/galera_create_table_as_select.result b/mysql-test/suite/galera/r/galera_create_table_as_select.result new file mode 100644 index 00000000000..6f65ee99f0a --- /dev/null +++ b/mysql-test/suite/galera/r/galera_create_table_as_select.result @@ -0,0 +1,103 @@ +connection node_2; +connection node_1; +connection node_1; +SET SESSION default_storage_engine=InnoDB; +CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB; +CREATE TABLE t2 (f1 INTEGER) ENGINE=InnoDB; +CREATE TABLE t1 AS SELECT * FROM t2; +ERROR 42S01: Table 't1' already exists +DROP TABLE t1,t2; +CREATE TABLE t1 AS SELECT * FROM t2; +ERROR 42S02: Table 'test.t2' doesn't exist +CREATE TABLE t1 AS SELECT 1 FROM DUAL; +connection node_2; +SELECT COUNT(*) = 1 FROM t1; +COUNT(*) = 1 +1 +connection node_1; +DROP TABLE t1; +connection node_1; +CREATE TABLE t2 (f1 INTEGER) ENGINE=InnoDB; +CREATE TABLE t1 AS SELECT * FROM t2; +connection node_2; +SELECT COUNT(*) = 0 FROM t1; +COUNT(*) = 0 +1 +connection node_1; +DROP TABLE t1,t2; +CREATE TABLE t2 (f1 INTEGER) ENGINE=MyISAM; +INSERT INTO t2 VALUES (1),(2),(3),(4),(5); +CREATE TABLE t1 AS SELECT * FROM t2; +SELECT COUNT(*) = 5 FROM t1; +COUNT(*) = 5 +1 +connection node_2; +SELECT COUNT(*) = 5 FROM t1; +COUNT(*) = 5 +1 +connection node_1; +DROP TABLE t1,t2; +connection node_1; +CREATE TABLE t2 (f1 INTEGER) ENGINE=InnoDB; +INSERT INTO t2 VALUES (1),(2),(3),(4),(5); +CREATE TABLE t1 AS SELECT MAX(f1) AS f1 FROM t2; +connection node_2; +SELECT COUNT(*) = 1 FROM t1; +COUNT(*) = 1 +1 +SELECT f1 = 5 FROM t1; +f1 = 5 +1 +connection node_1; +DROP TABLE t1,t2; +connection node_1; +CREATE PROCEDURE sp1 () +BEGIN +CREATE TABLE t2 (f1 INTEGER) ENGINE=InnoDB; +INSERT INTO t2 VALUES (1),(2),(3),(4),(5); +CREATE TABLE t1 AS SELECT * FROM t2; +END| +CALL sp1(); +SELECT COUNT(*) = 5 FROM t1; +COUNT(*) = 5 +1 +connection node_2; +SELECT COUNT(*) = 5 FROM t1; +COUNT(*) = 5 +1 +connection node_1; +DROP TABLE t1, t2; +DROP PROCEDURE sp1; +connection node_1; +CREATE TABLE t2 (f1 INTEGER) ENGINE=InnoDB; +INSERT INTO t2 VALUES (1),(2),(3),(4),(5); +PREPARE stmt FROM 'CREATE TABLE t1 AS SELECT * FROM t2'; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; +DROP TABLE t1, t2; +connection node_1; +CREATE TABLE t2 (f1 INTEGER) ENGINE=InnoDB; +INSERT INTO t2 VALUES (1),(2),(3),(4),(5); +connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1; +LOCK TABLE t2 WRITE; +connection node_1; +CREATE TABLE t1 AS SELECT * FROM t2;; +connection node_2; +SELECT COUNT(*) = 5 FROM t2; +COUNT(*) = 5 +1 +CREATE TABLE t1 AS SELECT * FROM t2; +connection node_1a; +UNLOCK TABLES; +connection node_1; +Got one of the listed errors +DROP TABLE t1, t2; +CREATE TABLE t2 (f1 INTEGER) ENGINE=InnoDB; +INSERT INTO t2 VALUES (1),(2),(3),(4),(5); +CREATE TEMPORARY TABLE t1 AS SELECT * FROM t2; +connection node_2; +SELECT * FROM t1; +ERROR 42S02: Table 'test.t1' doesn't exist +CALL mtr.add_suppression("Slave SQL: Error 'Unknown table 'test.t1'' on query"); +connection node_1; +DROP TABLE t1, t2; diff --git a/mysql-test/suite/galera/r/galera_create_table_like.result b/mysql-test/suite/galera/r/galera_create_table_like.result index 131ac311bca..82543331ad5 100644 --- a/mysql-test/suite/galera/r/galera_create_table_like.result +++ b/mysql-test/suite/galera/r/galera_create_table_like.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE SCHEMA schema1; CREATE SCHEMA schema2; USE schema1; diff --git a/mysql-test/suite/galera/r/galera_create_trigger.result b/mysql-test/suite/galera/r/galera_create_trigger.result index d07a007543e..56b35150d87 100644 --- a/mysql-test/suite/galera/r/galera_create_trigger.result +++ b/mysql-test/suite/galera/r/galera_create_trigger.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE definer_root (f1 INTEGER, trigger_user VARCHAR(100)) ENGINE=InnoDB; CREATE TABLE definer_user (f1 INTEGER, trigger_user VARCHAR(100)) ENGINE=InnoDB; CREATE TABLE definer_current_user (f1 INTEGER, trigger_user VARCHAR(100)) ENGINE=InnoDB; diff --git a/mysql-test/suite/galera/r/galera_ddl_multiline.result b/mysql-test/suite/galera/r/galera_ddl_multiline.result index 339a91125eb..9e70731a62b 100644 --- a/mysql-test/suite/galera/r/galera_ddl_multiline.result +++ b/mysql-test/suite/galera/r/galera_ddl_multiline.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB; CREATE TABLE t2 (f1 INTEGER) ENGINE=InnoDB; diff --git a/mysql-test/suite/galera/r/galera_defaults.result b/mysql-test/suite/galera/r/galera_defaults.result index e7a2508c0f3..6dd5258ff6d 100644 --- a/mysql-test/suite/galera/r/galera_defaults.result +++ b/mysql-test/suite/galera/r/galera_defaults.result @@ -1,6 +1,8 @@ -SELECT COUNT(*) = 43 FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME LIKE 'wsrep_%'; -COUNT(*) = 43 -0 +connection node_2; +connection node_1; +SELECT COUNT(*) `expect 48` FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME LIKE 'wsrep_%'; +expect 48 +49 SELECT VARIABLE_NAME, VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME LIKE 'wsrep_%' @@ -25,14 +27,15 @@ WSREP_CLUSTER_ADDRESS gcomm:// WSREP_CLUSTER_NAME my_wsrep_cluster WSREP_CONVERT_LOCK_TO_TRX OFF WSREP_DBUG_OPTION -WSREP_DEBUG OFF +WSREP_DEBUG NONE WSREP_DESYNC OFF WSREP_DIRTY_READS OFF WSREP_DRUPAL_282555_WORKAROUND OFF WSREP_FORCED_BINLOG_FORMAT NONE WSREP_GTID_DOMAIN_ID 0 WSREP_GTID_MODE OFF -WSREP_LOAD_DATA_SPLITTING ON +WSREP_IGNORE_APPLY_ERRORS 7 +WSREP_LOAD_DATA_SPLITTING OFF WSREP_LOG_CONFLICTS OFF WSREP_MAX_WS_ROWS 0 WSREP_MAX_WS_SIZE 2147483647 @@ -48,8 +51,11 @@ WSREP_RETRY_AUTOCOMMIT 1 WSREP_SLAVE_FK_CHECKS ON WSREP_SLAVE_THREADS 1 WSREP_SLAVE_UK_CHECKS OFF +WSREP_SR_STORE table WSREP_SST_AUTH WSREP_SST_DONOR WSREP_SST_DONOR_REJECTS_QUERIES OFF WSREP_SST_METHOD rsync WSREP_SYNC_WAIT 15 +WSREP_TRX_FRAGMENT_SIZE 0 +WSREP_TRX_FRAGMENT_UNIT bytes diff --git a/mysql-test/suite/galera/r/galera_delete_limit.result b/mysql-test/suite/galera/r/galera_delete_limit.result index f6fb2e56346..9898bfcf169 100644 --- a/mysql-test/suite/galera/r/galera_delete_limit.result +++ b/mysql-test/suite/galera/r/galera_delete_limit.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; CREATE TABLE ten (f1 INTEGER) Engine=InnoDB; INSERT INTO ten VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10); diff --git a/mysql-test/suite/galera/r/galera_desync_overlapped.result b/mysql-test/suite/galera/r/galera_desync_overlapped.result index f9920e7f7ad..e3f40d444ee 100644 --- a/mysql-test/suite/galera/r/galera_desync_overlapped.result +++ b/mysql-test/suite/galera/r/galera_desync_overlapped.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; CREATE TABLE ten (f1 INTEGER); INSERT INTO ten VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); diff --git a/mysql-test/suite/galera/r/galera_drop_database.result b/mysql-test/suite/galera/r/galera_drop_database.result index 914cdffceed..6ab4b3d0c7b 100644 --- a/mysql-test/suite/galera/r/galera_drop_database.result +++ b/mysql-test/suite/galera/r/galera_drop_database.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; connection node_2; CREATE DATABASE fts; diff --git a/mysql-test/suite/galera/r/galera_drop_multi.result b/mysql-test/suite/galera/r/galera_drop_multi.result index 7793ef93b90..1ff8afe3219 100644 --- a/mysql-test/suite/galera/r/galera_drop_multi.result +++ b/mysql-test/suite/galera/r/galera_drop_multi.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INTEGER) ENGINE=MyISAM; CREATE TEMPORARY TABLE t2 (f1 INTEGER) ENGINE=MyISAM; CREATE TABLE t3 (f1 INTEGER) ENGINE=InnoDB; diff --git a/mysql-test/suite/galera/r/galera_encrypt_tmp_files.result b/mysql-test/suite/galera/r/galera_encrypt_tmp_files.result index 38480d186ba..fdfca3316b1 100644 --- a/mysql-test/suite/galera/r/galera_encrypt_tmp_files.result +++ b/mysql-test/suite/galera/r/galera_encrypt_tmp_files.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; SELECT VARIABLE_VALUE = 'Synced' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_state_comment'; VARIABLE_VALUE = 'Synced' 1 diff --git a/mysql-test/suite/galera/r/galera_enum.result b/mysql-test/suite/galera/r/galera_enum.result index a2a6317e2a0..40fc6931f6a 100644 --- a/mysql-test/suite/galera/r/galera_enum.result +++ b/mysql-test/suite/galera/r/galera_enum.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; CREATE TABLE t1 (f1 ENUM('', 'one', 'two'), KEY (f1)) ENGINE=InnoDB; INSERT INTO t1 VALUES (''); @@ -38,7 +40,7 @@ connection node_1; COMMIT; connection node_2; COMMIT; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction connection node_1; SELECT COUNT(*) FROM t1 WHERE f1 = 'three'; COUNT(*) diff --git a/mysql-test/suite/galera/r/galera_events.result b/mysql-test/suite/galera/r/galera_events.result index e925e62cb91..373f063c2bd 100644 --- a/mysql-test/suite/galera/r/galera_events.result +++ b/mysql-test/suite/galera/r/galera_events.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; CREATE EVENT event1 ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO SELECT 1; Warnings: diff --git a/mysql-test/suite/galera/r/galera_events2.result b/mysql-test/suite/galera/r/galera_events2.result index 36441e15f7d..cd44579af90 100644 --- a/mysql-test/suite/galera/r/galera_events2.result +++ b/mysql-test/suite/galera/r/galera_events2.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; connection node_2; connection node_1; diff --git a/mysql-test/suite/galera/r/galera_fk_cascade_delete.result b/mysql-test/suite/galera/r/galera_fk_cascade_delete.result index a6c6504dc39..16db26c3c6b 100644 --- a/mysql-test/suite/galera/r/galera_fk_cascade_delete.result +++ b/mysql-test/suite/galera/r/galera_fk_cascade_delete.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; # # test phase with cascading foreign key through 3 tables # diff --git a/mysql-test/suite/galera/r/galera_fk_cascade_delete_debug.result b/mysql-test/suite/galera/r/galera_fk_cascade_delete_debug.result index 89613b2856a..bd76692b27c 100644 --- a/mysql-test/suite/galera/r/galera_fk_cascade_delete_debug.result +++ b/mysql-test/suite/galera/r/galera_fk_cascade_delete_debug.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; # # test phase with foreign key of varchar type # @@ -44,6 +46,7 @@ ON DELETE CASCADE ) ENGINE=InnoDB; INSERT INTO parent VALUES (1); INSERT INTO child VALUES (1,0,1); +connection node_2; connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1; SET GLOBAL debug_dbug = "d,sync.wsrep_apply_cb"; connection node_2; diff --git a/mysql-test/suite/galera/r/galera_fk_cascade_update.result b/mysql-test/suite/galera/r/galera_fk_cascade_update.result index 5fe8b532473..5294826a8f9 100644 --- a/mysql-test/suite/galera/r/galera_fk_cascade_update.result +++ b/mysql-test/suite/galera/r/galera_fk_cascade_update.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE grandparent ( id INT NOT NULL PRIMARY KEY ) ENGINE=InnoDB; diff --git a/mysql-test/suite/galera/r/galera_fk_conflict.result b/mysql-test/suite/galera/r/galera_fk_conflict.result index a08aa30a82e..f9f151abce4 100644 --- a/mysql-test/suite/galera/r/galera_fk_conflict.result +++ b/mysql-test/suite/galera/r/galera_fk_conflict.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE parent ( id INT PRIMARY KEY, KEY (id) @@ -22,6 +24,6 @@ connection node_1; COMMIT; connection node_2; COMMIT; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction DROP TABLE child; DROP TABLE parent; diff --git a/mysql-test/suite/galera/r/galera_fk_mismatch.result b/mysql-test/suite/galera/r/galera_fk_mismatch.result index bdc60c9e099..a030b1214c5 100644 --- a/mysql-test/suite/galera/r/galera_fk_mismatch.result +++ b/mysql-test/suite/galera/r/galera_fk_mismatch.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE parent ( id1 INT, id2 INT, diff --git a/mysql-test/suite/galera/r/galera_fk_multicolumn.result b/mysql-test/suite/galera/r/galera_fk_multicolumn.result index f5b6aa23692..b626d963af8 100644 --- a/mysql-test/suite/galera/r/galera_fk_multicolumn.result +++ b/mysql-test/suite/galera/r/galera_fk_multicolumn.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t0 ( f1 INT PRIMARY KEY, f2 INT UNIQUE diff --git a/mysql-test/suite/galera/r/galera_fk_multitable.result b/mysql-test/suite/galera/r/galera_fk_multitable.result index 04ff7adc3e9..83e1491ab34 100644 --- a/mysql-test/suite/galera/r/galera_fk_multitable.result +++ b/mysql-test/suite/galera/r/galera_fk_multitable.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t0 ( f0 INT PRIMARY KEY ); diff --git a/mysql-test/suite/galera/r/galera_fk_no_pk.result b/mysql-test/suite/galera/r/galera_fk_no_pk.result index e7b5f0b2b64..622e63dbb8f 100644 --- a/mysql-test/suite/galera/r/galera_fk_no_pk.result +++ b/mysql-test/suite/galera/r/galera_fk_no_pk.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE parent ( id INT, KEY (id) diff --git a/mysql-test/suite/galera/r/galera_fk_selfreferential.result b/mysql-test/suite/galera/r/galera_fk_selfreferential.result index 3b4dbf2a8e9..9a64521e7b8 100644 --- a/mysql-test/suite/galera/r/galera_fk_selfreferential.result +++ b/mysql-test/suite/galera/r/galera_fk_selfreferential.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 ( f1 INT NOT NULL PRIMARY KEY, f2 INT, diff --git a/mysql-test/suite/galera/r/galera_fk_setnull.result b/mysql-test/suite/galera/r/galera_fk_setnull.result index d4f20fe60a3..afb3fc3b9b8 100644 --- a/mysql-test/suite/galera/r/galera_fk_setnull.result +++ b/mysql-test/suite/galera/r/galera_fk_setnull.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE parent ( id INT NOT NULL, PRIMARY KEY (id) diff --git a/mysql-test/suite/galera/r/galera_flush_local.result b/mysql-test/suite/galera/r/galera_flush_local.result index a8e798a693d..146833fc3c8 100644 --- a/mysql-test/suite/galera/r/galera_flush_local.result +++ b/mysql-test/suite/galera/r/galera_flush_local.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; DROP TABLE IF EXISTS t1, t2, x1, x2; connection node_1; CREATE TABLE t1 (f1 INTEGER); @@ -45,7 +47,9 @@ UNLOCK TABLES; FLUSH LOCAL TABLES t1; ANALYZE LOCAL TABLE t1, t2; Table Op Msg_type Msg_text +test.t1 analyze status Engine-independent statistics collected test.t1 analyze status OK +test.t2 analyze status Engine-independent statistics collected test.t2 analyze status OK OPTIMIZE LOCAL TABLE t1, t2; Table Op Msg_type Msg_text @@ -120,7 +124,9 @@ UNLOCK TABLES; FLUSH TABLES t1; ANALYZE TABLE t1, t2; Table Op Msg_type Msg_text +test.t1 analyze status Engine-independent statistics collected test.t1 analyze status OK +test.t2 analyze status Engine-independent statistics collected test.t2 analyze status OK OPTIMIZE TABLE t1, t2; Table Op Msg_type Msg_text diff --git a/mysql-test/suite/galera/r/galera_forced_binlog_format.result b/mysql-test/suite/galera/r/galera_forced_binlog_format.result index 3653a311d83..4132d32c418 100644 --- a/mysql-test/suite/galera/r/galera_forced_binlog_format.result +++ b/mysql-test/suite/galera/r/galera_forced_binlog_format.result @@ -1,7 +1,10 @@ +connection node_2; connection node_1; -SET SESSION wsrep_on=OFF; +connection node_1; +SET GLOBAL wsrep_on=OFF; RESET MASTER; -SET SESSION wsrep_on=ON; +SET GLOBAL wsrep_on=ON; +FLUSH BINARY LOGS; SET SESSION binlog_format = 'STATEMENT'; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; INSERT INTO t1 VALUES (1); @@ -11,18 +14,7 @@ SHOW BINLOG EVENTS IN 'mysqld-bin.000001' FROM 256; Log_name Pos Event_type Server_id End_log_pos Info mysqld-bin.000001 <Pos> Gtid_list 1 <End_log_pos> [] mysqld-bin.000001 <Pos> Binlog_checkpoint 1 <End_log_pos> mysqld-bin.000001 -mysqld-bin.000001 <Pos> Gtid 1 <End_log_pos> GTID 0-1-1 -mysqld-bin.000001 <Pos> Query 1 <End_log_pos> use `test`; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB -mysqld-bin.000001 <Pos> Gtid 1 <End_log_pos> BEGIN GTID 0-1-2 -mysqld-bin.000001 <Pos> Annotate_rows 1 <End_log_pos> INSERT INTO t1 VALUES (1) -mysqld-bin.000001 <Pos> Table_map 1 <End_log_pos> table_id: ### (test.t1) -mysqld-bin.000001 <Pos> Write_rows_v1 1 <End_log_pos> table_id: ### flags: STMT_END_F -mysqld-bin.000001 <Pos> Xid 1 <End_log_pos> COMMIT /* xid=### */ -mysqld-bin.000001 <Pos> Gtid 1 <End_log_pos> BEGIN GTID 0-1-3 -mysqld-bin.000001 <Pos> Annotate_rows 1 <End_log_pos> INSERT INTO t1 VALUES (2) -mysqld-bin.000001 <Pos> Table_map 1 <End_log_pos> table_id: ### (test.t1) -mysqld-bin.000001 <Pos> Write_rows_v1 1 <End_log_pos> table_id: ### flags: STMT_END_F -mysqld-bin.000001 <Pos> Xid 1 <End_log_pos> COMMIT /* xid=### */ +mysqld-bin.000001 <Pos> Rotate 1 <End_log_pos> mysqld-bin.000002;pos=4 DROP TABLE t1; # # MDEV-9401: wsrep_forced_binlog_format with binlog causes crash @@ -41,6 +33,4 @@ GRANT ALL PRIVILEGES ON `testdb_9401`.`t1` TO `dummy`@`localhost` REVOKE ALL PRIVILEGES, GRANT OPTION FROM dummy@localhost; DROP USER dummy@localhost; DROP DATABASE testdb_9401; -disconnect node_2; -disconnect node_1; # End of tests diff --git a/mysql-test/suite/galera/r/galera_ftwrl.result b/mysql-test/suite/galera/r/galera_ftwrl.result index 0565781c051..eae8028a7f4 100644 --- a/mysql-test/suite/galera/r/galera_ftwrl.result +++ b/mysql-test/suite/galera/r/galera_ftwrl.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (id INT PRIMARY KEY) ENGINE=InnoDB; connection node_2; SET GLOBAL wsrep_provider_options = "repl.causal_read_timeout=PT1S"; diff --git a/mysql-test/suite/galera/r/galera_ftwrl_drain.result b/mysql-test/suite/galera/r/galera_ftwrl_drain.result index 751811b88fd..2342643e745 100644 --- a/mysql-test/suite/galera/r/galera_ftwrl_drain.result +++ b/mysql-test/suite/galera/r/galera_ftwrl_drain.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; CREATE TABLE t1 (id INT PRIMARY KEY) ENGINE=InnoDB; connection node_2; @@ -22,7 +24,7 @@ connection node_2; SET SESSION lock_wait_timeout = 1; SET SESSION innodb_lock_wait_timeout=1; SET SESSION wait_timeout=1; -INSERT INTO t2 VALUES (2); +INSERT INTO t1 VALUES (2); ERROR HY000: Lock wait timeout exceeded; try restarting transaction connection node_2a; UNLOCK TABLES; diff --git a/mysql-test/suite/galera/r/galera_fulltext.result b/mysql-test/suite/galera/r/galera_fulltext.result index 18e3bff40fc..a22296278fa 100644 --- a/mysql-test/suite/galera/r/galera_fulltext.result +++ b/mysql-test/suite/galera/r/galera_fulltext.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE ten (f1 INTEGER) ENGINE=InnoDB; INSERT INTO ten VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10); connection node_1; diff --git a/mysql-test/suite/galera/r/galera_gcache_recover.result b/mysql-test/suite/galera/r/galera_gcache_recover.result index d3ba06c1333..819c595ece3 100644 --- a/mysql-test/suite/galera/r/galera_gcache_recover.result +++ b/mysql-test/suite/galera/r/galera_gcache_recover.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; INSERT INTO t1 VALUES (1); SET SESSION wsrep_sync_wait = 0; diff --git a/mysql-test/suite/galera/r/galera_gcache_recover_full_gcache.result b/mysql-test/suite/galera/r/galera_gcache_recover_full_gcache.result index 9b8408b1b58..94825107741 100644 --- a/mysql-test/suite/galera/r/galera_gcache_recover_full_gcache.result +++ b/mysql-test/suite/galera/r/galera_gcache_recover_full_gcache.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; SET SESSION wsrep_sync_wait = 0; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY AUTO_INCREMENT, f2 LONGBLOB) ENGINE=InnoDB; connection node_2; diff --git a/mysql-test/suite/galera/r/galera_gcache_recover_manytrx.result b/mysql-test/suite/galera/r/galera_gcache_recover_manytrx.result index 604b24a8fab..a0a45446eff 100644 --- a/mysql-test/suite/galera/r/galera_gcache_recover_manytrx.result +++ b/mysql-test/suite/galera/r/galera_gcache_recover_manytrx.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; SET SESSION wsrep_sync_wait = 0; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY AUTO_INCREMENT, f2 LONGBLOB) ENGINE=InnoDB; CREATE TABLE ten (f1 INTEGER) ENGINE=InnoDB; diff --git a/mysql-test/suite/galera/r/galera_gcs_fc_limit.result b/mysql-test/suite/galera/r/galera_gcs_fc_limit.result index bf1a82f9f90..432cf87f66f 100644 --- a/mysql-test/suite/galera/r/galera_gcs_fc_limit.result +++ b/mysql-test/suite/galera/r/galera_gcs_fc_limit.result @@ -1,7 +1,8 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,B INTEGER) ENGINE=InnoDB; INSERT INTO t1 VALUES (1,1); connection node_2; -SET SESSION wsrep_sync_wait=15; SELECT COUNT(*) FROM t1; COUNT(*) 1 diff --git a/mysql-test/suite/galera/r/galera_gcs_fragment.result b/mysql-test/suite/galera/r/galera_gcs_fragment.result index 90d36146eeb..bdd749047ee 100644 --- a/mysql-test/suite/galera/r/galera_gcs_fragment.result +++ b/mysql-test/suite/galera/r/galera_gcs_fragment.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; connection node_2; CREATE TABLE t1 (f1 INT PRIMARY KEY, f2 TEXT); @@ -20,7 +22,7 @@ INSERT INTO t1 VALUES (2, "bbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa connection node_1a; SET GLOBAL wsrep_provider_options = 'signal=gcs_core_after_frag_send'; connection node_1; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR HY000: Got error 6 "No such device or address" during COMMIT INSERT INTO t1 VALUES (3, "cccccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); SELECT * FROM t1; f1 f2 diff --git a/mysql-test/suite/galera/r/galera_gcs_max_packet_size.result b/mysql-test/suite/galera/r/galera_gcs_max_packet_size.result index ce74f3db433..b97be5733ff 100644 --- a/mysql-test/suite/galera/r/galera_gcs_max_packet_size.result +++ b/mysql-test/suite/galera/r/galera_gcs_max_packet_size.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE ten (f1 INTEGER); INSERT INTO ten VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9), (10); CREATE TABLE t1 (f1 INT PRIMARY KEY AUTO_INCREMENT, f2 INTEGER) ENGINE=InnoDB; diff --git a/mysql-test/suite/galera/r/galera_gra_log.result b/mysql-test/suite/galera/r/galera_gra_log.result index 777eda42046..33853188965 100644 --- a/mysql-test/suite/galera/r/galera_gra_log.result +++ b/mysql-test/suite/galera/r/galera_gra_log.result @@ -1,4 +1,6 @@ connection node_2; +connection node_1; +connection node_2; SET SESSION wsrep_on=OFF; CREATE TABLE t1 (f1 INTEGER); connection node_1; diff --git a/mysql-test/suite/galera/r/galera_gtid.result b/mysql-test/suite/galera/r/galera_gtid.result index 0346abc5a6c..3f5c5960846 100644 --- a/mysql-test/suite/galera/r/galera_gtid.result +++ b/mysql-test/suite/galera/r/galera_gtid.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INT PRIMARY KEY); INSERT INTO t1 VALUES (1); connection node_2; diff --git a/mysql-test/suite/galera/r/galera_gtid_slave.result b/mysql-test/suite/galera/r/galera_gtid_slave.result index f8ca6322d22..7a3048231af 100644 --- a/mysql-test/suite/galera/r/galera_gtid_slave.result +++ b/mysql-test/suite/galera/r/galera_gtid_slave.result @@ -1,7 +1,9 @@ -connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2; connection node_2; -START SLAVE; connection node_1; +connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3; +connection node_2; +START SLAVE; +connection node_3; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; CREATE TABLE t2 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; INSERT INTO t1 VALUES(1); @@ -11,27 +13,31 @@ insert into t2 values(22); commit; SELECT @@global.gtid_binlog_state; @@global.gtid_binlog_state -1-1-4 +2-3-4 connection node_2; INSERT INTO t1 VALUES(2); INSERT INTO t1 VALUES(3); SELECT @@global.gtid_binlog_state; @@global.gtid_binlog_state -1-1-4,2-2-2 -connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3; +0-2-2,2-3-4 +connection node_1; INSERT INTO t1 VALUES(4); SELECT @@global.gtid_binlog_state; @@global.gtid_binlog_state -1-1-4,2-2-2,2-3-3 -connection node_1; +1-1-1,2-3-4,2-2-6 +connection node_3; DROP TABLE t1,t2; connection node_2; -connection node_3; +connection node_1; connection node_2; STOP SLAVE; RESET SLAVE ALL; +SET GLOBAL wsrep_on=OFF; reset master; -connection node_3; -reset master; +SET GLOBAL wsrep_on=ON; connection node_1; +SET GLOBAL wsrep_on=OFF; +reset master; +SET GLOBAL wsrep_on=ON; +connection node_3; reset master; diff --git a/mysql-test/suite/galera/r/galera_gtid_slave_sst_rsync.result b/mysql-test/suite/galera/r/galera_gtid_slave_sst_rsync.result index 380a0235ac2..7c5519af495 100644 --- a/mysql-test/suite/galera/r/galera_gtid_slave_sst_rsync.result +++ b/mysql-test/suite/galera/r/galera_gtid_slave_sst_rsync.result @@ -1,38 +1,40 @@ -connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2; +connection node_2; +connection node_1; +connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3; #Connection 2 connection node_2; START SLAVE; -#Connection 1 -connection node_1; +#Connection 3 +connection node_3; CREATE TABLE t2 (f1 INTEGER PRIMARY KEY, f2 int unique) ENGINE=InnoDB; INSERT INTO t2 VALUES(1,11); INSERT INTO t2 VALUES(2,22); INSERT INTO t2 VALUES(3,33); SELECT @@global.gtid_binlog_state; @@global.gtid_binlog_state -1-1-4 +2-3-4 include/save_master_gtid.inc #Connection 2 connection node_2; include/sync_with_master_gtid.inc SELECT @@global.gtid_binlog_state; @@global.gtid_binlog_state -1-1-4 +2-3-4 INSERT INTO t2 VALUES(4,44); INSERT INTO t2 VALUES(5,55); INSERT INTO t2 VALUES(6,66); SELECT @@global.gtid_binlog_state; @@global.gtid_binlog_state -1-1-4,2-2-3 -#Connection 3 -connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3; +0-2-3,2-3-4 +#Connection 1 +connection node_1; INSERT INTO t2 VALUES(7,77); INSERT INTO t2 VALUES(8,88); SELECT @@global.gtid_binlog_state; @@global.gtid_binlog_state -1-1-4,2-2-3,2-3-5 -#Connection 1 -connection node_1; +1-1-2,2-3-4,2-2-7 +#Connection 3 +connection node_3; CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB; SET AUTOCOMMIT=OFF; START TRANSACTION; @@ -48,76 +50,78 @@ START TRANSACTION; INSERT INTO t1 VALUES ('node2_committed_before'); INSERT INTO t1 VALUES ('node2_committed_before'); COMMIT; -#Connection 3 -connection node_3; +#Connection 1 +connection node_1; +connection node_1; connection node_2; -connection node_3; -Shutting down server ... #Connection 2 connection node_2; +Shutting down server ... +#Connection 1 +connection node_1; SET AUTOCOMMIT=OFF; START TRANSACTION; INSERT INTO t1 VALUES ('node1_committed_during'); INSERT INTO t1 VALUES ('node1_committed_during'); COMMIT; -#Connection 3 -connection node_3; +#Connection 2 +connection node_2; Starting server ... SET AUTOCOMMIT=OFF; START TRANSACTION; -INSERT INTO t1 VALUES ('node3_committed_after'); -INSERT INTO t1 VALUES ('node3_committed_after'); +INSERT INTO t1 VALUES ('node2_committed_after'); +INSERT INTO t1 VALUES ('node2_committed_after'); COMMIT; -#Connection 2 -connection node_2; +#Connection 1 +connection node_1; Select * from t1 order by f1; f1 node1_committed_before node1_committed_before node1_committed_during node1_committed_during +node2_committed_after +node2_committed_after node2_committed_before node2_committed_before -node3_committed_after -node3_committed_after -#Connection 3 -connection node_3; +#Connection 2 +connection node_2; Select * from t1 order by f1; f1 node1_committed_before node1_committed_before node1_committed_during node1_committed_during +node2_committed_after +node2_committed_after node2_committed_before node2_committed_before -node3_committed_after -node3_committed_after +#Connection 1 +connection node_1; +SELECT @@global.gtid_binlog_state; +@@global.gtid_binlog_state +1-1-3,2-3-6,2-2-9 #Connection 2 connection node_2; SELECT @@global.gtid_binlog_state; @@global.gtid_binlog_state -1-1-6,2-2-7,2-3-8 +0-1-7,0-2-8,2-3-6 #Connection 3 connection node_3; -SELECT @@global.gtid_binlog_state; -@@global.gtid_binlog_state -1-1-6,2-2-7,2-3-8 -#Connection 1 -connection node_1; SET AUTOCOMMIT=ON; #Connection 2 connection node_2; SET AUTOCOMMIT=ON; -#Connection 3 -connection node_3; +#Connection 1 +connection node_1; SET AUTOCOMMIT=ON; #Connection 2 connection node_2; STOP slave; INSERT INTO t1 VALUES ('node2_slave_stoped'); -#Connection 1 -connection node_1; -INSERT INTO t1 VALUES ('node1_normal_entry'); +#Connection 3 +connection node_3; +INSERT INTO t1 VALUES ('node3_normal_entry'); include/save_master_gtid.inc #Connection 2 connection node_2; @@ -130,31 +134,35 @@ count(*) 12 SELECT @@global.gtid_binlog_state; @@global.gtid_binlog_state -1-1-7,2-3-8,2-2-11 -#Connection 3 -connection node_3; +0-1-7,0-2-11,2-3-7 +#Connection 1 +connection node_1; SELECT count(*) from t1; count(*) 12 SELECT @@global.gtid_binlog_state; @@global.gtid_binlog_state -1-1-7,2-3-8,2-2-11 -#Connection 1 -connection node_1; +1-1-3,2-3-7,2-2-12 +#Connection 3 +connection node_3; DROP TABLE t2,t1; #Connection 2 connection node_2; -#Connection 3 -connection node_3; +#Connection 1 +connection node_1; #Connection 2 connection node_2; STOP SLAVE; RESET SLAVE ALL; +set global wsrep_on=OFF; +reset master; +set global wsrep_on=ON; set global gtid_slave_pos=""; +#Connection 1 +connection node_1; +set global wsrep_on=OFF; reset master; +set global wsrep_on=ON; #Connection 3 connection node_3; reset master; -#Connection 1 -connection node_1; -reset master; diff --git a/mysql-test/suite/galera/r/galera_insert_ignore.result b/mysql-test/suite/galera/r/galera_insert_ignore.result index 7057affaa0e..417524240e7 100644 --- a/mysql-test/suite/galera/r/galera_insert_ignore.result +++ b/mysql-test/suite/galera/r/galera_insert_ignore.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; SET GLOBAL wsrep_sync_wait = 15; connection node_2; SET GLOBAL wsrep_sync_wait = 15; diff --git a/mysql-test/suite/galera/r/galera_insert_multi.result b/mysql-test/suite/galera/r/galera_insert_multi.result index 913dd42403a..d7a4f01873e 100644 --- a/mysql-test/suite/galera/r/galera_insert_multi.result +++ b/mysql-test/suite/galera/r/galera_insert_multi.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; INSERT INTO t1 VALUES (1),(2); @@ -51,7 +53,7 @@ connection node_1; COMMIT; connection node_2; COMMIT; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction ROLLBACK; INSERT INTO t1 VALUES (1), (2); ERROR 23000: Duplicate entry '1' for key 'PRIMARY' diff --git a/mysql-test/suite/galera/r/galera_ist_mariabackup,debug.rdiff b/mysql-test/suite/galera/r/galera_ist_mariabackup,debug.rdiff index 9684e290778..fe54c515395 100644 --- a/mysql-test/suite/galera/r/galera_ist_mariabackup,debug.rdiff +++ b/mysql-test/suite/galera/r/galera_ist_mariabackup,debug.rdiff @@ -1,6 +1,6 @@ ---- r/galera_ist_mariabackup.result 2018-11-21 22:30:21.968817468 +0200 -+++ r/galera_ist_mariabackup.reject 2018-11-22 09:16:27.832601754 +0200 -@@ -285,3 +285,111 @@ +--- galera_ist_mariabackup.result 2018-12-11 13:33:56.728535840 +0100 ++++ galera_ist_mariabackup.reject 2018-12-11 13:37:40.572535840 +0100 +@@ -290,3 +290,111 @@ DROP TABLE t1; COMMIT; SET AUTOCOMMIT=ON; diff --git a/mysql-test/suite/galera/r/galera_ist_mariabackup.result b/mysql-test/suite/galera/r/galera_ist_mariabackup.result index 8a7c02ab1b6..13f7d898a59 100644 --- a/mysql-test/suite/galera/r/galera_ist_mariabackup.result +++ b/mysql-test/suite/galera/r/galera_ist_mariabackup.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; connection node_2; Performing State Transfer on a server that has been temporarily disconnected @@ -47,6 +49,9 @@ INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); connection node_2; Loading wsrep provider ... +disconnect node_2; +connect node_2, 127.0.0.1, root, , test, $NODE_MYPORT_2; +connection node_2; SET AUTOCOMMIT=OFF; START TRANSACTION; INSERT INTO t1 VALUES ('node2_committed_after'); diff --git a/mysql-test/suite/galera/r/galera_ist_mariabackup_innodb_flush_logs.result b/mysql-test/suite/galera/r/galera_ist_mariabackup_innodb_flush_logs.result index 7813b5a58fc..99b9c8d6c1b 100644 --- a/mysql-test/suite/galera/r/galera_ist_mariabackup_innodb_flush_logs.result +++ b/mysql-test/suite/galera/r/galera_ist_mariabackup_innodb_flush_logs.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; Performing State Transfer on a server that has been killed and restarted connection node_1; CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB; diff --git a/mysql-test/suite/galera/r/galera_ist_mysqldump.result b/mysql-test/suite/galera/r/galera_ist_mysqldump.result index 296ecc2adc7..222eb7704e8 100644 --- a/mysql-test/suite/galera/r/galera_ist_mysqldump.result +++ b/mysql-test/suite/galera/r/galera_ist_mysqldump.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; Setting SST method to mysqldump ... call mtr.add_suppression("WSREP: wsrep_sst_method is set to 'mysqldump' yet mysqld bind_address is set to '127.0.0.1'"); call mtr.add_suppression("Failed to load slave replication state from table mysql.gtid_slave_pos"); @@ -210,3 +212,4 @@ CALL mtr.add_suppression("Can't open and lock time zone table"); CALL mtr.add_suppression("Can't open and lock privilege tables"); CALL mtr.add_suppression("Info table is not ready to be used"); CALL mtr.add_suppression("Native table .* has the wrong structure"); +CALL mtr.add_suppression("Table \'mysql.gtid_slave_pos\' doesn\'t exist"); diff --git a/mysql-test/suite/galera/r/galera_ist_progress.result b/mysql-test/suite/galera/r/galera_ist_progress.result index ed36a217624..9233d95b970 100644 --- a/mysql-test/suite/galera/r/galera_ist_progress.result +++ b/mysql-test/suite/galera/r/galera_ist_progress.result @@ -1,4 +1,6 @@ connection node_2; +connection node_1; +connection node_2; SET GLOBAL wsrep_provider_options = 'gmcast.isolate = 1'; connection node_1; connection node_2; @@ -21,8 +23,8 @@ SET GLOBAL wsrep_provider_options = 'gmcast.isolate = 0'; connection node_1; connection node_2; connection node_1; -include/assert_grep.inc [Receiving IST: 11 writesets, seqnos] -include/assert_grep.inc [Receiving IST\.\.\. 0\.0% \( 0/11 events\) complete] -include/assert_grep.inc [Receiving IST\.\.\.100\.0% \(11/11 events\) complete] +include/assert_grep.inc [Receiving IST: 13 writesets, seqnos 3-15] +include/assert_grep.inc [Receiving IST\.\.\. 0\.0% \( 0/13 events\) complete] +include/assert_grep.inc [Receiving IST\.\.\.100\.0% \(13/13 events\) complete] connection node_1; DROP TABLE t1; diff --git a/mysql-test/suite/galera/r/galera_ist_recv_bind.result b/mysql-test/suite/galera/r/galera_ist_recv_bind.result index ffc751d8672..be72aa60ab0 100644 --- a/mysql-test/suite/galera/r/galera_ist_recv_bind.result +++ b/mysql-test/suite/galera/r/galera_ist_recv_bind.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; SELECT @@wsrep_provider_options LIKE '%ist.recv_bind = 127.0.0.1%'; @@wsrep_provider_options LIKE '%ist.recv_bind = 127.0.0.1%' diff --git a/mysql-test/suite/galera/r/galera_ist_restart_joiner.result b/mysql-test/suite/galera/r/galera_ist_restart_joiner.result index d38d664b6fa..80d2c90642b 100644 --- a/mysql-test/suite/galera/r/galera_ist_restart_joiner.result +++ b/mysql-test/suite/galera/r/galera_ist_restart_joiner.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; connection node_2; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY, f2 CHAR(1)); diff --git a/mysql-test/suite/galera/r/galera_ist_rsync.result b/mysql-test/suite/galera/r/galera_ist_rsync.result index 8a7c02ab1b6..13f7d898a59 100644 --- a/mysql-test/suite/galera/r/galera_ist_rsync.result +++ b/mysql-test/suite/galera/r/galera_ist_rsync.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; connection node_2; Performing State Transfer on a server that has been temporarily disconnected @@ -47,6 +49,9 @@ INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); connection node_2; Loading wsrep provider ... +disconnect node_2; +connect node_2, 127.0.0.1, root, , test, $NODE_MYPORT_2; +connection node_2; SET AUTOCOMMIT=OFF; START TRANSACTION; INSERT INTO t1 VALUES ('node2_committed_after'); diff --git a/mysql-test/suite/galera/r/galera_kill_applier.result b/mysql-test/suite/galera/r/galera_kill_applier.result index 075cbe6f702..25600744d73 100644 --- a/mysql-test/suite/galera/r/galera_kill_applier.result +++ b/mysql-test/suite/galera/r/galera_kill_applier.result @@ -1,4 +1,6 @@ connection node_2; +connection node_1; +connection node_2; SET GLOBAL wsrep_slave_threads=2; Got one of the listed errors Got one of the listed errors diff --git a/mysql-test/suite/galera/r/galera_kill_ddl.result b/mysql-test/suite/galera/r/galera_kill_ddl.result index 86796405422..33a1b19095f 100644 --- a/mysql-test/suite/galera/r/galera_kill_ddl.result +++ b/mysql-test/suite/galera/r/galera_kill_ddl.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; connection node_2; connection node_1; diff --git a/mysql-test/suite/galera/r/galera_kill_largechanges.result b/mysql-test/suite/galera/r/galera_kill_largechanges.result index d85d421c164..99a8005e03e 100644 --- a/mysql-test/suite/galera/r/galera_kill_largechanges.result +++ b/mysql-test/suite/galera/r/galera_kill_largechanges.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; connection node_2; connection node_1; diff --git a/mysql-test/suite/galera/r/galera_kill_smallchanges.result b/mysql-test/suite/galera/r/galera_kill_smallchanges.result index f500db8871b..9d52de585c2 100644 --- a/mysql-test/suite/galera/r/galera_kill_smallchanges.result +++ b/mysql-test/suite/galera/r/galera_kill_smallchanges.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; connection node_2; connection node_1; diff --git a/mysql-test/suite/galera/r/galera_last_committed_id.result b/mysql-test/suite/galera/r/galera_last_committed_id.result new file mode 100644 index 00000000000..fabc5337576 --- /dev/null +++ b/mysql-test/suite/galera/r/galera_last_committed_id.result @@ -0,0 +1,38 @@ +connection node_2; +connection node_1; +SELECT WSREP_LAST_WRITTEN_GTID() = '00000000-0000-0000-0000-000000000000:-1'; +WSREP_LAST_WRITTEN_GTID() = '00000000-0000-0000-0000-000000000000:-1' +1 +wsrep_last_committed_id_match +1 +connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1; +connection node_1a; +CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB; +INSERT INTO t1 VALUES (1); +connection node_1; +SELECT WSREP_LAST_WRITTEN_GTID() = '00000000-0000-0000-0000-000000000000:-1'; +WSREP_LAST_WRITTEN_GTID() = '00000000-0000-0000-0000-000000000000:-1' +1 +connection node_1a; +INSERT INTO t1 VALUES (1); +connection node_1; +wsrep_last_committed_id_match +1 +SET AUTOCOMMIT=OFF; +START TRANSACTION; +SELECT WSREP_LAST_WRITTEN_GTID() = '00000000-0000-0000-0000-000000000000:-1'; +WSREP_LAST_WRITTEN_GTID() = '00000000-0000-0000-0000-000000000000:-1' +1 +INSERT INTO t1 VALUES (1); +SELECT WSREP_LAST_WRITTEN_GTID() = '00000000-0000-0000-0000-000000000000:-1'; +WSREP_LAST_WRITTEN_GTID() = '00000000-0000-0000-0000-000000000000:-1' +1 +wsrep_last_committed_id_match +1 +COMMIT; +wsrep_last_committed_id_advanced +1 +wsrep_last_committed_id_advanced +1 +SET AUTOCOMMIT=ON; +DROP TABLE t1; diff --git a/mysql-test/suite/galera/r/galera_load_data.result b/mysql-test/suite/galera/r/galera_load_data.result index bbfd14a98f6..84e96f8a36c 100644 --- a/mysql-test/suite/galera/r/galera_load_data.result +++ b/mysql-test/suite/galera/r/galera_load_data.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; create database cardtest02; use cardtest02; @@ -34,6 +36,8 @@ UNLOCK TABLES; use cardtest02; ANALYZE TABLE cardtest_tbl; Table Op Msg_type Msg_text +cardtest02.cardtest_tbl analyze status Engine-independent statistics collected +cardtest02.cardtest_tbl analyze Warning Engine-independent statistics are not collected for column 'intro' cardtest02.cardtest_tbl analyze status OK SELECT COUNT(*) AS EXPECT_301 FROM cardtest_tbl; EXPECT_301 @@ -42,6 +46,8 @@ connection node_2; use cardtest02; ANALYZE TABLE cardtest_tbl; Table Op Msg_type Msg_text +cardtest02.cardtest_tbl analyze status Engine-independent statistics collected +cardtest02.cardtest_tbl analyze Warning Engine-independent statistics are not collected for column 'intro' cardtest02.cardtest_tbl analyze status OK SELECT COUNT(*) AS EXPECT_301 FROM cardtest_tbl; EXPECT_301 diff --git a/mysql-test/suite/galera/r/galera_lock_table.result b/mysql-test/suite/galera/r/galera_lock_table.result index ce529deb22c..c3df1749ada 100644 --- a/mysql-test/suite/galera/r/galera_lock_table.result +++ b/mysql-test/suite/galera/r/galera_lock_table.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (id INT PRIMARY KEY) ENGINE=InnoDB; CREATE TABLE t2 (id INT PRIMARY KEY) ENGINE=InnoDB; connection node_2; diff --git a/mysql-test/suite/galera/r/galera_lock_tables_in_transaction.result b/mysql-test/suite/galera/r/galera_lock_tables_in_transaction.result new file mode 100644 index 00000000000..68691a4efd2 --- /dev/null +++ b/mysql-test/suite/galera/r/galera_lock_tables_in_transaction.result @@ -0,0 +1,12 @@ +connection node_2; +connection node_1; +CREATE TABLE t1 (a INT) ENGINE=InnoDB; +START TRANSACTION; +INSERT INTO t1 VALUES (1); +LOCK TABLES t2 READ; +ERROR 42S02: Table 'test.t2' doesn't exist +START TRANSACTION; +INSERT INTO t1 VALUES (1); +LOCK TABLES t1 READ; +UNLOCK TABLES; +DROP TABLE t1; diff --git a/mysql-test/suite/galera/r/galera_log_bin.result b/mysql-test/suite/galera/r/galera_log_bin.result index eb009a620e0..160575df412 100644 --- a/mysql-test/suite/galera/r/galera_log_bin.result +++ b/mysql-test/suite/galera/r/galera_log_bin.result @@ -1,7 +1,13 @@ +connection node_2; +connection node_1; 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; CREATE TABLE t1 (id INT PRIMARY KEY) ENGINE=InnoDB; INSERT INTO t1 VALUES (1); CREATE TABLE t2 (id INT) ENGINE=InnoDB; @@ -70,4 +76,5 @@ DROP TABLE t1; DROP TABLE t2; #cleanup connection node_1; +SET GLOBAL wsrep_on=OFF; RESET MASTER; diff --git a/mysql-test/suite/galera/r/galera_log_output_csv.result b/mysql-test/suite/galera/r/galera_log_output_csv.result index ea218abbb59..06b0838d976 100644 --- a/mysql-test/suite/galera/r/galera_log_output_csv.result +++ b/mysql-test/suite/galera/r/galera_log_output_csv.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; INSERT INTO t1 VALUES (1); SELECT COUNT(*) > 0 FROM mysql.general_log; diff --git a/mysql-test/suite/galera/r/galera_many_columns.result b/mysql-test/suite/galera/r/galera_many_columns.result index db8a8f5ec9d..64e97f11fa7 100644 --- a/mysql-test/suite/galera/r/galera_many_columns.result +++ b/mysql-test/suite/galera/r/galera_many_columns.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; INSERT INTO t1 (f1) VALUES (DEFAULT); connection node_2; SELECT f1 = 'ABC', f1017 = 'ABC' FROM t1; @@ -19,7 +21,7 @@ UPDATE t1 SET f2 = 'CDE' WHERE f1 = 'XYZ' AND f1017 = 'XYZ'; COMMIT; connection node_1; COMMIT; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction ROLLBACK; connection node_2; ROLLBACK; diff --git a/mysql-test/suite/galera/r/galera_many_indexes.result b/mysql-test/suite/galera/r/galera_many_indexes.result index 5691eef4c00..963d3552252 100644 --- a/mysql-test/suite/galera/r/galera_many_indexes.result +++ b/mysql-test/suite/galera/r/galera_many_indexes.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 VARCHAR(767) PRIMARY KEY) ENGINE=InnoDB; CREATE UNIQUE INDEX i63 ON t1(f1); CREATE UNIQUE INDEX i62 ON t1(f1); @@ -91,6 +93,7 @@ COUNT(*) = 1 INSERT INTO t1 VALUES (REPEAT('b', 767)); ANALYZE TABLE t1; Table Op Msg_type Msg_text +test.t1 analyze status Engine-independent statistics collected test.t1 analyze status OK connection node_1; SELECT COUNT(*) = 2 FROM t1; @@ -98,6 +101,7 @@ COUNT(*) = 2 1 ANALYZE TABLE t1; Table Op Msg_type Msg_text +test.t1 analyze status Engine-independent statistics collected test.t1 analyze status OK DELETE FROM t1 WHERE f1 = REPEAT('b', 767); connection node_1; @@ -129,5 +133,5 @@ connection node_1; COMMIT; connection node_2; COMMIT; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction DROP TABLE t1; diff --git a/mysql-test/suite/galera/r/galera_many_rows.result b/mysql-test/suite/galera/r/galera_many_rows.result index d6669fe6bdf..566bc59f8ab 100644 --- a/mysql-test/suite/galera/r/galera_many_rows.result +++ b/mysql-test/suite/galera/r/galera_many_rows.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; connection node_2; connection node_1; @@ -37,6 +39,6 @@ connection node_1; COMMIT; connection node_2; COMMIT; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction DROP TABLE t1; DROP TABLE ten; diff --git a/mysql-test/suite/galera/r/galera_many_tables_nopk.result b/mysql-test/suite/galera/r/galera_many_tables_nopk.result index 573ce758a13..2a226defcc7 100644 --- a/mysql-test/suite/galera/r/galera_many_tables_nopk.result +++ b/mysql-test/suite/galera/r/galera_many_tables_nopk.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; SET AUTOCOMMIT=OFF; START TRANSACTION; @@ -18,6 +20,6 @@ connection node_1; COMMIT; connection node_2; COMMIT; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction DROP SCHEMA test; CREATE SCHEMA test; diff --git a/mysql-test/suite/galera/r/galera_many_tables_pk.result b/mysql-test/suite/galera/r/galera_many_tables_pk.result index 67624d5edb0..2700df8ebe4 100644 --- a/mysql-test/suite/galera/r/galera_many_tables_pk.result +++ b/mysql-test/suite/galera/r/galera_many_tables_pk.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; connection node_2; SELECT COUNT(*) = 100 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME LIKE 't%'; @@ -23,7 +25,7 @@ connection node_1; COMMIT; connection node_2; COMMIT; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction include/diff_servers.inc [servers=1 2] DROP SCHEMA test; CREATE SCHEMA test; diff --git a/mysql-test/suite/galera/r/galera_mdev_10812.result b/mysql-test/suite/galera/r/galera_mdev_10812.result index de0a08a3794..16eacc6beab 100644 --- a/mysql-test/suite/galera/r/galera_mdev_10812.result +++ b/mysql-test/suite/galera/r/galera_mdev_10812.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; # # MDEV-10812: On COM_STMT_CLOSE/COM_QUIT, when wsrep_conflict_state # is ABORTED, it causes wrong response to be sent to the client diff --git a/mysql-test/suite/galera/r/galera_mdev_13787.result b/mysql-test/suite/galera/r/galera_mdev_13787.result index b1caec0283c..4d0770918c0 100644 --- a/mysql-test/suite/galera/r/galera_mdev_13787.result +++ b/mysql-test/suite/galera/r/galera_mdev_13787.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; create table t(a int); insert into t select 1; diff --git a/mysql-test/suite/galera/r/galera_mdev_15611.result b/mysql-test/suite/galera/r/galera_mdev_15611.result index 9ea1684494a..5461f8f03fb 100644 --- a/mysql-test/suite/galera/r/galera_mdev_15611.result +++ b/mysql-test/suite/galera/r/galera_mdev_15611.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; CREATE TABLE t1 ( id int primary key diff --git a/mysql-test/suite/galera/r/galera_mdl_race.result b/mysql-test/suite/galera/r/galera_mdl_race.result index 968258e8ec3..cf747ed8efb 100644 --- a/mysql-test/suite/galera/r/galera_mdl_race.result +++ b/mysql-test/suite/galera/r/galera_mdl_race.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY, f2 CHAR(1)) engine=innodb; CREATE TABLE t2 (f1 INTEGER PRIMARY KEY, f2 CHAR(1)) engine=innodb; INSERT INTO t1 VALUES (1, 'a'); @@ -22,7 +24,7 @@ SET DEBUG_SYNC = "now SIGNAL signal.wsrep_before_mdl_wait"; SET DEBUG_SYNC = "now SIGNAL signal.wsrep_after_BF_victim_lock"; UNLOCK TABLES; connection node_1; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction SELECT COUNT(*) = 1 FROM t1 WHERE f2 = 'a'; COUNT(*) = 1 1 diff --git a/mysql-test/suite/galera/r/galera_multi_database.result b/mysql-test/suite/galera/r/galera_multi_database.result index f6242de663b..a9d58d5d0e2 100644 --- a/mysql-test/suite/galera/r/galera_multi_database.result +++ b/mysql-test/suite/galera/r/galera_multi_database.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE DATABASE d1; CREATE TABLE d1.t1(f1 INTEGER) ENGINE=InnoDB; CREATE DATABASE d2; diff --git a/mysql-test/suite/galera/r/galera_multirow_rollback.result b/mysql-test/suite/galera/r/galera_multirow_rollback.result new file mode 100644 index 00000000000..13502d0d3dc --- /dev/null +++ b/mysql-test/suite/galera/r/galera_multirow_rollback.result @@ -0,0 +1,73 @@ +connection node_2; +connection node_1; +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY DEFAULT 0, f2 char(12)); +connection node_1; +START TRANSACTION; +INSERT INTO t1 (f2) VALUES ('a'), ('b'); +ERROR 23000: Duplicate entry '0' for key 'PRIMARY' +COMMIT; +SELECT COUNT(*) AS expect_0 FROM t1; +expect_0 +0 +connection node_2; +SELECT COUNT(*) AS expect_0 FROM t1; +expect_0 +0 +DROP TABLE t1; +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY DEFAULT 0, f2 char(12)); +connection node_1; +START TRANSACTION; +INSERT INTO t1 VALUES (1, 'a'); +INSERT INTO t1 VALUES (2, 'b'); +INSERT INTO t1 (f2) VALUES ('c'), ('d'); +ERROR 23000: Duplicate entry '0' for key 'PRIMARY' +COMMIT; +expect (1,'a'), (2, 'b') +SELECT * FROM t1; +f1 f2 +1 a +2 b +connection node_2; +expect (1,'a'), (2, 'b') +SELECT * FROM t1; +f1 f2 +1 a +2 b +DROP TABLE t1; +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY DEFAULT 0, f2 char(12)); +connection node_1; +INSERT INTO t1 (f2) VALUES ('a'),('b'); +ERROR 23000: Duplicate entry '0' for key 'PRIMARY' +SELECT COUNT(*) AS expect_0 FROM t1; +expect_0 +0 +connection node_2; +SELECT COUNT(*) AS expect_0 FROM t1; +expect_0 +0 +DROP TABLE t1; +connection node_1; +CREATE TABLE p(id int primary key, j int) ENGINE=InnoDB; +CREATE TABLE c(id int primary key, fk1 int) ENGINE=InnoDB; +ALTER TABLE c ADD FOREIGN KEY (fk1) references p(id); +INSERT INTO p VALUES(1, 0); +START TRANSACTION; +INSERT INTO c VALUES (3,1); +INSERT INTO c VALUES (1,1), (2,2); +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`c`, CONSTRAINT `c_ibfk_1` FOREIGN KEY (`fk1`) REFERENCES `p` (`id`)) +COMMIT; +SELECT * FROM p; +id j +1 0 +SELECT * FROM c; +id fk1 +3 1 +connection node_2; +SELECT * FROM p; +id j +1 0 +SELECT * FROM c; +id fk1 +3 1 +DROP TABLE c; +DROP TABLE p; diff --git a/mysql-test/suite/galera/r/galera_myisam_autocommit.result b/mysql-test/suite/galera/r/galera_myisam_autocommit.result index e9578a261e6..6213e8f6380 100644 --- a/mysql-test/suite/galera/r/galera_myisam_autocommit.result +++ b/mysql-test/suite/galera/r/galera_myisam_autocommit.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INTEGER) ENGINE=MyISAM; INSERT INTO t1 VALUES (1); INSERT INTO t1 VALUES (2), (3); diff --git a/mysql-test/suite/galera/r/galera_myisam_transactions.result b/mysql-test/suite/galera/r/galera_myisam_transactions.result index 25796c309d1..091c5ffb6f6 100644 --- a/mysql-test/suite/galera/r/galera_myisam_transactions.result +++ b/mysql-test/suite/galera/r/galera_myisam_transactions.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB; CREATE TABLE t2 (f1 INTEGER) ENGINE=MyISAM; CREATE TABLE t3 (f1 INTEGER) ENGINE=MyISAM; diff --git a/mysql-test/suite/galera/r/galera_nopk_bit.result b/mysql-test/suite/galera/r/galera_nopk_bit.result index 21da039df09..97ded793c08 100644 --- a/mysql-test/suite/galera/r/galera_nopk_bit.result +++ b/mysql-test/suite/galera/r/galera_nopk_bit.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 BIT) ENGINE=InnoDB; INSERT INTO t1 VALUES (NULL),(0),(b'1'); connection node_2; @@ -28,6 +30,6 @@ connection node_1; COMMIT; connection node_2; COMMIT; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction DROP TABLE t1; DROP TABLE t2; diff --git a/mysql-test/suite/galera/r/galera_nopk_blob.result b/mysql-test/suite/galera/r/galera_nopk_blob.result index 53e04f72d1e..6a3cee516c9 100644 --- a/mysql-test/suite/galera/r/galera_nopk_blob.result +++ b/mysql-test/suite/galera/r/galera_nopk_blob.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 BLOB) ENGINE=InnoDB; INSERT INTO t1 VALUES (NULL),('abc'); connection node_2; @@ -28,6 +30,6 @@ connection node_1; COMMIT; connection node_2; COMMIT; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction DROP TABLE t1; DROP TABLE t2; diff --git a/mysql-test/suite/galera/r/galera_nopk_large_varchar.result b/mysql-test/suite/galera/r/galera_nopk_large_varchar.result index a83cf7f2d91..6d29306996b 100644 --- a/mysql-test/suite/galera/r/galera_nopk_large_varchar.result +++ b/mysql-test/suite/galera/r/galera_nopk_large_varchar.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 VARCHAR(8000)) ENGINE=InnoDB; INSERT INTO t1 VALUES (NULL),(CONCAT(REPEAT('x', 7999), 'a')); connection node_2; @@ -31,6 +33,6 @@ connection node_1; COMMIT; connection node_2; COMMIT; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction DROP TABLE t1; DROP TABLE t2; diff --git a/mysql-test/suite/galera/r/galera_nopk_unicode.result b/mysql-test/suite/galera/r/galera_nopk_unicode.result index b2a8bb63df9..587ba9285da 100644 --- a/mysql-test/suite/galera/r/galera_nopk_unicode.result +++ b/mysql-test/suite/galera/r/galera_nopk_unicode.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 ( f1 VARCHAR(255), KEY (f1) @@ -19,7 +21,7 @@ connection node_1; COMMIT; connection node_2; COMMIT; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction SELECT f1 = 'текст2' FROM t1; f1 = 'текст2' 1 diff --git a/mysql-test/suite/galera/r/galera_parallel_apply_lock_table.result b/mysql-test/suite/galera/r/galera_parallel_apply_lock_table.result index ab56a8a2aa6..48625b3ba4a 100644 --- a/mysql-test/suite/galera/r/galera_parallel_apply_lock_table.result +++ b/mysql-test/suite/galera/r/galera_parallel_apply_lock_table.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (id INT PRIMARY KEY) ENGINE=InnoDB; CREATE TABLE t2 (id INT PRIMARY KEY) ENGINE=InnoDB; connection node_2; @@ -8,10 +10,10 @@ INSERT INTO t1 VALUES (1); INSERT INTO t2 VALUES (1); connection node_2a; SET SESSION wsrep_sync_wait=0; -SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE STATE LIKE '%applied write set%'; +SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE STATE LIKE '%committing%'; COUNT(*) = 1 1 -SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE STATE LIKE 'Waiting for table metadata lock'; +SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE STATE LIKE '%Waiting for table metadata lock%'; COUNT(*) = 1 1 SELECT COUNT(*) = 0 FROM t1; @@ -30,7 +32,7 @@ COUNT(*) = 1 SELECT COUNT(*) = 1 FROM t2; COUNT(*) = 1 1 -SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE STATE LIKE 'committed%'; +SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE STATE LIKE '%committed%'; COUNT(*) = 2 1 SET GLOBAL wsrep_slave_threads = 1;; diff --git a/mysql-test/suite/galera/r/galera_parallel_autoinc_largetrx.result b/mysql-test/suite/galera/r/galera_parallel_autoinc_largetrx.result index 8d8f4c1a371..6249edbe173 100644 --- a/mysql-test/suite/galera/r/galera_parallel_autoinc_largetrx.result +++ b/mysql-test/suite/galera/r/galera_parallel_autoinc_largetrx.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; CREATE TABLE ten (f1 INTEGER) Engine=InnoDB; INSERT INTO ten VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10); @@ -12,7 +14,19 @@ INSERT INTO t1 (f2) SELECT 1 FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4;; connection node_2; INSERT INTO t1 (f2) SELECT 1 FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4;; connection node_1; +SELECT COUNT(*) FROM t1; +COUNT(*) +30000 +SELECT COUNT(DISTINCT f1) FROM t1; +COUNT(DISTINCT f1) +30000 connection node_1a; +SELECT COUNT(*) FROM t1; +COUNT(*) +30000 +SELECT COUNT(DISTINCT f1) FROM t1; +COUNT(DISTINCT f1) +30000 connection node_2; disconnect node_1a; SELECT COUNT(*) AS EXPECT_30000 FROM t1; diff --git a/mysql-test/suite/galera/r/galera_parallel_autoinc_manytrx.result b/mysql-test/suite/galera/r/galera_parallel_autoinc_manytrx.result index 445b818746a..e09e34274dd 100644 --- a/mysql-test/suite/galera/r/galera_parallel_autoinc_manytrx.result +++ b/mysql-test/suite/galera/r/galera_parallel_autoinc_manytrx.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; CREATE TABLE ten (f1 INTEGER) Engine=InnoDB; INSERT INTO ten VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10); diff --git a/mysql-test/suite/galera/r/galera_parallel_simple.result b/mysql-test/suite/galera/r/galera_parallel_simple.result index 3f657a0479e..cac784cd16f 100644 --- a/mysql-test/suite/galera/r/galera_parallel_simple.result +++ b/mysql-test/suite/galera/r/galera_parallel_simple.result @@ -1,11 +1,13 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (id INT) ENGINE=InnoDB; CREATE TABLE t2 (id INT) ENGINE=InnoDB; connection node_2; -SET GLOBAL wsrep_slave_threads = 2; SELECT NAME FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME LIKE 'test/t%'; NAME test/t1 test/t2 +SET GLOBAL wsrep_slave_threads = 2; LOCK TABLE t1 WRITE; connection node_1; INSERT INTO t1 VALUES (1); @@ -18,18 +20,20 @@ INSERT INTO t1 VALUES (1); INSERT INTO t2 VALUES (1); INSERT INTO t1 VALUES (1); INSERT INTO t2 VALUES (1); -INSERT INTO t1 VALUES (1); -INSERT INTO t2 VALUES (1); +INSERT INTO t1 select * from t1; +INSERT INTO t2 select * from t2; +INSERT INTO t1 select * from t1; +INSERT INTO t2 select * from t2; connection node_2; SET SESSION wsrep_sync_wait = 0; UNLOCK TABLES; SET SESSION wsrep_sync_wait = 15; -SELECT COUNT(*) = 10 FROM t1; -COUNT(*) = 10 -0 -SELECT COUNT(*) = 10 FROM t2; -COUNT(*) = 10 -0 +SELECT COUNT(*) as expect_20 FROM t1; +expect_20 +20 +SELECT COUNT(*) as expect_20 FROM t2; +expect_20 +20 SET GLOBAL wsrep_slave_threads = 1;; DROP TABLE t1; DROP TABLE t2; diff --git a/mysql-test/suite/galera/r/galera_partition.result b/mysql-test/suite/galera/r/galera_partition.result index c21d1005293..f09a0272eda 100644 --- a/mysql-test/suite/galera/r/galera_partition.result +++ b/mysql-test/suite/galera/r/galera_partition.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; call mtr.add_suppression("WSREP: RSU failed due to pending transactions, schema: test, query ALTER.*"); call mtr.add_suppression("WSREP: ALTER TABLE isolation failure"); @@ -395,14 +397,14 @@ SELECT COUNT(*) FROM t1; COUNT(*) 350 connection node_2; -call mtr.add_suppression("WSREP: Sending JOIN failed:.*"); -call p1(100);; +call mtr.add_suppression("WSREP: Sending JOIN failed:"); +call p1(10); connection node_3; -call mtr.add_suppression("WSREP: Sending JOIN failed:.*"); -call p1(100);; +call mtr.add_suppression("WSREP: Sending JOIN failed:"); +call p1(10); connection node_4; -call mtr.add_suppression("WSREP: Sending JOIN failed:.*"); -call p1(100);; +call mtr.add_suppression("WSREP: Sending JOIN failed:"); +call p1(10); connection node_1; SET SESSION wsrep_OSU_method='RSU'; SELECT @@wsrep_OSU_method; diff --git a/mysql-test/suite/galera/r/galera_pc_ignore_sb.result b/mysql-test/suite/galera/r/galera_pc_ignore_sb.result index 96ca12a9479..e9f6cae5181 100644 --- a/mysql-test/suite/galera/r/galera_pc_ignore_sb.result +++ b/mysql-test/suite/galera/r/galera_pc_ignore_sb.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; connection node_2; connection node_1; diff --git a/mysql-test/suite/galera/r/galera_pc_recovery.result b/mysql-test/suite/galera/r/galera_pc_recovery.result new file mode 100644 index 00000000000..17a43d17211 --- /dev/null +++ b/mysql-test/suite/galera/r/galera_pc_recovery.result @@ -0,0 +1,37 @@ +connection node_2; +connection node_1; +connection node_1; +connection node_2; +connection node_1; +CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB; +INSERT INTO t1 VALUES (1); +connection node_2; +SELECT COUNT(*) = 1 FROM t1; +COUNT(*) = 1 +1 +connection node_1; +SELECT VARIABLE_VALUE = 'Primary' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status'; +VARIABLE_VALUE = 'Primary' +1 +SELECT COUNT(*) = 1 FROM t1; +COUNT(*) = 1 +1 +connection node_2; +SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'; +VARIABLE_VALUE = 2 +1 +SELECT VARIABLE_VALUE = 'Primary' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status'; +VARIABLE_VALUE = 'Primary' +1 +SELECT COUNT(*) = 1 FROM t1; +COUNT(*) = 1 +1 +DROP TABLE t1; +connection node_1; +CALL mtr.add_suppression("points to own listening address, blacklisting"); +CALL mtr.add_suppression("non weight changing install in S_PRIM"); +CALL mtr.add_suppression("No re-merged primary component found"); +connection node_2; +CALL mtr.add_suppression("points to own listening address, blacklisting"); +CALL mtr.add_suppression("non weight changing install in S_PRIM"); +CALL mtr.add_suppression("No re-merged primary component found"); diff --git a/mysql-test/suite/galera/r/galera_performance_schema.result b/mysql-test/suite/galera/r/galera_performance_schema.result index 5b4994556d6..b40dcb0de60 100644 --- a/mysql-test/suite/galera/r/galera_performance_schema.result +++ b/mysql-test/suite/galera/r/galera_performance_schema.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; use performance_schema; SELECT name FROM threads @@ -10,20 +12,27 @@ create table t1 (a int not null primary key) engine=innodb; insert into t1 values (1),(2); use performance_schema; select name from mutex_instances where name like 'wait/synch/mutex/sql/LOCK_wsrep%' order by name; +name wait/synch/mutex/sql/LOCK_wsrep_cluster_config name wait/synch/mutex/sql/LOCK_wsrep_config_state name wait/synch/mutex/sql/LOCK_wsrep_desync +name wait/synch/mutex/sql/LOCK_wsrep_donor_monitor +name wait/synch/mutex/sql/LOCK_wsrep_group_commit +name wait/synch/mutex/sql/LOCK_wsrep_joiner_monitor name wait/synch/mutex/sql/LOCK_wsrep_ready name wait/synch/mutex/sql/LOCK_wsrep_replaying -name wait/synch/mutex/sql/LOCK_wsrep_rollback name wait/synch/mutex/sql/LOCK_wsrep_slave_threads +name wait/synch/mutex/sql/LOCK_wsrep_SR_pool +name wait/synch/mutex/sql/LOCK_wsrep_SR_store name wait/synch/mutex/sql/LOCK_wsrep_sst name wait/synch/mutex/sql/LOCK_wsrep_sst_init select name from cond_instances where name like 'wait/synch/cond/sql/COND_wsrep%' order by name; +name wait/synch/cond/sql/COND_wsrep_donor_monitor +name wait/synch/cond/sql/COND_wsrep_joiner_monitor name wait/synch/cond/sql/COND_wsrep_ready name wait/synch/cond/sql/COND_wsrep_replaying -name wait/synch/cond/sql/COND_wsrep_rollback name wait/synch/cond/sql/COND_wsrep_sst name wait/synch/cond/sql/COND_wsrep_sst_init +name wait/synch/cond/sql/COND_wsrep_wsrep_slave_threads connection node_2; use test; SET SESSION wsrep_on=OFF; diff --git a/mysql-test/suite/galera/r/galera_pk_bigint_signed.result b/mysql-test/suite/galera/r/galera_pk_bigint_signed.result index 807ab62c548..0b538778204 100644 --- a/mysql-test/suite/galera/r/galera_pk_bigint_signed.result +++ b/mysql-test/suite/galera/r/galera_pk_bigint_signed.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 BIGINT SIGNED PRIMARY KEY, f2 VARCHAR(5)) ENGINE=InnoDB; INSERT INTO t1 VALUES (-9223372036854775808, 'min'), @@ -27,6 +29,6 @@ COMMIT; SET AUTOCOMMIT=ON; connection node_2; COMMIT; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction SET AUTOCOMMIT=ON; DROP TABLE t1; diff --git a/mysql-test/suite/galera/r/galera_pk_bigint_unsigned.result b/mysql-test/suite/galera/r/galera_pk_bigint_unsigned.result index c94b7e2314a..9442f79cd14 100644 --- a/mysql-test/suite/galera/r/galera_pk_bigint_unsigned.result +++ b/mysql-test/suite/galera/r/galera_pk_bigint_unsigned.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 BIGINT UNSIGNED PRIMARY KEY, f2 VARCHAR(5)) ENGINE=InnoDB; INSERT INTO t1 VALUES (18446744073709551615, 'max') @@ -24,6 +26,6 @@ COMMIT; SET AUTOCOMMIT=ON; connection node_2; COMMIT; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction SET AUTOCOMMIT=ON; DROP TABLE t1; diff --git a/mysql-test/suite/galera/r/galera_prepared_statement.result b/mysql-test/suite/galera/r/galera_prepared_statement.result index 6f546b32819..b84f25e9929 100644 --- a/mysql-test/suite/galera/r/galera_prepared_statement.result +++ b/mysql-test/suite/galera/r/galera_prepared_statement.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 CHAR(5)) ENGINE=InnoDB; CREATE TABLE t2 (f1 CHAR(5)) ENGINE=InnoDB; CREATE TABLE t3 (f1 CHAR(5)) ENGINE=InnoDB; diff --git a/mysql-test/suite/galera/r/galera_query_cache.result b/mysql-test/suite/galera/r/galera_query_cache.result index e64c9438646..8f5bc4b6f37 100644 --- a/mysql-test/suite/galera/r/galera_query_cache.result +++ b/mysql-test/suite/galera/r/galera_query_cache.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (id INT PRIMARY KEY) ENGINE=InnoDB; INSERT INTO t1 VALUES (1); connection node_2; diff --git a/mysql-test/suite/galera/r/galera_query_cache_sync_wait.result b/mysql-test/suite/galera/r/galera_query_cache_sync_wait.result index a994852a78a..0f2f61ea97f 100644 --- a/mysql-test/suite/galera/r/galera_query_cache_sync_wait.result +++ b/mysql-test/suite/galera/r/galera_query_cache_sync_wait.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT) ENGINE=InnoDB; INSERT INTO t1 VALUES (1); connection node_2; diff --git a/mysql-test/suite/galera/r/galera_read_only.result b/mysql-test/suite/galera/r/galera_read_only.result index 4c2523f8691..fe8b45fa596 100644 --- a/mysql-test/suite/galera/r/galera_read_only.result +++ b/mysql-test/suite/galera/r/galera_read_only.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (id INT PRIMARY KEY) ENGINE=InnoDB; connection node_2; SET GLOBAL read_only=TRUE; diff --git a/mysql-test/suite/galera/r/galera_repl_key_format_flat16.result b/mysql-test/suite/galera/r/galera_repl_key_format_flat16.result index 2470f59c497..3d421216f93 100644 --- a/mysql-test/suite/galera/r/galera_repl_key_format_flat16.result +++ b/mysql-test/suite/galera/r/galera_repl_key_format_flat16.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; SET GLOBAL wsrep_provider_options = 'repl.key_format=FLAT16'; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; diff --git a/mysql-test/suite/galera/r/galera_repl_max_ws_size.result b/mysql-test/suite/galera/r/galera_repl_max_ws_size.result index da24a741351..0528df7b9f6 100644 --- a/mysql-test/suite/galera/r/galera_repl_max_ws_size.result +++ b/mysql-test/suite/galera/r/galera_repl_max_ws_size.result @@ -1,8 +1,10 @@ +connection node_2; +connection node_1; connection node_1; CREATE TABLE t1 (f1 VARCHAR(512)) ENGINE=InnoDB; SET GLOBAL wsrep_provider_options = 'repl.max_ws_size=512'; INSERT INTO t1 VALUES (REPEAT('a', 512)); -ERROR HY000: Got error 90 "Message too long" during COMMIT +ERROR HY000: Got error 5 "Input/output error" during COMMIT SELECT COUNT(*) = 0 FROM t1; COUNT(*) = 0 1 diff --git a/mysql-test/suite/galera/r/galera_restart_nochanges.result b/mysql-test/suite/galera/r/galera_restart_nochanges.result index b35ae50e2fb..09f8d9a586b 100644 --- a/mysql-test/suite/galera/r/galera_restart_nochanges.result +++ b/mysql-test/suite/galera/r/galera_restart_nochanges.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; connection node_2; connection node_1; diff --git a/mysql-test/suite/galera/r/galera_restart_on_unknown_option.result b/mysql-test/suite/galera/r/galera_restart_on_unknown_option.result index ba6f30fcf30..6e672c2d444 100644 --- a/mysql-test/suite/galera/r/galera_restart_on_unknown_option.result +++ b/mysql-test/suite/galera/r/galera_restart_on_unknown_option.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CALL mtr.add_suppression("Aborting"); CALL mtr.add_suppression("unknown option '--galera-unknown-option'"); connection node_1; diff --git a/mysql-test/suite/galera/r/galera_roles.result b/mysql-test/suite/galera/r/galera_roles.result index 7d6c57e8131..35487185db2 100644 --- a/mysql-test/suite/galera/r/galera_roles.result +++ b/mysql-test/suite/galera/r/galera_roles.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; # # Testing CREATE/GRANT role # diff --git a/mysql-test/suite/galera/r/galera_rsu_add_pk.result b/mysql-test/suite/galera/r/galera_rsu_add_pk.result index 2df08c3e4ff..a38f3ff30cb 100644 --- a/mysql-test/suite/galera/r/galera_rsu_add_pk.result +++ b/mysql-test/suite/galera/r/galera_rsu_add_pk.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; CREATE TABLE ten (f1 INTEGER); INSERT INTO ten VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); diff --git a/mysql-test/suite/galera/r/galera_rsu_drop_pk.result b/mysql-test/suite/galera/r/galera_rsu_drop_pk.result index a8b623cc37f..61aa5f015a1 100644 --- a/mysql-test/suite/galera/r/galera_rsu_drop_pk.result +++ b/mysql-test/suite/galera/r/galera_rsu_drop_pk.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; CREATE TABLE ten (f1 INTEGER) Engine=InnoDB; INSERT INTO ten VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); diff --git a/mysql-test/suite/galera/r/galera_rsu_error.result b/mysql-test/suite/galera/r/galera_rsu_error.result index 5c16e34b492..f78e8fa544c 100644 --- a/mysql-test/suite/galera/r/galera_rsu_error.result +++ b/mysql-test/suite/galera/r/galera_rsu_error.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INTEGER) Engine=InnoDB; INSERT INTO t1 VALUES (1), (1); connection node_2; diff --git a/mysql-test/suite/galera/r/galera_rsu_simple.result b/mysql-test/suite/galera/r/galera_rsu_simple.result index d0ddcfb4d64..d75ef094065 100644 --- a/mysql-test/suite/galera/r/galera_rsu_simple.result +++ b/mysql-test/suite/galera/r/galera_rsu_simple.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) Engine=InnoDB; connection node_2; SET SESSION wsrep_OSU_method = "RSU"; diff --git a/mysql-test/suite/galera/r/galera_rsu_wsrep_desync.result b/mysql-test/suite/galera/r/galera_rsu_wsrep_desync.result index a103e810588..310611a0e49 100644 --- a/mysql-test/suite/galera/r/galera_rsu_wsrep_desync.result +++ b/mysql-test/suite/galera/r/galera_rsu_wsrep_desync.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; CREATE TABLE t1 (f1 INTEGER) Engine=InnoDB; SET GLOBAL wsrep_desync=1; diff --git a/mysql-test/suite/galera/r/galera_sbr.result b/mysql-test/suite/galera/r/galera_sbr.result index 0bdaeef5b8a..c5fdecece0e 100644 --- a/mysql-test/suite/galera/r/galera_sbr.result +++ b/mysql-test/suite/galera/r/galera_sbr.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; SET SESSION binlog_format = 'STATEMENT'; Warnings: diff --git a/mysql-test/suite/galera/r/galera_sbr_binlog.result b/mysql-test/suite/galera/r/galera_sbr_binlog.result index 0bdaeef5b8a..c5fdecece0e 100644 --- a/mysql-test/suite/galera/r/galera_sbr_binlog.result +++ b/mysql-test/suite/galera/r/galera_sbr_binlog.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; SET SESSION binlog_format = 'STATEMENT'; Warnings: diff --git a/mysql-test/suite/galera/r/galera_schema_dirty_reads.result b/mysql-test/suite/galera/r/galera_schema_dirty_reads.result index edf20da92c6..fbac9ff4eb7 100644 --- a/mysql-test/suite/galera/r/galera_schema_dirty_reads.result +++ b/mysql-test/suite/galera/r/galera_schema_dirty_reads.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; USE information_schema; SELECT * FROM SESSION_VARIABLES WHERE VARIABLE_NAME LIKE "wsrep_dirty_reads"; VARIABLE_NAME VARIABLE_VALUE diff --git a/mysql-test/suite/galera/r/galera_serializable.result b/mysql-test/suite/galera/r/galera_serializable.result index be3f93a081f..e3785663271 100644 --- a/mysql-test/suite/galera/r/galera_serializable.result +++ b/mysql-test/suite/galera/r/galera_serializable.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; CREATE TABLE t1 (id INT PRIMARY KEY, f2 INTEGER) ENGINE=InnoDB; SET AUTOCOMMIT=OFF; @@ -9,7 +11,7 @@ connection node_2; INSERT INTO t1 VALUES (1,1); connection node_1; SELECT * FROM t1; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction ROLLBACK; DELETE FROM t1; connection node_1; @@ -22,7 +24,7 @@ connection node_2; UPDATE t1 SET f2 = 2; connection node_1; UPDATE t1 SET f2 = 3; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction ROLLBACK; DELETE FROM t1; connection node_1; @@ -33,5 +35,5 @@ connection node_2; INSERT INTO t1 VALUES (1,2); connection node_1; COMMIT; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction DROP TABLE t1; diff --git a/mysql-test/suite/galera/r/galera_server.result b/mysql-test/suite/galera/r/galera_server.result index cc08b826e82..5130dee3459 100644 --- a/mysql-test/suite/galera/r/galera_server.result +++ b/mysql-test/suite/galera/r/galera_server.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; # On node_1 CREATE SERVER s1 diff --git a/mysql-test/suite/galera/r/galera_set_position_after_cert_failure.result b/mysql-test/suite/galera/r/galera_set_position_after_cert_failure.result new file mode 100644 index 00000000000..7717428ba21 --- /dev/null +++ b/mysql-test/suite/galera/r/galera_set_position_after_cert_failure.result @@ -0,0 +1,36 @@ +connection node_2; +connection node_1; +connection node_1; +connection node_2; +connection node_2; +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY, f2 CHAR(255)) Engine=InnoDB; +SET GLOBAL wsrep_slave_threads = 2; +SET GLOBAL DEBUG_DBUG = "d,sync.wsrep_apply_cb"; +connection node_1; +INSERT INTO t1 VALUES (1, 'node_1');; +connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2; +connection node_2a; +SET DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached"; +connection node_2; +SET SESSION wsrep_sync_wait = 0; +SET SESSION wsrep_retry_autocommit = 0; +INSERT INTO t1 VALUES (1, 'node_2');; +connection node_2a; +SET SESSION wsrep_sync_wait = 0; +SET DEBUG_SYNC = "now SIGNAL signal.wsrep_apply_cb"; +connection node_2; +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction +connection node_1; +connection node_2a; +SET GLOBAL DEBUG_DBUG = ""; +SET DEBUG_SYNC = "RESET"; +disconnect node_2a; +connection node_2; +connection node_1; +SET SESSION wsrep_sync_wait = 0; +Performing --wsrep-recover ... +connection node_2; +Using --wsrep-start-position when starting mysqld ... +connection node_1; +DROP TABLE t1; +SET GLOBAL wsrep_slave_threads = DEFAULT; diff --git a/mysql-test/suite/galera/r/galera_set_position_after_dummy_writeset.result b/mysql-test/suite/galera/r/galera_set_position_after_dummy_writeset.result new file mode 100644 index 00000000000..da398b76754 --- /dev/null +++ b/mysql-test/suite/galera/r/galera_set_position_after_dummy_writeset.result @@ -0,0 +1,36 @@ +connection node_2; +connection node_1; +connection node_1; +connection node_2; +connection node_1; +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY, f2 CHAR(255)) Engine=InnoDB; +SET GLOBAL wsrep_slave_threads = 2; +SET GLOBAL DEBUG_DBUG = "d,sync.wsrep_apply_cb"; +connection node_2; +INSERT INTO t1 VALUES (1, 'node_2');; +connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1; +connection node_1a; +SET SESSION wsrep_sync_wait=0; +SET DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached"; +connection node_1; +SET SESSION wsrep_sync_wait = 0; +SET SESSION wsrep_retry_autocommit = 0; +INSERT INTO t1 VALUES (1, 'node_1');; +connection node_1a; +SET GLOBAL DEBUG_DBUG = ""; +SET DEBUG_SYNC = "now SIGNAL signal.wsrep_apply_cb"; +connection node_1; +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction +connection node_2; +connection node_2; +connection node_1; +SET SESSION wsrep_sync_wait = 0; +Performing --wsrep-recover ... +connection node_2; +Using --wsrep-start-position when starting mysqld ... +connection node_1; +DROP TABLE t1; +SET GLOBAL wsrep_slave_threads = DEFAULT; +connection node_1a; +SET GLOBAL DEBUG_DBUG=NULL; +SET DEBUG_SYNC = "RESET"; diff --git a/mysql-test/suite/galera/r/galera_shutdown_nonprim.result b/mysql-test/suite/galera/r/galera_shutdown_nonprim.result index 5353543e395..8b7697432a3 100644 --- a/mysql-test/suite/galera/r/galera_shutdown_nonprim.result +++ b/mysql-test/suite/galera/r/galera_shutdown_nonprim.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; connection node_2; connection node_1; diff --git a/mysql-test/suite/galera/r/galera_slave_replay.result b/mysql-test/suite/galera/r/galera_slave_replay.result index 760617be5f7..0b0199c4a02 100644 --- a/mysql-test/suite/galera/r/galera_slave_replay.result +++ b/mysql-test/suite/galera/r/galera_slave_replay.result @@ -1,10 +1,13 @@ connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2; connection node_2a; +connection node_2; connection node_1; +connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3; +connection node_3; RESET MASTER; connection node_2a; START SLAVE; -connection node_1; +connection node_3; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY, f2 CHAR(1)) engine=innodb; INSERT INTO t1 VALUES (1, 'a'); INSERT INTO t1 VALUES (3, 'a'); @@ -18,15 +21,14 @@ f1 f2 UPDATE t1 SET f2 = 'c' WHERE f1 > 1; connection node_2a; SET SESSION wsrep_sync_wait = 0; -connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3; -connection node_3; +connection node_1; SET SESSION wsrep_sync_wait = 0; connection node_2a; -SET GLOBAL wsrep_provider_options = 'dbug=d,commit_monitor_enter_sync'; +SET GLOBAL wsrep_provider_options = 'dbug=d,commit_monitor_master_enter_sync'; SET GLOBAL debug_dbug = "d,sync.wsrep_apply_cb"; -connection node_3; -INSERT INTO test.t1 VALUES (2, 'b'); connection node_1; +INSERT INTO test.t1 VALUES (2, 'b'); +connection node_3; COMMIT; connection node_2a; SET SESSION wsrep_on = 0; @@ -35,8 +37,8 @@ SET GLOBAL debug_dbug = ""; SET DEBUG_SYNC = "now SIGNAL signal.wsrep_apply_cb"; connection node_2a; SET GLOBAL wsrep_provider_options = 'dbug='; -SET GLOBAL wsrep_provider_options = 'signal=commit_monitor_enter_sync'; -connection node_1; +SET GLOBAL wsrep_provider_options = 'signal=commit_monitor_master_enter_sync'; +connection node_3; SELECT COUNT(*) = 1 FROM t1 WHERE f2 = 'a'; COUNT(*) = 1 1 @@ -61,27 +63,24 @@ SET DEBUG_SYNC = "RESET"; # # test phase with real abort # -connection node_1; +connection node_3; set binlog_format=ROW; insert into t1 values (4, 'd'); SET AUTOCOMMIT=ON; START TRANSACTION; UPDATE t1 SET f2 = 'd' WHERE f1 = 3; connection node_2a; -SET GLOBAL wsrep_provider_options = 'dbug=d,commit_monitor_enter_sync'; SET GLOBAL debug_dbug = "d,sync.wsrep_apply_cb"; -connection node_3; -UPDATE test.t1 SET f2 = 'e' WHERE f1 = 3; connection node_1; +UPDATE test.t1 SET f2 = 'e' WHERE f1 = 3; +connection node_2a; +SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached"; +connection node_3; COMMIT; connection node_2a; SET GLOBAL debug_dbug = ""; SET DEBUG_SYNC = "now SIGNAL signal.wsrep_apply_cb"; connection node_2a; -SET GLOBAL wsrep_provider_options = 'dbug='; -SET GLOBAL wsrep_provider_options = 'signal=commit_monitor_enter_sync'; -SET DEBUG_SYNC = "RESET"; -connection node_2a; set session wsrep_sync_wait=15; SELECT COUNT(*) = 1 FROM test.t1 WHERE f2 = 'e'; COUNT(*) = 1 @@ -89,7 +88,8 @@ COUNT(*) = 1 set session wsrep_sync_wait=0; STOP SLAVE; RESET SLAVE; +SET DEBUG_SYNC = "RESET"; DROP TABLE t1; -connection node_1; +connection node_3; DROP TABLE t1; RESET MASTER; diff --git a/mysql-test/suite/galera/r/galera_sp_bf_abort.result b/mysql-test/suite/galera/r/galera_sp_bf_abort.result index 918a8a8bf1c..9216cc4fa5a 100644 --- a/mysql-test/suite/galera/r/galera_sp_bf_abort.result +++ b/mysql-test/suite/galera/r/galera_sp_bf_abort.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY, f2 CHAR(1)); connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1; @@ -141,8 +143,6 @@ SET GLOBAL wsrep_provider_options = 'dbug='; SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; SET GLOBAL wsrep_provider_options = 'signal=after_replicate_sync'; connection node_1; -Warnings: -Error 1317 Query execution was interrupted SET SESSION wsrep_sync_wait = default; SELECT * FROM t1; f1 f2 @@ -182,8 +182,6 @@ SET GLOBAL wsrep_provider_options = 'dbug='; SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; SET GLOBAL wsrep_provider_options = 'signal=after_replicate_sync'; connection node_1; -Warnings: -Error 1317 Query execution was interrupted SET SESSION wsrep_sync_wait = default; SELECT * FROM t1; f1 f2 @@ -223,8 +221,6 @@ SET GLOBAL wsrep_provider_options = 'dbug='; SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; SET GLOBAL wsrep_provider_options = 'signal=after_replicate_sync'; connection node_1; -Warnings: -Error 1317 Query execution was interrupted SET SESSION wsrep_sync_wait = default; SELECT * FROM t1; f1 f2 diff --git a/mysql-test/suite/galera/r/galera_sp_insert_parallel.result b/mysql-test/suite/galera/r/galera_sp_insert_parallel.result new file mode 100644 index 00000000000..3f072be7004 --- /dev/null +++ b/mysql-test/suite/galera/r/galera_sp_insert_parallel.result @@ -0,0 +1,41 @@ +connection node_2; +connection node_1; +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY, f2 INTEGER) ENGINE=InnoDB; +CREATE PROCEDURE proc_insert() +BEGIN +DECLARE i INT; +DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN END; +SET i = 0; +WHILE i < 1000 DO +INSERT IGNORE INTO t1 (f1, f2) +VALUES (FLOOR(1 + RAND() * 65535), FLOOR(1 + RAND() * 15)), +(FLOOR(1 + RAND() * 65535), FLOOR(1 + RAND() * 15)), +(FLOOR(1 + RAND() * 65535), FLOOR(1 + RAND() * 15)), +(FLOOR(1 + RAND() * 65535), FLOOR(1 + RAND() * 15)), +(FLOOR(1 + RAND() * 65535), FLOOR(1 + RAND() * 15)), +(FLOOR(1 + RAND() * 65535), FLOOR(1 + RAND() * 15)), +(FLOOR(1 + RAND() * 65535), FLOOR(1 + RAND() * 15)), +(FLOOR(1 + RAND() * 65535), FLOOR(1 + RAND() * 15)), +(FLOOR(1 + RAND() * 65535), FLOOR(1 + RAND() * 15)); +SET i = i + 1; +END WHILE; +END| +connection node_1; +SELECT 0; +0 +0 +SET SESSION wsrep_sync_wait = 0; +CALL proc_insert; +connection node_2; +SELECT 0; +0 +0 +SET SESSION wsrep_sync_wait = 0; +CALL proc_insert; +connection node_1; +SET SESSION wsrep_sync_wait = default; +connection node_2; +SET SESSION wsrep_sync_wait = default; +connection node_1; +DROP PROCEDURE proc_insert; +DROP TABLE t1; diff --git a/mysql-test/suite/galera/r/galera_sql_log_bin_zero.result b/mysql-test/suite/galera/r/galera_sql_log_bin_zero.result index 14407c917a1..e9f81192386 100644 --- a/mysql-test/suite/galera/r/galera_sql_log_bin_zero.result +++ b/mysql-test/suite/galera/r/galera_sql_log_bin_zero.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB; SET SESSION sql_log_bin = 0; INSERT INTO t1 VALUES (1); diff --git a/mysql-test/suite/galera/r/galera_ssl.result b/mysql-test/suite/galera/r/galera_ssl.result index 022d06319b8..ec3b717e3f3 100644 --- a/mysql-test/suite/galera/r/galera_ssl.result +++ b/mysql-test/suite/galera/r/galera_ssl.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; SELECT VARIABLE_VALUE = 'Synced' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_state_comment'; VARIABLE_VALUE = 'Synced' 1 diff --git a/mysql-test/suite/galera/r/galera_ssl_compression.result b/mysql-test/suite/galera/r/galera_ssl_compression.result index 333d646376c..0acc4b97eea 100644 --- a/mysql-test/suite/galera/r/galera_ssl_compression.result +++ b/mysql-test/suite/galera/r/galera_ssl_compression.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; SELECT VARIABLE_VALUE = 'Synced' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_state_comment'; VARIABLE_VALUE = 'Synced' 1 diff --git a/mysql-test/suite/galera/r/galera_sst_mariabackup.result b/mysql-test/suite/galera/r/galera_sst_mariabackup.result index fdb5883b590..4fdc283b286 100644 --- a/mysql-test/suite/galera/r/galera_sst_mariabackup.result +++ b/mysql-test/suite/galera/r/galera_sst_mariabackup.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; connection node_2; Performing State Transfer on a server that has been shut down cleanly and restarted diff --git a/mysql-test/suite/galera/r/galera_sst_mariabackup_data_dir.result b/mysql-test/suite/galera/r/galera_sst_mariabackup_data_dir.result index fdb5883b590..4fdc283b286 100644 --- a/mysql-test/suite/galera/r/galera_sst_mariabackup_data_dir.result +++ b/mysql-test/suite/galera/r/galera_sst_mariabackup_data_dir.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; connection node_2; Performing State Transfer on a server that has been shut down cleanly and restarted diff --git a/mysql-test/suite/galera/r/galera_sst_mariabackup_encrypt_with_key.result b/mysql-test/suite/galera/r/galera_sst_mariabackup_encrypt_with_key.result index 990e0a29506..409da775d9a 100644 --- a/mysql-test/suite/galera/r/galera_sst_mariabackup_encrypt_with_key.result +++ b/mysql-test/suite/galera/r/galera_sst_mariabackup_encrypt_with_key.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; SELECT 1; 1 1 diff --git a/mysql-test/suite/galera/r/galera_sst_mariabackup_lost_found.result b/mysql-test/suite/galera/r/galera_sst_mariabackup_lost_found.result index b2a2005748f..2d5705c6e35 100644 --- a/mysql-test/suite/galera/r/galera_sst_mariabackup_lost_found.result +++ b/mysql-test/suite/galera/r/galera_sst_mariabackup_lost_found.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; connection node_2; connection node_2; diff --git a/mysql-test/suite/galera/r/galera_sst_mariabackup_table_options.result b/mysql-test/suite/galera/r/galera_sst_mariabackup_table_options.result index 9180ed5e421..568c06de94c 100644 --- a/mysql-test/suite/galera/r/galera_sst_mariabackup_table_options.result +++ b/mysql-test/suite/galera/r/galera_sst_mariabackup_table_options.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; connection node_2; Performing State Transfer on a server that starts from a clean var directory diff --git a/mysql-test/suite/galera/r/galera_sst_mysqldump,debug.rdiff b/mysql-test/suite/galera/r/galera_sst_mysqldump,debug.rdiff index 3eadee615ed..2978411c8f7 100644 --- a/mysql-test/suite/galera/r/galera_sst_mysqldump,debug.rdiff +++ b/mysql-test/suite/galera/r/galera_sst_mysqldump,debug.rdiff @@ -1,6 +1,22 @@ ---- galera_sst_mysqldump.result -+++ galera_sst_mysqldump,debug.reject -@@ -388,6 +388,114 @@ +--- galera_sst_mysqldump.result 2018-11-29 23:54:03.663607613 +0100 ++++ galera_sst_mysqldump,debug.reject 2018-11-29 23:55:42.377562815 +0100 +@@ -1,3 +1,5 @@ ++connection node_2; ++connection node_1; + Setting SST method to mysqldump ... + call mtr.add_suppression("WSREP: wsrep_sst_method is set to 'mysqldump' yet mysqld bind_address is set to '127.0.0.1'"); + call mtr.add_suppression("Failed to load slave replication state from table mysql.gtid_slave_pos"); +@@ -56,6 +58,9 @@ + INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); + connection node_2; + Loading wsrep provider ... ++disconnect node_2; ++connect node_2, 127.0.0.1, root, , test, $NODE_MYPORT_2; ++connection node_2; + SET AUTOCOMMIT=OFF; + START TRANSACTION; + INSERT INTO t1 VALUES ('node2_committed_after'); +@@ -390,6 +395,114 @@ DROP TABLE t1; COMMIT; SET AUTOCOMMIT=ON; diff --git a/mysql-test/suite/galera/r/galera_sst_mysqldump,release.rdiff b/mysql-test/suite/galera/r/galera_sst_mysqldump,release.rdiff new file mode 100644 index 00000000000..3e8fee1b098 --- /dev/null +++ b/mysql-test/suite/galera/r/galera_sst_mysqldump,release.rdiff @@ -0,0 +1,18 @@ +--- suite/galera/r/galera_sst_mysqldump.result 2018-12-20 14:22:41.730134062 +0100 ++++ suite/galera/r/galera_sst_mysqldump.reject 2019-01-16 22:18:44.139781857 +0100 +@@ -1,3 +1,5 @@ ++connection node_2; ++connection node_1; + Setting SST method to mysqldump ... + call mtr.add_suppression("WSREP: wsrep_sst_method is set to 'mysqldump' yet mysqld bind_address is set to '127.0.0.1'"); + call mtr.add_suppression("Failed to load slave replication state from table mysql.gtid_slave_pos"); +@@ -56,6 +58,9 @@ + INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); + connection node_2; + Loading wsrep provider ... ++disconnect node_2; ++connect node_2, 127.0.0.1, root, , test, $NODE_MYPORT_2; ++connection node_2; + SET AUTOCOMMIT=OFF; + START TRANSACTION; + INSERT INTO t1 VALUES ('node2_committed_after'); diff --git a/mysql-test/suite/galera/r/galera_sst_mysqldump.result b/mysql-test/suite/galera/r/galera_sst_mysqldump.result index 5c530c32ce6..4ed679ba477 100644 --- a/mysql-test/suite/galera/r/galera_sst_mysqldump.result +++ b/mysql-test/suite/galera/r/galera_sst_mysqldump.result @@ -400,3 +400,4 @@ CALL mtr.add_suppression("Can't open and lock time zone table"); CALL mtr.add_suppression("Can't open and lock privilege tables"); CALL mtr.add_suppression("Info table is not ready to be used"); CALL mtr.add_suppression("Native table .* has the wrong structure"); +CALL mtr.add_suppression("Table \'mysql.gtid_slave_pos\' doesn\'t exist"); diff --git a/mysql-test/suite/galera/r/galera_sst_mysqldump_with_key.result b/mysql-test/suite/galera/r/galera_sst_mysqldump_with_key.result index de52ac2fd1d..21b912ac222 100644 --- a/mysql-test/suite/galera/r/galera_sst_mysqldump_with_key.result +++ b/mysql-test/suite/galera/r/galera_sst_mysqldump_with_key.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; Setting SST method to mysqldump ... call mtr.add_suppression("WSREP: wsrep_sst_method is set to 'mysqldump' yet mysqld bind_address is set to '127.0.0.1'"); call mtr.add_suppression("Failed to load slave replication state from table mysql.gtid_slave_pos"); @@ -214,4 +216,5 @@ CALL mtr.add_suppression("Can't open and lock time zone table"); CALL mtr.add_suppression("Can't open and lock privilege tables"); CALL mtr.add_suppression("Info table is not ready to be used"); CALL mtr.add_suppression("Native table .* has the wrong structure"); +CALL mtr.add_suppression("Table \'mysql.gtid_slave_pos\' doesn\'t exist"); DROP USER sslsst; diff --git a/mysql-test/suite/galera/r/galera_sst_rsync.result b/mysql-test/suite/galera/r/galera_sst_rsync.result index ff85a7d6c0f..d41d0d34e75 100644 --- a/mysql-test/suite/galera/r/galera_sst_rsync.result +++ b/mysql-test/suite/galera/r/galera_sst_rsync.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; connection node_2; Performing State Transfer on a server that has been shut down cleanly and restarted diff --git a/mysql-test/suite/galera/r/galera_sst_rsync2,debug.rdiff b/mysql-test/suite/galera/r/galera_sst_rsync2,debug.rdiff index 525156d88da..8ffe51c0cc3 100644 --- a/mysql-test/suite/galera/r/galera_sst_rsync2,debug.rdiff +++ b/mysql-test/suite/galera/r/galera_sst_rsync2,debug.rdiff @@ -1,6 +1,12 @@ ---- suite/galera/r/galera_sst_rsync2.result 2018-09-12 13:09:35.352229478 +0200 -+++ suite/galera/r/galera_sst_rsync2,debug.reject 2018-09-12 17:00:51.601974979 +0200 -@@ -286,3 +286,111 @@ +--- galera_sst_rsync2.result 2018-11-29 17:57:53.288606346 +0100 ++++ galera_sst_rsync2,debug.reject 2018-11-29 18:00:01.172512000 +0100 +@@ -1,3 +1,5 @@ ++connection node_2; ++connection node_1; + connection node_1; + connection node_2; + Performing State Transfer on a server that has been shut down cleanly and restarted +@@ -286,3 +288,111 @@ DROP TABLE t1; COMMIT; SET AUTOCOMMIT=ON; diff --git a/mysql-test/suite/galera/r/galera_sst_rsync2.result b/mysql-test/suite/galera/r/galera_sst_rsync2.result index ff85a7d6c0f..d41d0d34e75 100644 --- a/mysql-test/suite/galera/r/galera_sst_rsync2.result +++ b/mysql-test/suite/galera/r/galera_sst_rsync2.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; connection node_2; Performing State Transfer on a server that has been shut down cleanly and restarted diff --git a/mysql-test/suite/galera/r/galera_sst_rsync_data_dir.result b/mysql-test/suite/galera/r/galera_sst_rsync_data_dir.result index ff85a7d6c0f..d41d0d34e75 100644 --- a/mysql-test/suite/galera/r/galera_sst_rsync_data_dir.result +++ b/mysql-test/suite/galera/r/galera_sst_rsync_data_dir.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; connection node_2; Performing State Transfer on a server that has been shut down cleanly and restarted diff --git a/mysql-test/suite/galera/r/galera_status_cluster.result b/mysql-test/suite/galera/r/galera_status_cluster.result index ad92a51b775..9db0b88adc9 100644 --- a/mysql-test/suite/galera/r/galera_status_cluster.result +++ b/mysql-test/suite/galera/r/galera_status_cluster.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'; VARIABLE_VALUE = 2 diff --git a/mysql-test/suite/galera/r/galera_status_local_index.result b/mysql-test/suite/galera/r/galera_status_local_index.result index 8c36b60cc5f..c67498fff9f 100644 --- a/mysql-test/suite/galera/r/galera_status_local_index.result +++ b/mysql-test/suite/galera/r/galera_status_local_index.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; CREATE TABLE wsrep_local_indexes (wsrep_local_index INTEGER); INSERT INTO wsrep_local_indexes VALUES ((SELECT variable_value FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE variable_name = 'wsrep_local_index')); diff --git a/mysql-test/suite/galera/r/galera_status_local_state.result b/mysql-test/suite/galera/r/galera_status_local_state.result index 65713f1975c..3fe988ee6ac 100644 --- a/mysql-test/suite/galera/r/galera_status_local_state.result +++ b/mysql-test/suite/galera/r/galera_status_local_state.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; SELECT VARIABLE_VALUE = 4 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_state'; VARIABLE_VALUE = 4 1 diff --git a/mysql-test/suite/galera/r/galera_suspend_slave.result b/mysql-test/suite/galera/r/galera_suspend_slave.result index 07433399081..ce49b491778 100644 --- a/mysql-test/suite/galera/r/galera_suspend_slave.result +++ b/mysql-test/suite/galera/r/galera_suspend_slave.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; connection node_2; connection node_1; diff --git a/mysql-test/suite/galera/r/galera_sync_wait_show.result b/mysql-test/suite/galera/r/galera_sync_wait_show.result index def771ff88d..793da3246ff 100644 --- a/mysql-test/suite/galera/r/galera_sync_wait_show.result +++ b/mysql-test/suite/galera/r/galera_sync_wait_show.result @@ -1,4 +1,6 @@ connection node_2; +connection node_1; +connection node_2; SET SESSION wsrep_sync_wait = 8; connection node_1; CREATE DATABASE db1; diff --git a/mysql-test/suite/galera/r/galera_sync_wait_upto.result b/mysql-test/suite/galera/r/galera_sync_wait_upto.result new file mode 100644 index 00000000000..7d691e105da --- /dev/null +++ b/mysql-test/suite/galera/r/galera_sync_wait_upto.result @@ -0,0 +1,43 @@ +connection node_2; +connection node_1; +CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB; +INSERT INTO t1 VALUES (1); +SELECT WSREP_SYNC_WAIT_UPTO_GTID(NULL); +ERROR HY000: Incorrect arguments to wsrep_sync_wait_upto_gtid +SELECT WSREP_SYNC_WAIT_UPTO_GTID('a'); +ERROR HY000: Incorrect arguments to wsrep_sync_wait_upto_gtid +SELECT WSREP_SYNC_WAIT_UPTO_GTID(2); +ERROR HY000: Incorrect arguments to wsrep_sync_wait_upto_gtid +WSREP_SYNC_WAIT_UPTO +1 +WSREP_SYNC_WAIT_UPTO +1 +WSREP_SYNC_WAIT_UPTO +1 +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +connection node_2; +SET GLOBAL DEBUG_DBUG = "d,sync.wsrep_apply_cb"; +connection node_1; +INSERT INTO t1 VALUES (2); +INSERT INTO t1 VALUES (3); +connection node_2; +SET SESSION wsrep_sync_wait = 0; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2; +connection node_2a; +SET SESSION wsrep_sync_wait = 0; +SET DEBUG_SYNC = "now SIGNAL signal.wsrep_apply_cb"; +connection node_2; +WSREP_SYNC_WAIT_UPTO +1 +gtid_current = gtid_first +1 +SET GLOBAL DEBUG_DBUG = ""; +SET DEBUG_SYNC = "now SIGNAL signal.wsrep_apply_cb"; +WSREP_SYNC_WAIT_UPTO +1 +seqno_current = seqno_second +1 +SET DEBUG_SYNC = "RESET"; +connection node_1; +DROP TABLE t1; diff --git a/mysql-test/suite/galera/r/galera_toi_alter_auto_increment.result b/mysql-test/suite/galera/r/galera_toi_alter_auto_increment.result index 8a86dfd11e2..a23b0523140 100644 --- a/mysql-test/suite/galera/r/galera_toi_alter_auto_increment.result +++ b/mysql-test/suite/galera/r/galera_toi_alter_auto_increment.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; CREATE TABLE ten (f1 INTEGER) ENGINE=InnoDB; INSERT INTO ten VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10); diff --git a/mysql-test/suite/galera/r/galera_toi_ddl_error.result b/mysql-test/suite/galera/r/galera_toi_ddl_error.result index dafad153867..386dc28bed3 100644 --- a/mysql-test/suite/galera/r/galera_toi_ddl_error.result +++ b/mysql-test/suite/galera/r/galera_toi_ddl_error.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE ten (f1 INTEGER) ENGINE=InnoDB; INSERT INTO ten VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10); CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB; @@ -19,3 +21,6 @@ t1 CREATE TABLE `t1` ( ) ENGINE=InnoDB DEFAULT CHARSET=latin1 DROP TABLE t1; DROP TABLE ten; +CALL mtr.add_suppression("Ignoring error 'Duplicate entry '111110' for key 'PRIMARY'' on query."); +connection node_2; +CALL mtr.add_suppression("Ignoring error 'Duplicate entry '111110' for key 'PRIMARY'' on query."); diff --git a/mysql-test/suite/galera/r/galera_toi_ddl_fk_insert.result b/mysql-test/suite/galera/r/galera_toi_ddl_fk_insert.result index 94752ed7c76..6e55c59ad15 100644 --- a/mysql-test/suite/galera/r/galera_toi_ddl_fk_insert.result +++ b/mysql-test/suite/galera/r/galera_toi_ddl_fk_insert.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE ten (f1 INTEGER NOT NULL PRIMARY KEY) ENGINE=InnoDB; INSERT INTO ten VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10); CREATE TABLE parent ( diff --git a/mysql-test/suite/galera/r/galera_toi_ddl_fk_update.result b/mysql-test/suite/galera/r/galera_toi_ddl_fk_update.result index a5db90aa965..a7966e36133 100644 --- a/mysql-test/suite/galera/r/galera_toi_ddl_fk_update.result +++ b/mysql-test/suite/galera/r/galera_toi_ddl_fk_update.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE ten (f1 INTEGER) ENGINE=InnoDB; INSERT INTO ten VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10); CREATE TABLE parent ( diff --git a/mysql-test/suite/galera/r/galera_toi_ddl_locking.result b/mysql-test/suite/galera/r/galera_toi_ddl_locking.result index 68743c024a0..bbe181ce6f5 100644 --- a/mysql-test/suite/galera/r/galera_toi_ddl_locking.result +++ b/mysql-test/suite/galera/r/galera_toi_ddl_locking.result @@ -1,32 +1,46 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB; CREATE TABLE t2 (f1 INTEGER) ENGINE=InnoDB; +SET SESSION wsrep_sync_wait = 0; connection node_1; -SET DEBUG_SYNC = 'alter_table_before_open_tables WAIT_FOR continue'; +SET DEBUG_SYNC= 'RESET'; +SET DEBUG_SYNC = 'alter_table_before_open_tables SIGNAL before_open_tables WAIT_FOR continue'; ALTER TABLE t1 ADD COLUMN f2 INTEGER;; connection node_1a; -SET SESSION wsrep_sync_wait = 0; +SET DEBUG_SYNC= 'now WAIT_FOR before_open_tables'; +SET wsrep_retry_autocommit=0; SELECT COUNT(*) = 0 FROM t1; COUNT(*) = 0 1 SELECT COUNT(*) = 0 FROM t2; COUNT(*) = 0 1 -INSERT INTO t1 VALUES (1); -Got one of the listed errors +INSERT INTO t1 VALUES (1);; +connection node_1c; +SET SESSION wsrep_sync_wait = 0; SET AUTOCOMMIT=OFF; START TRANSACTION; +SELECT COUNT(*) = 0 FROM t1; +COUNT(*) = 0 +1 +SELECT COUNT(*) = 0 FROM t2; +COUNT(*) = 0 +1 INSERT INTO t2 VALUES (1); COMMIT;; connection node_1b; SET SESSION wsrep_sync_wait = 0; -SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE INFO = 'Commit'; -COUNT(*) = 1 -1 SELECT COUNT(*) = 0 FROM t2; COUNT(*) = 0 1 +SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE INFO = 'Commit'; +COUNT(*) = 1 +1 SET DEBUG_SYNC= 'now SIGNAL continue'; connection node_1a; +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction +connection node_1c; connection node_1; SELECT COUNT(*) = 0 FROM t1; COUNT(*) = 0 @@ -34,6 +48,7 @@ COUNT(*) = 0 SELECT COUNT(*) = 1 FROM t2; COUNT(*) = 1 1 +SET debug_sync='RESET'; connection node_2; SELECT COUNT(*) = 0 FROM t1; COUNT(*) = 0 @@ -41,9 +56,5 @@ COUNT(*) = 0 SELECT COUNT(*) = 1 FROM t2; COUNT(*) = 1 1 -connection node_1; -SET DEBUG_SYNC= 'RESET'; -connection node_1b; -SET DEBUG_SYNC= 'RESET'; DROP TABLE t1; DROP TABLE t2; diff --git a/mysql-test/suite/galera/r/galera_toi_ddl_nonconflicting.result b/mysql-test/suite/galera/r/galera_toi_ddl_nonconflicting.result index 3844fa97d82..5412cd3faee 100644 --- a/mysql-test/suite/galera/r/galera_toi_ddl_nonconflicting.result +++ b/mysql-test/suite/galera/r/galera_toi_ddl_nonconflicting.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY AUTO_INCREMENT, f2 INTEGER); connection node_2; ALTER TABLE t1 ADD COLUMN f3 INTEGER; INSERT INTO t1 (f1, f2) VALUES (DEFAULT, 123);; diff --git a/mysql-test/suite/galera/r/galera_toi_ddl_sequential.result b/mysql-test/suite/galera/r/galera_toi_ddl_sequential.result index 722bb9d9e12..db702b1a59e 100644 --- a/mysql-test/suite/galera/r/galera_toi_ddl_sequential.result +++ b/mysql-test/suite/galera/r/galera_toi_ddl_sequential.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; INSERT INTO t1 VALUES (1); connection node_2; diff --git a/mysql-test/suite/galera/r/galera_toi_drop_database.result b/mysql-test/suite/galera/r/galera_toi_drop_database.result index 6d88c8ea230..48056c70126 100644 --- a/mysql-test/suite/galera/r/galera_toi_drop_database.result +++ b/mysql-test/suite/galera/r/galera_toi_drop_database.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; CREATE DATABASE database1; USE database1; @@ -14,9 +16,9 @@ INSERT INTO t2 (f1) SELECT 1 FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4, te connection node_2; DROP DATABASE database1;; connection node_1; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction connection node_1a; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction connection node_2; connection node_1; SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'database1'; diff --git a/mysql-test/suite/galera/r/galera_toi_ftwrl.result b/mysql-test/suite/galera/r/galera_toi_ftwrl.result index 0f13e95b689..fdc8b294c1c 100644 --- a/mysql-test/suite/galera/r/galera_toi_ftwrl.result +++ b/mysql-test/suite/galera/r/galera_toi_ftwrl.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (id INT PRIMARY KEY) ENGINE=InnoDB; connection node_2; FLUSH TABLES WITH READ LOCK; diff --git a/mysql-test/suite/galera/r/galera_toi_lock_exclusive.result b/mysql-test/suite/galera/r/galera_toi_lock_exclusive.result index f5cc14ed0f1..ee8c826fd18 100644 --- a/mysql-test/suite/galera/r/galera_toi_lock_exclusive.result +++ b/mysql-test/suite/galera/r/galera_toi_lock_exclusive.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (id INT PRIMARY KEY) ENGINE=InnoDB; INSERT INTO t1 VALUES (1); connection node_2; @@ -8,7 +10,7 @@ connection node_2a; ALTER TABLE t1 ADD COLUMN f2 INTEGER, LOCK=EXCLUSIVE; connection node_2; COMMIT; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction connection node_1; INSERT INTO t1 VALUES (2, 2); SELECT COUNT(*) = 2 FROM t1; diff --git a/mysql-test/suite/galera/r/galera_toi_lock_shared.result b/mysql-test/suite/galera/r/galera_toi_lock_shared.result index 950c4d83c70..fe1c88075d5 100644 --- a/mysql-test/suite/galera/r/galera_toi_lock_shared.result +++ b/mysql-test/suite/galera/r/galera_toi_lock_shared.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (id INT PRIMARY KEY) ENGINE=InnoDB; INSERT INTO t1 VALUES (1); connection node_2; diff --git a/mysql-test/suite/galera/r/galera_toi_truncate.result b/mysql-test/suite/galera/r/galera_toi_truncate.result index c92da869a02..a02487ac347 100644 --- a/mysql-test/suite/galera/r/galera_toi_truncate.result +++ b/mysql-test/suite/galera/r/galera_toi_truncate.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; CREATE TABLE ten (f1 INTEGER NOT NULL PRIMARY KEY) ENGINE=InnoDB; INSERT INTO ten VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10); @@ -10,7 +12,7 @@ connection node_2a; connection node_1; TRUNCATE TABLE t1; connection node_2; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction SELECT COUNT(*) AS EXPECT_0 FROM t1; EXPECT_0 0 diff --git a/mysql-test/suite/galera/r/galera_transaction_read_only.result b/mysql-test/suite/galera/r/galera_transaction_read_only.result index b388f195fb1..55923f58b65 100644 --- a/mysql-test/suite/galera/r/galera_transaction_read_only.result +++ b/mysql-test/suite/galera/r/galera_transaction_read_only.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; CREATE TABLE t1 (id INT PRIMARY KEY) ENGINE=InnoDB; connection node_2; diff --git a/mysql-test/suite/galera/r/galera_transaction_replay.result b/mysql-test/suite/galera/r/galera_transaction_replay.result index 7fd837433d2..272086c4eba 100644 --- a/mysql-test/suite/galera/r/galera_transaction_replay.result +++ b/mysql-test/suite/galera/r/galera_transaction_replay.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY, f2 CHAR(1)); INSERT INTO t1 VALUES (1, 'a'); INSERT INTO t1 VALUES (2, 'a'); @@ -9,19 +11,73 @@ SELECT * FROM t1 WHERE f1 = 2 FOR UPDATE; f1 f2 2 a connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1; -SET GLOBAL wsrep_provider_options = 'dbug=d,commit_monitor_enter_sync'; +SET SESSION wsrep_sync_wait=0; +SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; +connection node_2; +UPDATE t1 SET f2 = 'c' WHERE f1 = 2; +connection node_1a; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'dbug=d,commit_monitor_master_enter_sync'; connection node_1; -COMMIT;; +COMMIT; connection node_1a; -SET SESSION wsrep_sync_wait = 0; SET SESSION wsrep_on = 0; SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'dbug=d,abort_trx_end'; +SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'signal=abort_trx_end'; +SET GLOBAL wsrep_provider_options = 'signal=commit_monitor_master_enter_sync'; +connection node_1; +SELECT COUNT(*) = 1 FROM t1 WHERE f2 = 'b'; +COUNT(*) = 1 +1 +SELECT COUNT(*) = 1 FROM t1 WHERE f2 = 'c'; +COUNT(*) = 1 +1 +wsrep_local_replays +1 connection node_2; -UPDATE t1 SET f2 = 'c' WHERE f1 = 2; +SELECT COUNT(*) = 1 FROM t1 WHERE f2 = 'b'; +COUNT(*) = 1 +1 +SELECT COUNT(*) = 1 FROM t1 WHERE f2 = 'c'; +COUNT(*) = 1 +1 +DROP TABLE t1; +connection node_1; +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY, f2 CHAR(1)); +INSERT INTO t1 VALUES (1, 'a'); +INSERT INTO t1 VALUES (2, 'a'); +connection node_1; +SET AUTOCOMMIT=ON; +START TRANSACTION; +UPDATE t1 SET f2 = 'b' WHERE f1 = 1; +SELECT * FROM t1 WHERE f1 = 2 FOR UPDATE; +f1 f2 +2 a +SET GLOBAL wsrep_provider_options = 'dbug=d,commit_monitor_master_enter_sync'; +connection node_1; +COMMIT; connection node_1a; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'dbug=d,abort_trx_end'; +connection node_2; +UPDATE t1 SET f2 = 'c' WHERE f1 = 2; connection node_1a; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; SET GLOBAL wsrep_provider_options = 'dbug='; -SET GLOBAL wsrep_provider_options = 'signal=commit_monitor_enter_sync'; +SET GLOBAL wsrep_provider_options = 'signal=abort_trx_end'; +SET GLOBAL wsrep_provider_options = 'signal=commit_monitor_master_enter_sync'; connection node_1; SELECT COUNT(*) = 1 FROM t1 WHERE f2 = 'b'; COUNT(*) = 1 @@ -46,22 +102,34 @@ SELECT * FROM t1; i j 1 0 3 0 +SET AUTOCOMMIT=ON; PREPARE stmt1 FROM "UPDATE t1 SET j = 1 where i > 0"; connection node_1a; -SET GLOBAL wsrep_provider_options = 'dbug=d,commit_monitor_enter_sync'; -connection node_1; -EXECUTE stmt1;; -connection node_1a; -SET SESSION wsrep_sync_wait = 0; -SET SESSION wsrep_on = 0; -SET SESSION wsrep_on = 1; +SET SESSION wsrep_sync_wait=0; +SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; connection node_2; INSERT INTO t1 VALUES(2,2); connection node_1a; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'dbug=d,commit_monitor_master_enter_sync'; +connection node_1; +SET SESSION wsrep_sync_wait=0; +EXECUTE stmt1; connection node_1a; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; +SET GLOBAL wsrep_provider_options = 'dbug='; +SET GLOBAL wsrep_provider_options = 'dbug=d,abort_trx_end'; +SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; +SET SESSION wsrep_on = 0; +SET SESSION wsrep_on = 1; SET GLOBAL wsrep_provider_options = 'dbug='; -SET GLOBAL wsrep_provider_options = 'signal=commit_monitor_enter_sync'; +SET GLOBAL wsrep_provider_options = 'signal=abort_trx_end'; +SET GLOBAL wsrep_provider_options = 'signal=commit_monitor_master_enter_sync'; connection node_1; +SET SESSION wsrep_sync_wait=7; SELECT * FROM t1; i j 1 1 @@ -74,5 +142,7 @@ i j 2 2 3 1 connection node_1; +wsrep_local_replays +1 DEALLOCATE PREPARE stmt1; DROP TABLE t1; diff --git a/mysql-test/suite/galera/r/galera_trigger.result b/mysql-test/suite/galera/r/galera_trigger.result index 112d3f39aa0..48147492979 100644 --- a/mysql-test/suite/galera/r/galera_trigger.result +++ b/mysql-test/suite/galera/r/galera_trigger.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE IF NOT EXISTS t1 (id int(10) not null primary key) engine=innodb; CREATE OR REPLACE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW diff --git a/mysql-test/suite/galera/r/galera_truncate.result b/mysql-test/suite/galera/r/galera_truncate.result index 4f3d72dbca7..c649d9bbaf9 100644 --- a/mysql-test/suite/galera/r/galera_truncate.result +++ b/mysql-test/suite/galera/r/galera_truncate.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) Engine=InnoDB; INSERT INTO t1 VALUES (1); connection node_2; diff --git a/mysql-test/suite/galera/r/galera_truncate_temporary.result b/mysql-test/suite/galera/r/galera_truncate_temporary.result index 183ebd9d24a..81373bda739 100644 --- a/mysql-test/suite/galera/r/galera_truncate_temporary.result +++ b/mysql-test/suite/galera/r/galera_truncate_temporary.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TEMPORARY TABLE t1 (f1 INTEGER PRIMARY KEY) Engine=InnoDB; INSERT INTO t1 VALUES (1); TRUNCATE TABLE t1; diff --git a/mysql-test/suite/galera/r/galera_unicode_identifiers.result b/mysql-test/suite/galera/r/galera_unicode_identifiers.result index 77848bc751f..5db1be8c910 100644 --- a/mysql-test/suite/galera/r/galera_unicode_identifiers.result +++ b/mysql-test/suite/galera/r/galera_unicode_identifiers.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; SET GLOBAL wsrep_sync_wait = 15; connection node_2; SET GLOBAL wsrep_sync_wait = 15; diff --git a/mysql-test/suite/galera/r/galera_unicode_pk.result b/mysql-test/suite/galera/r/galera_unicode_pk.result index 0e8965a76e3..bb36fd4f369 100644 --- a/mysql-test/suite/galera/r/galera_unicode_pk.result +++ b/mysql-test/suite/galera/r/galera_unicode_pk.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 ( f1 VARCHAR(255) PRIMARY KEY ) ENGINE=InnoDB DEFAULT CHARSET=utf8; @@ -18,7 +20,7 @@ connection node_1; COMMIT; connection node_2; COMMIT; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction SELECT f1 = 'текст2' FROM t1; f1 = 'текст2' 1 @@ -35,6 +37,6 @@ connection node_2; COMMIT; connection node_1; COMMIT; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction COMMIT; DROP TABLE t1; diff --git a/mysql-test/suite/galera/r/galera_update_limit.result b/mysql-test/suite/galera/r/galera_update_limit.result index 20a94e6f504..30c89a38dff 100644 --- a/mysql-test/suite/galera/r/galera_update_limit.result +++ b/mysql-test/suite/galera/r/galera_update_limit.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; CREATE TABLE ten (f1 INTEGER) Engine=InnoDB; INSERT INTO ten VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10); diff --git a/mysql-test/suite/galera/r/galera_v1_row_events.result b/mysql-test/suite/galera/r/galera_v1_row_events.result index b0ea2293119..80fe2fb6d8d 100644 --- a/mysql-test/suite/galera/r/galera_v1_row_events.result +++ b/mysql-test/suite/galera/r/galera_v1_row_events.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INT PRIMARY KEY) ENGINE=InnoDB; INSERT INTO t1 VALUES (1); connection node_2; diff --git a/mysql-test/suite/galera/r/galera_var_OSU_method.result b/mysql-test/suite/galera/r/galera_var_OSU_method.result index 18e8bd2271a..2b0a713e86b 100644 --- a/mysql-test/suite/galera/r/galera_var_OSU_method.result +++ b/mysql-test/suite/galera/r/galera_var_OSU_method.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) Engine=InnoDB; connection node_1; SET SESSION wsrep_OSU_method = "RSU"; diff --git a/mysql-test/suite/galera/r/galera_var_OSU_method2.result b/mysql-test/suite/galera/r/galera_var_OSU_method2.result index 0e3751645a8..ca4f617d903 100644 --- a/mysql-test/suite/galera/r/galera_var_OSU_method2.result +++ b/mysql-test/suite/galera/r/galera_var_OSU_method2.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) Engine=InnoDB; connection node_1; SET SESSION wsrep_OSU_method = "TOI"; diff --git a/mysql-test/suite/galera/r/galera_var_auto_inc_control_off.result b/mysql-test/suite/galera/r/galera_var_auto_inc_control_off.result index ba117b4c2d5..86c30fa4b23 100644 --- a/mysql-test/suite/galera/r/galera_var_auto_inc_control_off.result +++ b/mysql-test/suite/galera/r/galera_var_auto_inc_control_off.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; SET GLOBAL wsrep_auto_increment_control = OFF; SET GLOBAL auto_increment_increment = 1; @@ -59,7 +61,7 @@ connection node_1a; COMMIT; connection node_2a; COMMIT; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction connection node_1a; SELECT * FROM t1; f1 node diff --git a/mysql-test/suite/galera/r/galera_var_auto_inc_control_on.result b/mysql-test/suite/galera/r/galera_var_auto_inc_control_on.result index b71cf4c831d..48c649b66a8 100644 --- a/mysql-test/suite/galera/r/galera_var_auto_inc_control_on.result +++ b/mysql-test/suite/galera/r/galera_var_auto_inc_control_on.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; CREATE TABLE t1 (f1 INTEGER AUTO_INCREMENT PRIMARY KEY, node VARCHAR(10)) ENGINE=InnoDB; SELECT @@auto_increment_increment = (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'); diff --git a/mysql-test/suite/galera/r/galera_var_certify_nonPK_off.result b/mysql-test/suite/galera/r/galera_var_certify_nonPK_off.result index ca3844bf6bf..f5472aa931f 100644 --- a/mysql-test/suite/galera/r/galera_var_certify_nonPK_off.result +++ b/mysql-test/suite/galera/r/galera_var_certify_nonPK_off.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; SET GLOBAL wsrep_certify_nonPK = OFF; connection node_2; SET GLOBAL wsrep_certify_nonPK = OFF; diff --git a/mysql-test/suite/galera/r/galera_var_cluster_address.result b/mysql-test/suite/galera/r/galera_var_cluster_address.result index 378d8ca84f5..8c1070e43ce 100644 --- a/mysql-test/suite/galera/r/galera_var_cluster_address.result +++ b/mysql-test/suite/galera/r/galera_var_cluster_address.result @@ -1,7 +1,11 @@ +connection node_2; +connection node_1; connection node_1; connection node_2; connection node_2; SET GLOBAL wsrep_cluster_address = 'foo://'; +SHOW STATUS; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction SET SESSION wsrep_sync_wait=0; SELECT COUNT(*) > 0 FROM INFORMATION_SCHEMA.GLOBAL_STATUS; COUNT(*) > 0 @@ -11,7 +15,7 @@ Variable_name Value wsrep_ready OFF SHOW STATUS LIKE 'wsrep_cluster_status'; Variable_name Value -wsrep_cluster_status non-Primary +wsrep_cluster_status Disconnected SHOW STATUS LIKE 'wsrep_local_state'; Variable_name Value wsrep_local_state 0 @@ -39,7 +43,7 @@ CALL mtr.add_suppression("Failed to initialize backend using 'foo"); CALL mtr.add_suppression("Failed to open channel 'my_wsrep_cluster' at 'foo"); CALL mtr.add_suppression("gcs connect failed: Socket type not supported"); CALL mtr.add_suppression("wsrep::connect\\(\\) failed: 7"); -CALL mtr.add_suppression("gcs_caused\\(\\) returned -103 \\(Software caused connection abort\\)"); +CALL mtr.add_suppression("gcs_caused\\(\\) returned -[0-9]+ \\(Software caused connection abort\\)"); CALL mtr.add_suppression("failed to open gcomm backend connection: 110: failed to reach primary view: 110"); CALL mtr.add_suppression("Failed to open backend connection: -110 \\(Connection timed out\\)"); CALL mtr.add_suppression("gcs connect failed: Connection timed out"); diff --git a/mysql-test/suite/galera/r/galera_var_cluster_conf_id.result b/mysql-test/suite/galera/r/galera_var_cluster_conf_id.result new file mode 100644 index 00000000000..c78d704d9b1 --- /dev/null +++ b/mysql-test/suite/galera/r/galera_var_cluster_conf_id.result @@ -0,0 +1,10 @@ +connection node_2; +connection node_1; +connection node_1; +show status like 'wsrep_cluster_conf_id'; +Variable_name Value +wsrep_cluster_conf_id # +connection node_2; +show status like 'wsrep_cluster_conf_id'; +Variable_name Value +wsrep_cluster_conf_id # diff --git a/mysql-test/suite/galera/r/galera_var_desync_on.result b/mysql-test/suite/galera/r/galera_var_desync_on.result index 26798e51926..6a2e501eee2 100644 --- a/mysql-test/suite/galera/r/galera_var_desync_on.result +++ b/mysql-test/suite/galera/r/galera_var_desync_on.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB; INSERT INTO t1 VALUES (1); connection node_2; diff --git a/mysql-test/suite/galera/r/galera_var_dirty_reads.result b/mysql-test/suite/galera/r/galera_var_dirty_reads.result index 50938d61a4b..240f1802385 100644 --- a/mysql-test/suite/galera/r/galera_var_dirty_reads.result +++ b/mysql-test/suite/galera/r/galera_var_dirty_reads.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; call mtr.add_suppression("WSREP has not yet prepared node for application use"); connection node_1; connection node_2; @@ -15,7 +17,7 @@ Variable_name Value wsrep_ready OFF SHOW STATUS LIKE 'wsrep_cluster_status'; Variable_name Value -wsrep_cluster_status non-Primary +wsrep_cluster_status Disconnected SELECT * FROM t1; Got one of the listed errors SELECT 1 FROM t1; @@ -51,4 +53,3 @@ i DROP TABLE t1; disconnect node_2; disconnect node_1; -# End of test diff --git a/mysql-test/suite/galera/r/galera_var_fkchecks.result b/mysql-test/suite/galera/r/galera_var_fkchecks.result index 8b1b913a584..42f8085ee1a 100644 --- a/mysql-test/suite/galera/r/galera_var_fkchecks.result +++ b/mysql-test/suite/galera/r/galera_var_fkchecks.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE parent ( id INT PRIMARY KEY, KEY (id) diff --git a/mysql-test/suite/galera/r/galera_var_gtid_domain_id.result b/mysql-test/suite/galera/r/galera_var_gtid_domain_id.result index afe72a10877..3a23f0c8122 100644 --- a/mysql-test/suite/galera/r/galera_var_gtid_domain_id.result +++ b/mysql-test/suite/galera/r/galera_var_gtid_domain_id.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; # On node_1 connection node_1; list of GTID variables : @@ -80,9 +82,13 @@ connection node_1; DROP TABLE t1, t2; #cleanup 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; disconnect node_2; disconnect node_1; # End of test diff --git a/mysql-test/suite/galera/r/galera_var_ignore_apply_errors.result b/mysql-test/suite/galera/r/galera_var_ignore_apply_errors.result new file mode 100644 index 00000000000..082d2e8eb1d --- /dev/null +++ b/mysql-test/suite/galera/r/galera_var_ignore_apply_errors.result @@ -0,0 +1,186 @@ +connection node_2; +connection node_1; +connection node_2; +SET GLOBAL wsrep_ignore_apply_errors = 1; +connection node_1; +SET GLOBAL wsrep_on = OFF; +CREATE TABLE t1 (f1 INTEGER); +SET GLOBAL wsrep_on = ON; +DROP TABLE t1; +SET GLOBAL wsrep_on = OFF; +CREATE SCHEMA s1; +SET GLOBAL wsrep_on = ON; +DROP SCHEMA s1; +CREATE TABLE t1 (f1 INTEGER); +SET GLOBAL wsrep_on = OFF; +CREATE INDEX idx1 ON t1 (f1); +SET GLOBAL wsrep_on = ON; +DROP INDEX idx1 ON t1; +DROP TABLE t1; +CREATE TABLE t1 (f1 INTEGER); +SET GLOBAL wsrep_on = OFF; +CREATE INDEX idx1 ON t1 (f1); +SET GLOBAL wsrep_on = ON; +ALTER TABLE t1 DROP INDEX idx1; +DROP TABLE t1; +CREATE TABLE t1 (f1 INTEGER); +SET GLOBAL wsrep_on = OFF; +ALTER TABLE t1 ADD COLUMN f2 INTEGER; +SET GLOBAL wsrep_on = ON; +ALTER TABLE t1 DROP COLUMN f2; +DROP TABLE t1; +connection node_2; +SET GLOBAL wsrep_ignore_apply_errors = 2; +connection node_1; +CREATE TABLE t1 (f1 INTEGER); +SET GLOBAL wsrep_on = OFF; +INSERT INTO t1 VALUES (1); +SET GLOBAL wsrep_on = ON; +DELETE FROM t1 WHERE f1 = 1; +connection node_1; +SELECT COUNT(*) as expect_0 FROM t1; +expect_0 +0 +connection node_2; +SELECT COUNT(*) as expect_0 FROM t1; +expect_0 +0 +DROP TABLE t1; +connection node_1; +CREATE TABLE t1 (f1 INTEGER); +INSERT INTO t1 VALUES (2); +SET GLOBAL wsrep_on = OFF; +INSERT INTO t1 VALUES (1); +SET GLOBAL wsrep_on = ON; +START TRANSACTION; +INSERT INTO t1 VALUES (3); +DELETE FROM t1 WHERE f1 = 1; +DELETE FROM t1 WHERE f1 = 2; +COMMIT; +connection node_1; +SELECT COUNT(*) as expect_1 FROM t1; +expect_1 +1 +connection node_2; +SELECT COUNT(*) as expect_1 FROM t1; +expect_1 +1 +DROP TABLE t1; +connection node_1; +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; +INSERT INTO t1 VALUES (1),(2),(3),(4),(5); +connection node_2; +SET SESSION wsrep_on = OFF; +DELETE FROM t1 WHERE f1 = 3; +SET SESSION wsrep_on = ON; +connection node_1; +DELETE FROM t1; +SELECT COUNT(*) as expect_0 FROM t1; +expect_0 +0 +connection node_2; +SELECT VARIABLE_VALUE = 'Primary' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status'; +VARIABLE_VALUE = 'Primary' +1 +SELECT COUNT(*) as expect_0 FROM t1; +expect_0 +0 +DROP TABLE t1; +connection node_1; +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; +INSERT INTO t1 VALUES (1),(2),(3),(4),(5); +connection node_2; +SET SESSION wsrep_on = OFF; +DELETE FROM t1 WHERE f1 = 3; +SET SESSION wsrep_on = ON; +connection node_1; +SET AUTOCOMMIT=OFF; +START TRANSACTION; +DELETE FROM t1 WHERE f1 = 1; +DELETE FROM t1 WHERE f1 = 2; +DELETE FROM t1 WHERE f1 = 3; +DELETE FROM t1 WHERE f1 = 4; +DELETE FROM t1 WHERE f1 = 5; +COMMIT; +SET AUTOCOMMIT=ON; +SELECT COUNT(*) as expect_0 FROM t1; +expect_0 +0 +connection node_2; +SELECT VARIABLE_VALUE = 'Primary' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status'; +VARIABLE_VALUE = 'Primary' +1 +SELECT COUNT(*) as expect_0 FROM t1; +expect_0 +0 +DROP TABLE t1; +connection node_1; +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; +INSERT INTO t1 VALUES (1),(2),(3); +CREATE TABLE t2 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; +INSERT INTO t2 VALUES (1),(2),(3); +connection node_2; +SET SESSION wsrep_on = OFF; +DELETE FROM t2 WHERE f1 = 2; +DELETE FROM t1 WHERE f1 = 3; +SET SESSION wsrep_on = ON; +connection node_1; +DELETE t1, t2 FROM t1 JOIN t2 WHERE t1.f1 = t2.f1; +SELECT COUNT(*) as expect_0 FROM t1; +expect_0 +0 +connection node_2; +SELECT VARIABLE_VALUE = 'Primary' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status'; +VARIABLE_VALUE = 'Primary' +1 +SELECT COUNT(*) as expect_0 FROM t1; +expect_0 +0 +DROP TABLE t1,t2; +connection node_1; +CREATE TABLE parent (id INT NOT NULL, PRIMARY KEY (id)) ENGINE=INNODB; +INSERT INTO parent VALUES (1),(2),(3); +CREATE TABLE child (id INT, parent_id INT, INDEX par_ind (parent_id), FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE CASCADE) ENGINE=INNODB; +INSERT INTO child VALUES (1,1),(2,2),(3,3); +connection node_2; +SET SESSION wsrep_on = OFF; +DELETE FROM child WHERE parent_id = 2; +SET SESSION wsrep_on = ON; +connection node_1; +DELETE FROM parent; +SELECT COUNT(*) as expect_0 FROM parent; +expect_0 +0 +SELECT COUNT(*) as expect_0 FROM child; +expect_0 +0 +connection node_2; +SELECT VARIABLE_VALUE = 'Primary' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status'; +VARIABLE_VALUE = 'Primary' +1 +SELECT COUNT(*) as expect_0 FROM parent; +expect_0 +0 +SELECT COUNT(*) as expect_0 FROM child; +expect_0 +0 +DROP TABLE child, parent; +connection node_2; +SET GLOBAL wsrep_ignore_apply_errors = 4; +connection node_2; +SET GLOBAL wsrep_on = OFF; +CREATE TABLE t1 (f1 INTEGER); +SET GLOBAL wsrep_on = ON; +connection node_1; +CREATE TABLE t1 (f1 INTEGER, f2 INTEGER); +DROP TABLE t1; +connection node_2; +SET GLOBAL wsrep_ignore_apply_errors = 7; +CALL mtr.add_suppression("Can't find record in 't.*'"); +CALL mtr.add_suppression("Slave SQL: Could not execute Delete_rows event"); +CALL mtr.add_suppression("Slave SQL: Error 'Unknown table 'test.t1'' on query. Default database: 'test'. Query: 'DROP TABLE t1', Error_code: 1051"); +CALL mtr.add_suppression("Slave SQL: Error 'Can't drop database 's1'; database doesn't exist' on query. Default database: 'test'. Query: 'DROP SCHEMA s1', Error_code: 1008"); +CALL mtr.add_suppression("Slave SQL: Error 'Can't DROP 'idx1'; check that column/key exists' on query. Default database: 'test'. Query: 'DROP INDEX idx1 ON t1', Error_code: 1091"); +CALL mtr.add_suppression("Slave SQL: Error 'Can't DROP 'idx1'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t1 DROP INDEX idx1', Error_code: 1091"); +CALL mtr.add_suppression("Slave SQL: Error 'Can't DROP 'f2'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t1 DROP COLUMN f2', Error_code: 1091"); +CALL mtr.add_suppression("Slave SQL: Error 'Table 't1' already exists' on query."); diff --git a/mysql-test/suite/galera/r/galera_var_innodb_disallow_writes.result b/mysql-test/suite/galera/r/galera_var_innodb_disallow_writes.result index 8750651612d..758c34ee62e 100644 --- a/mysql-test/suite/galera/r/galera_var_innodb_disallow_writes.result +++ b/mysql-test/suite/galera/r/galera_var_innodb_disallow_writes.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1a; SET SESSION wsrep_sync_wait = 0; connection node_1; diff --git a/mysql-test/suite/galera/r/galera_var_load_data_splitting.result b/mysql-test/suite/galera/r/galera_var_load_data_splitting.result index 3e451abbed1..66bc6bc4a9a 100644 --- a/mysql-test/suite/galera/r/galera_var_load_data_splitting.result +++ b/mysql-test/suite/galera/r/galera_var_load_data_splitting.result @@ -1,6 +1,10 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; connection node_2; SET GLOBAL wsrep_load_data_splitting = TRUE; +Warnings: +Warning 1287 '@@wsrep_load_data_splitting' is deprecated and will be removed in a future release connection node_2; SELECT COUNT(*) = 95000 FROM t1; COUNT(*) = 95000 @@ -8,5 +12,11 @@ COUNT(*) = 95000 wsrep_last_committed_diff 1 connection node_1; -SET GLOBAL wsrep_load_data_splitting = 1;; +SET GLOBAL wsrep_load_data_splitting = 0;; +Warnings: +Warning 1287 '@@wsrep_load_data_splitting' is deprecated and will be removed in a future release +connection node_2; +SET GLOBAL wsrep_load_data_splitting = 0;; +Warnings: +Warning 1287 '@@wsrep_load_data_splitting' is deprecated and will be removed in a future release DROP TABLE t1; diff --git a/mysql-test/suite/galera/r/galera_var_log_bin.result b/mysql-test/suite/galera/r/galera_var_log_bin.result index b0ea2293119..80fe2fb6d8d 100644 --- a/mysql-test/suite/galera/r/galera_var_log_bin.result +++ b/mysql-test/suite/galera/r/galera_var_log_bin.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INT PRIMARY KEY) ENGINE=InnoDB; INSERT INTO t1 VALUES (1); connection node_2; diff --git a/mysql-test/suite/galera/r/galera_var_max_ws_rows.result b/mysql-test/suite/galera/r/galera_var_max_ws_rows.result index 6bf67a3fb60..16e868f0485 100644 --- a/mysql-test/suite/galera/r/galera_var_max_ws_rows.result +++ b/mysql-test/suite/galera/r/galera_var_max_ws_rows.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE ten (f1 INTEGER) ENGINE=InnoDB; INSERT INTO ten VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10); CREATE TABLE t1 (f1 INTEGER AUTO_INCREMENT PRIMARY KEY, f2 INTEGER) ENGINE=InnoDB; diff --git a/mysql-test/suite/galera/r/galera_var_max_ws_size.result b/mysql-test/suite/galera/r/galera_var_max_ws_size.result index 53bac04fa86..89c9698eed4 100644 --- a/mysql-test/suite/galera/r/galera_var_max_ws_size.result +++ b/mysql-test/suite/galera/r/galera_var_max_ws_size.result @@ -1,8 +1,10 @@ +connection node_2; +connection node_1; connection node_1; CREATE TABLE t1 (f1 INTEGER AUTO_INCREMENT PRIMARY KEY, f2 VARCHAR(1024)) Engine=InnoDB; SET GLOBAL wsrep_max_ws_size = 1024; INSERT INTO t1 VALUES (DEFAULT, REPEAT('X', 1024)); -ERROR HY000: Got error 90 "Message too long" during COMMIT +ERROR HY000: Got error 5 "Input/output error" during COMMIT SELECT COUNT(*) = 0 FROM t1; COUNT(*) = 0 1 diff --git a/mysql-test/suite/galera/r/galera_var_mysql_replication_bundle.result b/mysql-test/suite/galera/r/galera_var_mysql_replication_bundle.result index 202633a020e..d7a38d24722 100644 --- a/mysql-test/suite/galera/r/galera_var_mysql_replication_bundle.result +++ b/mysql-test/suite/galera/r/galera_var_mysql_replication_bundle.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INT PRIMARY KEY) Engine=InnoDB; SET GLOBAL wsrep_mysql_replication_bundle = 2; connection node_1; diff --git a/mysql-test/suite/galera/r/galera_var_node_address.result b/mysql-test/suite/galera/r/galera_var_node_address.result index 0c85d554229..6b91a9f3ea3 100644 --- a/mysql-test/suite/galera/r/galera_var_node_address.result +++ b/mysql-test/suite/galera/r/galera_var_node_address.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; call mtr.add_suppression("WSREP: Stray state UUID msg: .*"); call mtr.add_suppression("WSREP: Protocol violation. JOIN message sender .*"); call mtr.add_suppression("WSREP: Sending JOIN failed: .*"); diff --git a/mysql-test/suite/galera/r/galera_var_notify_cmd.result b/mysql-test/suite/galera/r/galera_var_notify_cmd.result index 823407fbba7..432d6c0adbd 100644 --- a/mysql-test/suite/galera/r/galera_var_notify_cmd.result +++ b/mysql-test/suite/galera/r/galera_var_notify_cmd.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; SELECT COUNT(DISTINCT uuid) AS EXPECT_2 FROM mtr_wsrep_notify.membership; EXPECT_2 diff --git a/mysql-test/suite/galera/r/galera_var_reject_queries.result b/mysql-test/suite/galera/r/galera_var_reject_queries.result index 22e2e6d764a..1b2bc1c5e16 100644 --- a/mysql-test/suite/galera/r/galera_var_reject_queries.result +++ b/mysql-test/suite/galera/r/galera_var_reject_queries.result @@ -1,4 +1,10 @@ +<<<<<<< HEAD +connection node_2; +connection node_1; +||||||| merged common ancestors +======= call mtr.add_suppression("WSREP has not yet prepared node for application use"); +>>>>>>> 10.3 CREATE TABLE t1 (f1 INTEGER); connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1; connection node_1; diff --git a/mysql-test/suite/galera/r/galera_var_replicate_myisam_off.result b/mysql-test/suite/galera/r/galera_var_replicate_myisam_off.result index 382466b1387..8968f89d11b 100644 --- a/mysql-test/suite/galera/r/galera_var_replicate_myisam_off.result +++ b/mysql-test/suite/galera/r/galera_var_replicate_myisam_off.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; SET GLOBAL wsrep_replicate_myisam = FALSE; CREATE TABLE t1 (f1 INT PRIMARY KEY) Engine=MyISAM; INSERT INTO t1 VALUES (1); diff --git a/mysql-test/suite/galera/r/galera_var_replicate_myisam_on.result b/mysql-test/suite/galera/r/galera_var_replicate_myisam_on.result index 87f8862df7e..ad28f5a426e 100644 --- a/mysql-test/suite/galera/r/galera_var_replicate_myisam_on.result +++ b/mysql-test/suite/galera/r/galera_var_replicate_myisam_on.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; connection node_1; SET GLOBAL wsrep_replicate_myisam = TRUE; @@ -105,6 +107,135 @@ i 1 DROP TABLE t1; connection node_1; -SET GLOBAL wsrep_replicate_myisam = 0; +CREATE TABLE t1 (id INT NOT NULL PRIMARY KEY, b INT) ENGINE=MyISAM; +INSERT INTO t1 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10); +PREPARE upd from 'update t1 set b = 100 where id = 5'; +PREPARE ins from 'insert into t1 values (11,11)'; +PREPARE del from 'delete from t1 where id = 4'; +PREPARE rep from 'replace into t1 values (12,12),(6,600)'; +EXECUTE upd; +EXECUTE ins; +EXECUTE del; +EXECUTE rep; +SELECT * FROM t1 ORDER BY id; +id b +1 1 +2 2 +3 3 +5 100 +6 600 +7 7 +8 8 +9 9 +10 10 +11 11 +12 12 +connection node_2; +SELECT * FROM t1 ORDER BY id; +id b +1 1 +2 2 +3 3 +5 100 +6 600 +7 7 +8 8 +9 9 +10 10 +11 11 +12 12 +DROP TABLE t1; +connection node_1; +CREATE TABLE t1 (id INT NOT NULL PRIMARY KEY, b INT) ENGINE=MyISAM; +INSERT INTO t1 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10); +CREATE PROCEDURE proc() +BEGIN +UPDATE t1 set b = 100 WHERE id = 5; +INSERT INTO t1 VALUES (11,11); +DELETE FROM t1 WHERE id = 4; +REPLACE INTO t1 VALUES (12,12),(6,600); +COMMIT; +END| +CALL proc(); +SELECT * FROM t1 ORDER BY id; +id b +1 1 +2 2 +3 3 +5 100 +6 600 +7 7 +8 8 +9 9 +10 10 +11 11 +12 12 +connection node_2; +SELECT * FROM t1 ORDER BY id; +id b +1 1 +2 2 +3 3 +5 100 +6 600 +7 7 +8 8 +9 9 +10 10 +11 11 +12 12 +DROP PROCEDURE proc; +DROP TABLE t1; +connection node_1; +CREATE TABLE t1 (id INT NOT NULL PRIMARY KEY, b INT) ENGINE=MyISAM; +CREATE TABLE t2 (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, b INT) ENGINE=MyISAM; +INSERT INTO t1 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10); +CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW INSERT INTO t2 VALUES (NULL, NEW.b); +CREATE TRIGGER tr2 BEFORE UPDATE ON t1 FOR EACH ROW INSERT INTO t2 VALUES (NULL, OLD.b),(NULL, NEW.b); +CREATE TRIGGER tr3 BEFORE DELETE ON t1 FOR EACH ROW INSERT INTO t2 VALUES (NULL, OLD.b); +INSERT INTO t1 VALUES (11,11); +UPDATE t1 SET b = 200 WHERE id = 2; +DELETE FROM t1 where id = 5; +SELECT * FROM t1 ORDER BY id; +id b +1 1 +2 200 +3 3 +4 4 +6 6 +7 7 +8 8 +9 9 +10 10 +11 11 +SELECT * FROM t2 ORDER BY id; +id b +1 11 +2 2 +3 200 +4 5 +connection node_2; +SELECT * FROM t1 ORDER BY id; +id b +1 1 +2 200 +3 3 +4 4 +6 6 +7 7 +8 8 +9 9 +10 10 +11 11 +SELECT * FROM t2 ORDER BY id; +id b +1 11 +2 2 +3 200 +4 5 +DROP TRIGGER tr1; +DROP TRIGGER tr2; +DROP TRIGGER tr3; +DROP TABLE t1,t2; +connection node_1; connection node_2; -SET GLOBAL wsrep_replicate_myisam = 0; diff --git a/mysql-test/suite/galera/r/galera_var_retry_autocommit.result b/mysql-test/suite/galera/r/galera_var_retry_autocommit.result index c0bf6035184..b8943464cb7 100644 --- a/mysql-test/suite/galera/r/galera_var_retry_autocommit.result +++ b/mysql-test/suite/galera/r/galera_var_retry_autocommit.result @@ -1,15 +1,17 @@ +connection node_2; +connection node_1; connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1; connection node_1; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; SET SESSION wsrep_retry_autocommit = 0; -SET DEBUG_SYNC = 'wsrep_before_replication SIGNAL before_rep WAIT_FOR continue'; +SET DEBUG_SYNC = 'wsrep_before_certification SIGNAL before_cert WAIT_FOR continue'; INSERT INTO t1 (f1) VALUES (2); connection node_1a; -SET DEBUG_SYNC = 'now WAIT_FOR before_rep'; +SET DEBUG_SYNC = 'now WAIT_FOR before_cert'; connection node_2; TRUNCATE TABLE t1; connection node_1; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction SELECT COUNT(*) = 0 FROM t1; COUNT(*) = 0 1 @@ -18,10 +20,10 @@ DROP TABLE t1; connection node_1; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; SET SESSION wsrep_retry_autocommit = 1; -SET DEBUG_SYNC = 'wsrep_before_replication SIGNAL before_rep WAIT_FOR continue'; -INSERT INTO t1 (f1) VALUES (2); +SET DEBUG_SYNC = 'wsrep_before_certification SIGNAL before_cert WAIT_FOR continue'; +INSERT INTO t1 (f1) VALUES (3); connection node_1a; -SET DEBUG_SYNC = 'now WAIT_FOR before_rep'; +SET DEBUG_SYNC = 'now WAIT_FOR before_cert'; connection node_2; TRUNCATE TABLE t1; connection node_1; @@ -34,10 +36,10 @@ connection node_1; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; SET SESSION wsrep_retry_autocommit = 1; SET GLOBAL debug_dbug = '+d,sync.wsrep_retry_autocommit'; -SET DEBUG_SYNC = 'wsrep_before_replication SIGNAL before_rep WAIT_FOR continue EXECUTE 2'; -INSERT INTO t1 VALUES (2);; +SET DEBUG_SYNC = 'wsrep_before_certification SIGNAL before_cert WAIT_FOR continue EXECUTE 2'; +INSERT INTO t1 VALUES (4);; connection node_1a; -SET DEBUG_SYNC = 'now WAIT_FOR before_rep'; +SET DEBUG_SYNC = 'now WAIT_FOR before_cert'; connection node_2; TRUNCATE TABLE t1; connection node_1a; @@ -45,7 +47,7 @@ SET DEBUG_SYNC = 'now WAIT_FOR wsrep_retry_autocommit_reached'; SELECT COUNT(*) = 0 FROM t1; COUNT(*) = 0 1 -SET DEBUG_SYNC = 'now SIGNAL wsrep_retry_autocommit_continue WAIT_FOR before_rep'; +SET DEBUG_SYNC = 'now SIGNAL wsrep_retry_autocommit_continue WAIT_FOR before_cert'; connection node_2; TRUNCATE TABLE t1; connection node_1a; @@ -53,7 +55,7 @@ SELECT COUNT(*) = 0 FROM t1; COUNT(*) = 0 1 connection node_1; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction SET DEBUG_SYNC = 'RESET'; SET GLOBAL debug_dbug = NULL; DROP TABLE t1; @@ -61,8 +63,8 @@ connection node_1; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; SET SESSION wsrep_retry_autocommit = 64; SET GLOBAL debug_dbug = '+d,sync.wsrep_retry_autocommit'; -SET DEBUG_SYNC = 'wsrep_before_replication SIGNAL before_rep WAIT_FOR continue EXECUTE 64'; -INSERT INTO t1 VALUES (2); +SET DEBUG_SYNC = 'wsrep_before_certification SIGNAL before_cert WAIT_FOR continue EXECUTE 64'; +INSERT INTO t1 VALUES (5); connection node_1; SELECT COUNT(*) = 1 FROM t1; COUNT(*) = 1 diff --git a/mysql-test/suite/galera/r/galera_var_slave_threads.result b/mysql-test/suite/galera/r/galera_var_slave_threads.result index d77a5a54cbf..36dc79bdf82 100644 --- a/mysql-test/suite/galera/r/galera_var_slave_threads.result +++ b/mysql-test/suite/galera/r/galera_var_slave_threads.result @@ -1,3 +1,7 @@ +connection node_2; +connection node_1; +connection node_1; +connection node_2; connection node_1; CREATE TABLE t1 (f1 INT PRIMARY KEY) Engine=InnoDB; CREATE TABLE t2 (f1 INT AUTO_INCREMENT PRIMARY KEY) Engine=InnoDB; @@ -53,3 +57,4 @@ DROP TABLE t1; connection node_2; SELECT NAME FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME LIKE 'test/t%'; NAME +# End of tests diff --git a/mysql-test/suite/galera/r/galera_var_sst_auth.result b/mysql-test/suite/galera/r/galera_var_sst_auth.result index 1db83197870..6a5683e2633 100644 --- a/mysql-test/suite/galera/r/galera_var_sst_auth.result +++ b/mysql-test/suite/galera/r/galera_var_sst_auth.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; # # MDEV-10492: Assertion failure on shutdown when wsrep_sst_auth set in config # diff --git a/mysql-test/suite/galera/r/galera_var_sync_wait.result b/mysql-test/suite/galera/r/galera_var_sync_wait.result index 3dfe902767c..80fbd3f3e05 100644 --- a/mysql-test/suite/galera/r/galera_var_sync_wait.result +++ b/mysql-test/suite/galera/r/galera_var_sync_wait.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; # # MDEV-10161: wsrep_sync_wait not enabled when set to 1 in config file # diff --git a/mysql-test/suite/galera/r/galera_var_trx_fragment_size.result b/mysql-test/suite/galera/r/galera_var_trx_fragment_size.result new file mode 100644 index 00000000000..be14c53548b --- /dev/null +++ b/mysql-test/suite/galera/r/galera_var_trx_fragment_size.result @@ -0,0 +1,95 @@ +connection node_2; +connection node_1; +SET SESSION wsrep_trx_fragment_size=DEFAULT; +SHOW SESSION VARIABLES LIKE 'wsrep_trx_fragment_size'; +Variable_name Value +wsrep_trx_fragment_size 0 +SHOW GLOBAL VARIABLES LIKE 'wsrep_trx_fragment_size'; +Variable_name Value +wsrep_trx_fragment_size 0 +SET SESSION wsrep_trx_fragment_size=0; +SHOW SESSION VARIABLES LIKE 'wsrep_trx_fragment_size'; +Variable_name Value +wsrep_trx_fragment_size 0 +SHOW GLOBAL VARIABLES LIKE 'wsrep_trx_fragment_size'; +Variable_name Value +wsrep_trx_fragment_size 0 +SET GLOBAL wsrep_trx_fragment_size=DEFAULT; +SHOW SESSION VARIABLES LIKE 'wsrep_trx_fragment_size'; +Variable_name Value +wsrep_trx_fragment_size 0 +SHOW GLOBAL VARIABLES LIKE 'wsrep_trx_fragment_size'; +Variable_name Value +wsrep_trx_fragment_size 0 +SET GLOBAL wsrep_trx_fragment_size=0; +SHOW SESSION VARIABLES LIKE 'wsrep_trx_fragment_size'; +Variable_name Value +wsrep_trx_fragment_size 0 +SHOW GLOBAL VARIABLES LIKE 'wsrep_trx_fragment_size'; +Variable_name Value +wsrep_trx_fragment_size 0 +SET GLOBAL wsrep_trx_fragment_size=-1; +Warnings: +Warning 1292 Truncated incorrect wsrep_trx_fragment_size value: '-1' +SHOW SESSION VARIABLES LIKE 'wsrep_trx_fragment_size'; +Variable_name Value +wsrep_trx_fragment_size 0 +SHOW GLOBAL VARIABLES LIKE 'wsrep_trx_fragment_size'; +Variable_name Value +wsrep_trx_fragment_size 0 +SET SESSION wsrep_trx_fragment_size=-1; +Warnings: +Warning 1292 Truncated incorrect wsrep_trx_fragment_size value: '-1' +SHOW SESSION VARIABLES LIKE 'wsrep_trx_fragment_size'; +Variable_name Value +wsrep_trx_fragment_size 0 +SHOW GLOBAL VARIABLES LIKE 'wsrep_trx_fragment_size'; +Variable_name Value +wsrep_trx_fragment_size 0 +SET GLOBAL wsrep_trx_fragment_size=100; +SHOW SESSION VARIABLES LIKE 'wsrep_trx_fragment_size'; +Variable_name Value +wsrep_trx_fragment_size 0 +SHOW GLOBAL VARIABLES LIKE 'wsrep_trx_fragment_size'; +Variable_name Value +wsrep_trx_fragment_size 100 +SET SESSION wsrep_trx_fragment_size=100; +SHOW SESSION VARIABLES LIKE 'wsrep_trx_fragment_size'; +Variable_name Value +wsrep_trx_fragment_size 100 +SHOW GLOBAL VARIABLES LIKE 'wsrep_trx_fragment_size'; +Variable_name Value +wsrep_trx_fragment_size 100 +SET GLOBAL wsrep_trx_fragment_size='A'; +ERROR 42000: Incorrect argument type to variable 'wsrep_trx_fragment_size' +SHOW SESSION VARIABLES LIKE 'wsrep_trx_fragment_size'; +Variable_name Value +wsrep_trx_fragment_size 100 +SHOW GLOBAL VARIABLES LIKE 'wsrep_trx_fragment_size'; +Variable_name Value +wsrep_trx_fragment_size 100 +SET SESSION wsrep_trx_fragment_size='A'; +ERROR 42000: Incorrect argument type to variable 'wsrep_trx_fragment_size' +SHOW SESSION VARIABLES LIKE 'wsrep_trx_fragment_size'; +Variable_name Value +wsrep_trx_fragment_size 100 +SHOW GLOBAL VARIABLES LIKE 'wsrep_trx_fragment_size'; +Variable_name Value +wsrep_trx_fragment_size 100 +SET GLOBAL wsrep_trx_fragment_size=NULL; +ERROR 42000: Incorrect argument type to variable 'wsrep_trx_fragment_size' +SHOW SESSION VARIABLES LIKE 'wsrep_trx_fragment_size'; +Variable_name Value +wsrep_trx_fragment_size 100 +SHOW GLOBAL VARIABLES LIKE 'wsrep_trx_fragment_size'; +Variable_name Value +wsrep_trx_fragment_size 100 +SET SESSION wsrep_trx_fragment_size=NULL; +ERROR 42000: Incorrect argument type to variable 'wsrep_trx_fragment_size' +SHOW SESSION VARIABLES LIKE 'wsrep_trx_fragment_size'; +Variable_name Value +wsrep_trx_fragment_size 100 +SHOW GLOBAL VARIABLES LIKE 'wsrep_trx_fragment_size'; +Variable_name Value +wsrep_trx_fragment_size 100 +SET GLOBAL wsrep_trx_fragment_size=DEFAULT; diff --git a/mysql-test/suite/galera/r/galera_var_wsrep_on_off.result b/mysql-test/suite/galera/r/galera_var_wsrep_on_off.result index 36340f505ff..5323bc9bf60 100644 --- a/mysql-test/suite/galera/r/galera_var_wsrep_on_off.result +++ b/mysql-test/suite/galera/r/galera_var_wsrep_on_off.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; INSERT INTO t1 VALUES (1); SET SESSION wsrep_on = FALSE; diff --git a/mysql-test/suite/galera/r/galera_wan.result b/mysql-test/suite/galera/r/galera_wan.result index 41b915fa5bf..bc4113ffb1c 100644 --- a/mysql-test/suite/galera/r/galera_wan.result +++ b/mysql-test/suite/galera/r/galera_wan.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CALL mtr.add_suppression("WSREP: Stray state UUID msg:.*"); CALL mtr.add_suppression("WSREP: Sending JOIN failed:.*"); CALL mtr.add_suppression("There are no nodes in the same segment that will ever be able to become donors, yet there is a suitable donor outside"); diff --git a/mysql-test/suite/galera/r/galera_wan_restart_ist.result b/mysql-test/suite/galera/r/galera_wan_restart_ist.result index 58ed9f057da..46865a9c48c 100644 --- a/mysql-test/suite/galera/r/galera_wan_restart_ist.result +++ b/mysql-test/suite/galera/r/galera_wan_restart_ist.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3; connect node_4, 127.0.0.1, root, , test, $NODE_MYPORT_4; connection node_1; diff --git a/mysql-test/suite/galera/r/galera_wan_restart_sst.result b/mysql-test/suite/galera/r/galera_wan_restart_sst.result index 71786cdd023..05390338160 100644 --- a/mysql-test/suite/galera/r/galera_wan_restart_sst.result +++ b/mysql-test/suite/galera/r/galera_wan_restart_sst.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; SELECT VARIABLE_VALUE = 4 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'; VARIABLE_VALUE = 4 1 @@ -46,38 +48,40 @@ INSERT INTO t1 VALUES (33); connection node_4; INSERT INTO t1 VALUES (341); connection node_1; -SELECT COUNT(*) = 19 FROM t1; -COUNT(*) = 19 -1 +SELECT COUNT(*) AS EXPECT_19 FROM t1; +EXPECT_19 +19 connection node_2; SELECT VARIABLE_VALUE = 4 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'; VARIABLE_VALUE = 4 1 -SELECT COUNT(*) = 19 FROM t1; -COUNT(*) = 19 -1 +SELECT COUNT(*) AS EXPECT_19 FROM t1; +EXPECT_19 +19 connection node_3; SELECT VARIABLE_VALUE = 4 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'; VARIABLE_VALUE = 4 1 -SELECT COUNT(*) = 19 FROM t1; -COUNT(*) = 19 -1 +SELECT COUNT(*) AS EXPECT_19 FROM t1; +EXPECT_19 +19 connection node_4; SELECT VARIABLE_VALUE = 4 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'; VARIABLE_VALUE = 4 1 -SELECT COUNT(*) = 19 FROM t1; -COUNT(*) = 19 -1 +SELECT COUNT(*) AS EXPECT_19 FROM t1; +EXPECT_19 +19 connection node_1; DROP TABLE t1; CALL mtr.add_suppression("There are no nodes in the same segment that will ever be able to become donors, yet there is a suitable donor outside"); CALL mtr.add_suppression("WSREP: gcs_caused\\(\\) returned -1 \\(Operation not permitted\\)"); connection node_2; +CALL mtr.add_suppression("There are no nodes in the same segment that will ever be able to become donors, yet there is a suitable donor outside"); CALL mtr.add_suppression("Action message in non-primary configuration from member 0"); connection node_3; CALL mtr.add_suppression("There are no nodes in the same segment that will ever be able to become donors, yet there is a suitable donor outside"); CALL mtr.add_suppression("Action message in non-primary configuration from member 0"); connection node_4; +CALL mtr.add_suppression("There are no nodes in the same segment that will ever be able to become donors, yet there is a suitable donor outside"); CALL mtr.add_suppression("Action message in non-primary configuration from member 0"); diff --git a/mysql-test/suite/galera/r/galera_wsrep_desync_wsrep_on.result b/mysql-test/suite/galera/r/galera_wsrep_desync_wsrep_on.result index 99c680c7b12..e01825fd944 100644 --- a/mysql-test/suite/galera/r/galera_wsrep_desync_wsrep_on.result +++ b/mysql-test/suite/galera/r/galera_wsrep_desync_wsrep_on.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; CREATE TABLE ten (f1 INTEGER); INSERT INTO ten VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); diff --git a/mysql-test/suite/galera/r/galera_wsrep_log_conficts.result b/mysql-test/suite/galera/r/galera_wsrep_log_conficts.result index fa49d8c57c2..59883f1ca7e 100644 --- a/mysql-test/suite/galera/r/galera_wsrep_log_conficts.result +++ b/mysql-test/suite/galera/r/galera_wsrep_log_conficts.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 ( f1 VARCHAR(255) PRIMARY KEY ) ENGINE=InnoDB DEFAULT CHARSET=utf8; @@ -20,6 +22,6 @@ connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2; connection node_2a; connection node_2; COMMIT; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction include/assert_grep.inc [cluster conflict due to high priority abort for threads] DROP TABLE t1; diff --git a/mysql-test/suite/galera/r/galera_wsrep_new_cluster.result b/mysql-test/suite/galera/r/galera_wsrep_new_cluster.result index 3ba34e8ea79..244623d52b7 100644 --- a/mysql-test/suite/galera/r/galera_wsrep_new_cluster.result +++ b/mysql-test/suite/galera/r/galera_wsrep_new_cluster.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status'; VARIABLE_VALUE diff --git a/mysql-test/suite/galera/r/galera_wsrep_provider_options_syntax.result b/mysql-test/suite/galera/r/galera_wsrep_provider_options_syntax.result index f19dc40205b..0f7cd134156 100644 --- a/mysql-test/suite/galera/r/galera_wsrep_provider_options_syntax.result +++ b/mysql-test/suite/galera/r/galera_wsrep_provider_options_syntax.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; call mtr.add_suppression("WSREP\: Unknown parameter 'gmcasts\.segment'"); call mtr.add_suppression("WSREP\: Set options returned 7"); SET GLOBAL wsrep_provider_options="gmcasts.segment=1"; diff --git a/mysql-test/suite/galera/r/galera_wsrep_provider_unset_set.result b/mysql-test/suite/galera/r/galera_wsrep_provider_unset_set.result index d56d9340474..7a645407004 100644 --- a/mysql-test/suite/galera/r/galera_wsrep_provider_unset_set.result +++ b/mysql-test/suite/galera/r/galera_wsrep_provider_unset_set.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; connection node_2; connection node_1; diff --git a/mysql-test/suite/galera/r/galera_zero_length_column.result b/mysql-test/suite/galera/r/galera_zero_length_column.result index 572d94d6756..fa29264704f 100644 --- a/mysql-test/suite/galera/r/galera_zero_length_column.result +++ b/mysql-test/suite/galera/r/galera_zero_length_column.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY , f2 VARCHAR(0)) ENGINE=InnoDB; CREATE TABLE t2 (f1 VARCHAR(0)) ENGINE=InnoDB; diff --git a/mysql-test/suite/galera/r/grant.result b/mysql-test/suite/galera/r/grant.result index a2ca72ee8ec..56f56d3b023 100644 --- a/mysql-test/suite/galera/r/grant.result +++ b/mysql-test/suite/galera/r/grant.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; # # MDEV#6266: Changing password fails on galera cluster # @@ -13,7 +15,7 @@ SET PASSWORD FOR 'user_6266'@'localhost' = PASSWORD('newpass'); # On node_2 connection node_2; SELECT user FROM mysql.user WHERE user='user_6266'; -user +User user_6266 DROP USER 'user_6266'@'localhost'; disconnect node_2; diff --git a/mysql-test/suite/galera/r/lp1276424.result b/mysql-test/suite/galera/r/lp1276424.result index 363758e0d66..be27ee5374f 100644 --- a/mysql-test/suite/galera/r/lp1276424.result +++ b/mysql-test/suite/galera/r/lp1276424.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INT DEFAULT NULL, UNIQUE KEY i1 (f1)) ENGINE=InnoDB; INSERT INTO t1 VALUES (NULL); INSERT INTO t1 VALUES (NULL); diff --git a/mysql-test/suite/galera/r/lp1347768.result b/mysql-test/suite/galera/r/lp1347768.result index 7beb167d538..49c8894c081 100644 --- a/mysql-test/suite/galera/r/lp1347768.result +++ b/mysql-test/suite/galera/r/lp1347768.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE `r8kmb_redirect_links` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `old_url` varchar(255) DEFAULT NULL, diff --git a/mysql-test/suite/galera/r/lp1376747-2.result b/mysql-test/suite/galera/r/lp1376747-2.result index b85e130f4f4..5e5b5be6c86 100644 --- a/mysql-test/suite/galera/r/lp1376747-2.result +++ b/mysql-test/suite/galera/r/lp1376747-2.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (id INT PRIMARY KEY) ENGINE=InnoDB; INSERT INTO t1 VALUES (1); connection node_2; diff --git a/mysql-test/suite/galera/r/lp1376747-3.result b/mysql-test/suite/galera/r/lp1376747-3.result index a2c55b5f1f6..62893b85bcf 100644 --- a/mysql-test/suite/galera/r/lp1376747-3.result +++ b/mysql-test/suite/galera/r/lp1376747-3.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (id INT PRIMARY KEY) ENGINE=InnoDB; INSERT INTO t1 VALUES (1); connection node_2; diff --git a/mysql-test/suite/galera/r/lp1376747-4.result b/mysql-test/suite/galera/r/lp1376747-4.result index a7c1e7d6e9d..6bbc24309ad 100644 --- a/mysql-test/suite/galera/r/lp1376747-4.result +++ b/mysql-test/suite/galera/r/lp1376747-4.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; CREATE TABLE t1 (id INT PRIMARY KEY) ENGINE=InnoDB; INSERT INTO t1 VALUES (1); diff --git a/mysql-test/suite/galera/r/lp1376747.result b/mysql-test/suite/galera/r/lp1376747.result index 16d4fa3fc52..1b9dd545409 100644 --- a/mysql-test/suite/galera/r/lp1376747.result +++ b/mysql-test/suite/galera/r/lp1376747.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (id INT PRIMARY KEY) ENGINE=InnoDB; INSERT INTO t1 VALUES (1); connection node_2; diff --git a/mysql-test/suite/galera/r/lp1438990.result b/mysql-test/suite/galera/r/lp1438990.result index d48d2435faa..a324121d7da 100644 --- a/mysql-test/suite/galera/r/lp1438990.result +++ b/mysql-test/suite/galera/r/lp1438990.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY); CREATE TABLE t2 (f1 INTEGER PRIMARY KEY); diff --git a/mysql-test/suite/galera/r/lp959512.result b/mysql-test/suite/galera/r/lp959512.result index 55adfa360b0..589030002db 100644 --- a/mysql-test/suite/galera/r/lp959512.result +++ b/mysql-test/suite/galera/r/lp959512.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; DROP TABLE IF EXISTS variable; Warnings: Note 1051 Unknown table 'test.variable' diff --git a/mysql-test/suite/galera/r/mdev-22543.result b/mysql-test/suite/galera/r/mdev-22543.result index 02f2b632b32..9386b7405d4 100644 --- a/mysql-test/suite/galera/r/mdev-22543.result +++ b/mysql-test/suite/galera/r/mdev-22543.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; connection node_2; connection node_1; diff --git a/mysql-test/suite/galera/r/mdev_10518.result b/mysql-test/suite/galera/r/mdev_10518.result index aedf7cc4038..b07f5303586 100644 --- a/mysql-test/suite/galera/r/mdev_10518.result +++ b/mysql-test/suite/galera/r/mdev_10518.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; # On node_1 connection node_1; list of GTID variables : @@ -80,9 +82,13 @@ connection node_1; DROP TABLE t1, t2; #cleanup 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; disconnect node_2; disconnect node_1; # End of test diff --git a/mysql-test/suite/galera/r/mdev_18730.result b/mysql-test/suite/galera/r/mdev_18730.result new file mode 100644 index 00000000000..ff0a934ba6d --- /dev/null +++ b/mysql-test/suite/galera/r/mdev_18730.result @@ -0,0 +1,27 @@ +connection node_2; +connection node_1; +CREATE TABLE t1 (f1 INT PRIMARY KEY); +connection node_1; +SET DEBUG_SYNC = "wsrep_after_commit_order_leave SIGNAL acol_reached WAIT_FOR acol_continue"; +INSERT INTO t1 VALUES (1); +connection ctrl; +SET DEBUG_SYNC = "now WAIT_FOR acol_reached"; +connection node_1_sr; +SET SESSION wsrep_sync_wait = 0; +SET SESSION wsrep_trx_fragment_unit = 'rows'; +SET SESSION wsrep_trx_fragment_size = 1; +START TRANSACTION; +INSERT INTO t1 VALUES (2); +connection ctrl; +SET DEBUG_SYNC = "now SIGNAL acol_continue"; +connection node_1; +connection node_1_sr; +ROLLBACK; +connection ctrl; +SET DEBUG_SYNC = "RESET"; +disconnect ctrl; +disconnect node_1_sr; +connection node_1; +DROP TABLE t1; +disconnect node_2; +disconnect node_1; diff --git a/mysql-test/suite/galera/r/mdev_21025.result b/mysql-test/suite/galera/r/mdev_21025.result new file mode 100644 index 00000000000..6a8d5ac8367 --- /dev/null +++ b/mysql-test/suite/galera/r/mdev_21025.result @@ -0,0 +1,11 @@ +connection node_2; +connection node_1; +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY); +START TRANSACTION; +INSERT INTO t1 (f1) VALUES (1); +START TRANSACTION; +INSERT IGNORE INTO t1 (f1) VALUES (1); +Warnings: +Warning 1062 Duplicate entry '1' for key 'PRIMARY' +START TRANSACTION; +DROP TABLE t1; diff --git a/mysql-test/suite/galera/r/mdev_21718.result b/mysql-test/suite/galera/r/mdev_21718.result new file mode 100644 index 00000000000..ce938614854 --- /dev/null +++ b/mysql-test/suite/galera/r/mdev_21718.result @@ -0,0 +1,16 @@ +connection node_2; +connection node_1; +CREATE TABLE t1 (f1 INT PRIMARY KEY) ENGINE=InnoDB; +connection node_1; +START TRANSACTION; +INSERT INTO t1 VALUES (1); +SET DEBUG_SYNC = "wsrep_before_before_command SIGNAL reached WAIT_FOR continue"; +COMMIT; +connection node_1_ctrl; +SET DEBUG_SYNC = "now WAIT_FOR reached"; +connection node_2; +INSERT INTO t1 VALUES (1); +connection node_1; +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction +DROP TABLE t1; +SET DEBUG_SYNC = "RESET"; diff --git a/mysql-test/suite/galera/r/mdev_9290.result b/mysql-test/suite/galera/r/mdev_9290.result index 276ab9e8ecb..d8fc35b02f4 100644 --- a/mysql-test/suite/galera/r/mdev_9290.result +++ b/mysql-test/suite/galera/r/mdev_9290.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; # # MDEV-9290 : InnoDB: Assertion failure in file trx0sys.cc line 353 # InnoDB: Failing assertion: xid_seqno > trx_sys_cur_xid_seqno diff --git a/mysql-test/suite/galera/r/mysql-wsrep#110.result b/mysql-test/suite/galera/r/mysql-wsrep#110.result index 6d4031d71cd..344185f4f4e 100644 --- a/mysql-test/suite/galera/r/mysql-wsrep#110.result +++ b/mysql-test/suite/galera/r/mysql-wsrep#110.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY); CREATE TABLE t2 (f1 INTEGER PRIMARY KEY); diff --git a/mysql-test/suite/galera/r/mysql-wsrep#198.result b/mysql-test/suite/galera/r/mysql-wsrep#198.result index 33f36d407db..5b569ffae27 100644 --- a/mysql-test/suite/galera/r/mysql-wsrep#198.result +++ b/mysql-test/suite/galera/r/mysql-wsrep#198.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (id INT PRIMARY KEY) ENGINE=InnoDB; CREATE TABLE t2 (id INT PRIMARY KEY) ENGINE=InnoDB; connection node_2; diff --git a/mysql-test/suite/galera/r/mysql-wsrep#201.result b/mysql-test/suite/galera/r/mysql-wsrep#201.result index fe5725cab27..e55c38ea7cc 100644 --- a/mysql-test/suite/galera/r/mysql-wsrep#201.result +++ b/mysql-test/suite/galera/r/mysql-wsrep#201.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT) ENGINE=InnoDB; INSERT INTO t1 VALUES (DEFAULT); connection node_2; diff --git a/mysql-test/suite/galera/r/mysql-wsrep#237.result b/mysql-test/suite/galera/r/mysql-wsrep#237.result index 19503dd5781..bc348613d25 100644 --- a/mysql-test/suite/galera/r/mysql-wsrep#237.result +++ b/mysql-test/suite/galera/r/mysql-wsrep#237.result @@ -1,6 +1,8 @@ +connection node_2; +connection node_1; CREATE TABLE t (f1 INTEGER PRIMARY KEY) Engine=InnoDB; connection node_1; -SET DEBUG_SYNC = 'wsrep_before_replication WAIT_FOR continue'; +SET DEBUG_SYNC = 'wsrep_before_certification WAIT_FOR continue'; INSERT INTO t values (1);; connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1; connection node_1a; diff --git a/mysql-test/suite/galera/r/mysql-wsrep#247.result b/mysql-test/suite/galera/r/mysql-wsrep#247.result index e59c6d1a299..704f0ba923c 100644 --- a/mysql-test/suite/galera/r/mysql-wsrep#247.result +++ b/mysql-test/suite/galera/r/mysql-wsrep#247.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; SET GLOBAL wsrep_desync=1; SET wsrep_OSU_method=RSU; diff --git a/mysql-test/suite/galera/r/mysql-wsrep#31.result b/mysql-test/suite/galera/r/mysql-wsrep#31.result index 1092f4ddb0c..d1d2861ec3a 100644 --- a/mysql-test/suite/galera/r/mysql-wsrep#31.result +++ b/mysql-test/suite/galera/r/mysql-wsrep#31.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; connection node_2; connection node_1; diff --git a/mysql-test/suite/galera/r/mysql-wsrep#33,debug.rdiff b/mysql-test/suite/galera/r/mysql-wsrep#33,debug.rdiff new file mode 100644 index 00000000000..d8fed3897fd --- /dev/null +++ b/mysql-test/suite/galera/r/mysql-wsrep#33,debug.rdiff @@ -0,0 +1,117 @@ +--- r/mysql-wsrep#33.result 2020-02-13 15:14:31.871914684 +0200 ++++ r/mysql-wsrep#33.reject 2020-02-13 17:01:22.559450367 +0200 +@@ -395,6 +395,114 @@ + DROP TABLE t1; + COMMIT; + SET AUTOCOMMIT=ON; ++Performing State Transfer on a server that has been killed and restarted ++while a DDL was in progress on it ++connection node_1; ++CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB; ++SET AUTOCOMMIT=OFF; ++START TRANSACTION; ++INSERT INTO t1 VALUES ('node1_committed_before'); ++INSERT INTO t1 VALUES ('node1_committed_before'); ++INSERT INTO t1 VALUES ('node1_committed_before'); ++INSERT INTO t1 VALUES ('node1_committed_before'); ++INSERT INTO t1 VALUES ('node1_committed_before'); ++connection node_2; ++START TRANSACTION; ++INSERT INTO t1 VALUES ('node2_committed_before'); ++INSERT INTO t1 VALUES ('node2_committed_before'); ++INSERT INTO t1 VALUES ('node2_committed_before'); ++INSERT INTO t1 VALUES ('node2_committed_before'); ++INSERT INTO t1 VALUES ('node2_committed_before'); ++COMMIT; ++SET GLOBAL debug_dbug = 'd,sync.alter_opened_table'; ++connection node_1; ++ALTER TABLE t1 ADD COLUMN f2 INTEGER; ++connection node_2; ++SET wsrep_sync_wait = 0; ++Killing server ... ++connection node_1; ++SET AUTOCOMMIT=OFF; ++START TRANSACTION; ++INSERT INTO t1 (f1) VALUES ('node1_committed_during'); ++INSERT INTO t1 (f1) VALUES ('node1_committed_during'); ++INSERT INTO t1 (f1) VALUES ('node1_committed_during'); ++INSERT INTO t1 (f1) VALUES ('node1_committed_during'); ++INSERT INTO t1 (f1) VALUES ('node1_committed_during'); ++COMMIT; ++START TRANSACTION; ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++connect node_1a_galera_st_kill_slave_ddl, 127.0.0.1, root, , test, $NODE_MYPORT_1; ++SET AUTOCOMMIT=OFF; ++START TRANSACTION; ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++connection node_2; ++Performing --wsrep-recover ... ++connection node_2; ++Starting server ... ++Using --wsrep-start-position when starting mysqld ... ++SET AUTOCOMMIT=OFF; ++START TRANSACTION; ++INSERT INTO t1 (f1) VALUES ('node2_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node2_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node2_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node2_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node2_committed_after'); ++COMMIT; ++connection node_1; ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); ++COMMIT; ++SET AUTOCOMMIT=OFF; ++START TRANSACTION; ++INSERT INTO t1 (f1) VALUES ('node1_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_committed_after'); ++INSERT INTO t1 (f1) VALUES ('node1_committed_after'); ++COMMIT; ++connection node_1a_galera_st_kill_slave_ddl; ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); ++ROLLBACK; ++SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1'; ++COUNT(*) = 2 ++1 ++SELECT COUNT(*) = 35 FROM t1; ++COUNT(*) = 35 ++1 ++SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1; ++COUNT(*) = 0 ++1 ++COMMIT; ++SET AUTOCOMMIT=ON; ++connection node_1; ++SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1'; ++COUNT(*) = 2 ++1 ++SELECT COUNT(*) = 35 FROM t1; ++COUNT(*) = 35 ++1 ++SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1; ++COUNT(*) = 0 ++1 ++DROP TABLE t1; ++COMMIT; ++SET AUTOCOMMIT=ON; ++SET GLOBAL debug_dbug = $debug_orig; + connection node_2; + connection node_1; + CALL mtr.add_suppression("Slave SQL: Error 'The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement' on query"); diff --git a/mysql-test/suite/galera/r/mysql-wsrep#33.result b/mysql-test/suite/galera/r/mysql-wsrep#33.result index 6a5251204b9..fb0b593cc96 100644 --- a/mysql-test/suite/galera/r/mysql-wsrep#33.result +++ b/mysql-test/suite/galera/r/mysql-wsrep#33.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; connection node_2; Setting SST method to mysqldump ... @@ -56,6 +58,9 @@ INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); connection node_2; Loading wsrep provider ... +disconnect node_2; +connect node_2, 127.0.0.1, root, , test, $NODE_MYPORT_2; +connection node_2; SET AUTOCOMMIT=OFF; START TRANSACTION; INSERT INTO t1 VALUES ('node2_committed_after'); @@ -104,6 +109,293 @@ COUNT(*) = 0 DROP TABLE t1; COMMIT; SET AUTOCOMMIT=ON; +Performing State Transfer on a server that has been shut down cleanly and restarted +connection node_1; +CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB; +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node1_committed_before'); +INSERT INTO t1 VALUES ('node1_committed_before'); +INSERT INTO t1 VALUES ('node1_committed_before'); +INSERT INTO t1 VALUES ('node1_committed_before'); +INSERT INTO t1 VALUES ('node1_committed_before'); +COMMIT; +connection node_2; +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node2_committed_before'); +INSERT INTO t1 VALUES ('node2_committed_before'); +INSERT INTO t1 VALUES ('node2_committed_before'); +INSERT INTO t1 VALUES ('node2_committed_before'); +INSERT INTO t1 VALUES ('node2_committed_before'); +COMMIT; +Shutting down server ... +connection node_1; +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node1_committed_during'); +INSERT INTO t1 VALUES ('node1_committed_during'); +INSERT INTO t1 VALUES ('node1_committed_during'); +INSERT INTO t1 VALUES ('node1_committed_during'); +INSERT INTO t1 VALUES ('node1_committed_during'); +COMMIT; +START TRANSACTION; +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +connect node_1a_galera_st_shutdown_slave, 127.0.0.1, root, , test, $NODE_MYPORT_1; +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +connection node_2; +Starting server ... +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node2_committed_after'); +INSERT INTO t1 VALUES ('node2_committed_after'); +INSERT INTO t1 VALUES ('node2_committed_after'); +INSERT INTO t1 VALUES ('node2_committed_after'); +INSERT INTO t1 VALUES ('node2_committed_after'); +COMMIT; +connection node_1; +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +COMMIT; +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node1_committed_after'); +INSERT INTO t1 VALUES ('node1_committed_after'); +INSERT INTO t1 VALUES ('node1_committed_after'); +INSERT INTO t1 VALUES ('node1_committed_after'); +INSERT INTO t1 VALUES ('node1_committed_after'); +COMMIT; +connection node_1a_galera_st_shutdown_slave; +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +ROLLBACK; +SELECT COUNT(*) = 35 FROM t1; +COUNT(*) = 35 +1 +SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1; +COUNT(*) = 0 +1 +COMMIT; +SET AUTOCOMMIT=ON; +connection node_1; +SELECT COUNT(*) = 35 FROM t1; +COUNT(*) = 35 +1 +SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1; +COUNT(*) = 0 +1 +DROP TABLE t1; +COMMIT; +SET AUTOCOMMIT=ON; +Performing State Transfer on a server that starts from a clean var directory +This is accomplished by shutting down node #2 and removing its var directory before restarting it +connection node_1; +CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB; +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node1_committed_before'); +INSERT INTO t1 VALUES ('node1_committed_before'); +INSERT INTO t1 VALUES ('node1_committed_before'); +INSERT INTO t1 VALUES ('node1_committed_before'); +INSERT INTO t1 VALUES ('node1_committed_before'); +COMMIT; +connection node_2; +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node2_committed_before'); +INSERT INTO t1 VALUES ('node2_committed_before'); +INSERT INTO t1 VALUES ('node2_committed_before'); +INSERT INTO t1 VALUES ('node2_committed_before'); +INSERT INTO t1 VALUES ('node2_committed_before'); +COMMIT; +Shutting down server ... +connection node_1; +Cleaning var directory ... +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node1_committed_during'); +INSERT INTO t1 VALUES ('node1_committed_during'); +INSERT INTO t1 VALUES ('node1_committed_during'); +INSERT INTO t1 VALUES ('node1_committed_during'); +INSERT INTO t1 VALUES ('node1_committed_during'); +COMMIT; +START TRANSACTION; +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +connect node_1a_galera_st_clean_slave, 127.0.0.1, root, , test, $NODE_MYPORT_1; +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +connection node_2; +Starting server ... +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node2_committed_after'); +INSERT INTO t1 VALUES ('node2_committed_after'); +INSERT INTO t1 VALUES ('node2_committed_after'); +INSERT INTO t1 VALUES ('node2_committed_after'); +INSERT INTO t1 VALUES ('node2_committed_after'); +COMMIT; +connection node_1; +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +COMMIT; +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node1_committed_after'); +INSERT INTO t1 VALUES ('node1_committed_after'); +INSERT INTO t1 VALUES ('node1_committed_after'); +INSERT INTO t1 VALUES ('node1_committed_after'); +INSERT INTO t1 VALUES ('node1_committed_after'); +COMMIT; +connection node_1a_galera_st_clean_slave; +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +ROLLBACK; +SELECT COUNT(*) = 35 FROM t1; +COUNT(*) = 35 +1 +SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1; +COUNT(*) = 0 +1 +COMMIT; +SET AUTOCOMMIT=ON; +connection node_1; +SELECT COUNT(*) = 35 FROM t1; +COUNT(*) = 35 +1 +SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1; +COUNT(*) = 0 +1 +DROP TABLE t1; +COMMIT; +SET AUTOCOMMIT=ON; +Performing State Transfer on a server that has been killed and restarted +connection node_1; +CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB; +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node1_committed_before'); +INSERT INTO t1 VALUES ('node1_committed_before'); +INSERT INTO t1 VALUES ('node1_committed_before'); +INSERT INTO t1 VALUES ('node1_committed_before'); +INSERT INTO t1 VALUES ('node1_committed_before'); +COMMIT; +connection node_2; +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node2_committed_before'); +INSERT INTO t1 VALUES ('node2_committed_before'); +INSERT INTO t1 VALUES ('node2_committed_before'); +INSERT INTO t1 VALUES ('node2_committed_before'); +INSERT INTO t1 VALUES ('node2_committed_before'); +COMMIT; +Killing server ... +connection node_1; +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node1_committed_during'); +INSERT INTO t1 VALUES ('node1_committed_during'); +INSERT INTO t1 VALUES ('node1_committed_during'); +INSERT INTO t1 VALUES ('node1_committed_during'); +INSERT INTO t1 VALUES ('node1_committed_during'); +COMMIT; +START TRANSACTION; +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +connect node_1a_galera_st_kill_slave, 127.0.0.1, root, , test, $NODE_MYPORT_1; +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +connection node_2; +Performing --wsrep-recover ... +Starting server ... +Using --wsrep-start-position when starting mysqld ... +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node2_committed_after'); +INSERT INTO t1 VALUES ('node2_committed_after'); +INSERT INTO t1 VALUES ('node2_committed_after'); +INSERT INTO t1 VALUES ('node2_committed_after'); +INSERT INTO t1 VALUES ('node2_committed_after'); +COMMIT; +connection node_1; +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +INSERT INTO t1 VALUES ('node1_to_be_committed_after'); +COMMIT; +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES ('node1_committed_after'); +INSERT INTO t1 VALUES ('node1_committed_after'); +INSERT INTO t1 VALUES ('node1_committed_after'); +INSERT INTO t1 VALUES ('node1_committed_after'); +INSERT INTO t1 VALUES ('node1_committed_after'); +COMMIT; +connection node_1a_galera_st_kill_slave; +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after'); +ROLLBACK; +SELECT COUNT(*) = 35 FROM t1; +COUNT(*) = 35 +1 +SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1; +COUNT(*) = 0 +1 +COMMIT; +SET AUTOCOMMIT=ON; +connection node_1; +SELECT COUNT(*) = 35 FROM t1; +COUNT(*) = 35 +1 +SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1; +COUNT(*) = 0 +1 +DROP TABLE t1; +COMMIT; +SET AUTOCOMMIT=ON; +connection node_2; connection node_1; CALL mtr.add_suppression("Slave SQL: Error 'The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement' on query"); DROP USER sst; @@ -114,5 +406,6 @@ CALL mtr.add_suppression("Can't open and lock time zone table"); CALL mtr.add_suppression("Can't open and lock privilege tables"); CALL mtr.add_suppression("Info table is not ready to be used"); CALL mtr.add_suppression("Native table .* has the wrong structure"); -connection node_2; -Restarting server ... +CALL mtr.add_suppression("Table \'mysql.gtid_slave_pos\' doesn\'t exist"); +SET GLOBAL general_log = ON; +SET GLOBAL slow_query_log = ON; diff --git a/mysql-test/suite/galera/r/mysql-wsrep#332.result b/mysql-test/suite/galera/r/mysql-wsrep#332.result index 3986e4ab940..565979a93ae 100644 --- a/mysql-test/suite/galera/r/mysql-wsrep#332.result +++ b/mysql-test/suite/galera/r/mysql-wsrep#332.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1; connection node_1; CREATE TABLE p (f1 INTEGER PRIMARY KEY, f2 INTEGER) ENGINE=INNODB; @@ -19,17 +21,17 @@ connection node_1a; SET SESSION wsrep_on = 0; SET SESSION wsrep_on = 1; SET GLOBAL wsrep_provider_options = 'dbug='; -SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_enter_sync'; +SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_master_enter_sync'; connection node_1; COMMIT; connection node_1a; SET SESSION wsrep_on = 0; SET SESSION wsrep_on = 1; SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; -SET GLOBAL wsrep_provider_options = 'signal=local_monitor_enter_sync'; +SET GLOBAL wsrep_provider_options = 'signal=local_monitor_master_enter_sync'; SET GLOBAL wsrep_provider_options = 'dbug='; connection node_1; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction connection node_2; SELECT * FROM p; f1 f2 @@ -62,17 +64,17 @@ connection node_1a; SET SESSION wsrep_on = 0; SET SESSION wsrep_on = 1; SET GLOBAL wsrep_provider_options = 'dbug='; -SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_enter_sync'; +SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_master_enter_sync'; connection node_1; COMMIT; connection node_1a; SET SESSION wsrep_on = 0; SET SESSION wsrep_on = 1; SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; -SET GLOBAL wsrep_provider_options = 'signal=local_monitor_enter_sync'; +SET GLOBAL wsrep_provider_options = 'signal=local_monitor_master_enter_sync'; SET GLOBAL wsrep_provider_options = 'dbug='; connection node_1; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction connection node_2; SELECT * FROM p1; f1 f2 @@ -110,17 +112,17 @@ connection node_1a; SET SESSION wsrep_on = 0; SET SESSION wsrep_on = 1; SET GLOBAL wsrep_provider_options = 'dbug='; -SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_enter_sync'; +SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_master_enter_sync'; connection node_1; COMMIT; connection node_1a; SET SESSION wsrep_on = 0; SET SESSION wsrep_on = 1; SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; -SET GLOBAL wsrep_provider_options = 'signal=local_monitor_enter_sync'; +SET GLOBAL wsrep_provider_options = 'signal=local_monitor_master_enter_sync'; SET GLOBAL wsrep_provider_options = 'dbug='; connection node_1; -ERROR 40001: Deadlock: wsrep aborted transaction +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction connection node_2; SELECT * FROM p1; f1 f2 diff --git a/mysql-test/suite/galera/r/mysql-wsrep#90.result b/mysql-test/suite/galera/r/mysql-wsrep#90.result index 0b8f55e6219..b0fa06ffaf8 100644 --- a/mysql-test/suite/galera/r/mysql-wsrep#90.result +++ b/mysql-test/suite/galera/r/mysql-wsrep#90.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) Engine=InnoDB; connection node_1; SET GLOBAL wsrep_OSU_method = "RSU"; diff --git a/mysql-test/suite/galera/r/mysql-wsrep-bugs-607.result b/mysql-test/suite/galera/r/mysql-wsrep-bugs-607.result new file mode 100644 index 00000000000..9d9614ffefe --- /dev/null +++ b/mysql-test/suite/galera/r/mysql-wsrep-bugs-607.result @@ -0,0 +1,31 @@ +connection node_2; +connection node_1; +# +# test the order of wsrep XID storage after certifiation failure +# +connection node_1; +set session wsrep_sync_wait=0; +create table t1 (i int primary key, j int); +insert into t1 values (4, 0); +connect node_2b, 127.0.0.1, root, , test, $NODE_MYPORT_2; +connection node_2b; +set session wsrep_sync_wait=0; +SET GLOBAL debug_dbug = "d,sync.wsrep_apply_cb"; +connection node_1; +UPDATE test.t1 set j=1 where i=4; +connection node_2b; +SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached"; +connection node_2; +set session wsrep_sync_wait=0; +set session wsrep_retry_autocommit=0; +UPDATE test.t1 SET j=2 WHERE i=4; +connection node_2b; +SET DEBUG_SYNC = "now SIGNAL signal.wsrep_apply_cb"; +SET GLOBAL debug_dbug = ""; +SET DEBUG_SYNC = "RESET"; +connection node_2; +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction +select * from t1; +i j +4 1 +DROP TABLE t1; diff --git a/mysql-test/suite/galera/r/partition.result b/mysql-test/suite/galera/r/partition.result index bdf6df25589..2e16d06519c 100644 --- a/mysql-test/suite/galera/r/partition.result +++ b/mysql-test/suite/galera/r/partition.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; # # MDEV#4953 Galera: DELETE from a partitioned table is not replicated # @@ -116,6 +118,8 @@ connection node_1; # Case 1: wsrep_load_data_splitting = ON & LOAD DATA with 20002 # entries. SET GLOBAL wsrep_load_data_splitting = ON; +Warnings: +Warning 1287 '@@wsrep_load_data_splitting' is deprecated and will be removed in a future release CREATE TABLE t1 (pk INT PRIMARY KEY) ENGINE=INNODB PARTITION BY HASH(pk) PARTITIONS 2; connection node_2; @@ -123,11 +127,13 @@ SELECT COUNT(*) FROM t1; COUNT(*) 20002 wsrep_last_committed_diff -1 +AS_EXPECTED_3_or_5 DROP TABLE t1; # Case 2: wsrep_load_data_splitting = ON & LOAD DATA with 101 entries. connection node_1; SET GLOBAL wsrep_load_data_splitting = ON; +Warnings: +Warning 1287 '@@wsrep_load_data_splitting' is deprecated and will be removed in a future release CREATE TABLE t1 (pk INT PRIMARY KEY) ENGINE=INNODB PARTITION BY HASH(pk) PARTITIONS 2; connection node_2; @@ -141,6 +147,8 @@ DROP TABLE t1; # entries. connection node_1; SET GLOBAL wsrep_load_data_splitting = OFF; +Warnings: +Warning 1287 '@@wsrep_load_data_splitting' is deprecated and will be removed in a future release CREATE TABLE t1 (pk INT PRIMARY KEY) ENGINE=INNODB PARTITION BY HASH(pk) PARTITIONS 2; connection node_2; @@ -148,10 +156,12 @@ SELECT COUNT(*) FROM t1; COUNT(*) 20002 wsrep_last_committed_diff -1 +AS_EXPECTED_1_or_2 DROP TABLE t1; connection node_1; -SET GLOBAL wsrep_load_data_splitting = 1;; +SET GLOBAL wsrep_load_data_splitting = 0;; +Warnings: +Warning 1287 '@@wsrep_load_data_splitting' is deprecated and will be removed in a future release disconnect node_2; disconnect node_1; # End of test diff --git a/mysql-test/suite/galera/r/pxc-421.result b/mysql-test/suite/galera/r/pxc-421.result index a317b3e40e1..058af15c098 100644 --- a/mysql-test/suite/galera/r/pxc-421.result +++ b/mysql-test/suite/galera/r/pxc-421.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; connection node_2; connection node_1; diff --git a/mysql-test/suite/galera/r/query_cache.result b/mysql-test/suite/galera/r/query_cache.result index a1d5d96d627..5dabd38a982 100644 --- a/mysql-test/suite/galera/r/query_cache.result +++ b/mysql-test/suite/galera/r/query_cache.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; # Execute FLUSH/RESET commands. # On node-1 @@ -1336,9 +1338,13 @@ show status like "Qcache_hits"; Variable_name Value Qcache_hits 12 select * from t1 into outfile "query_cache.out.file"; +Warnings: +Warning 1287 '<select expression> INTO <destination>;' is deprecated and will be removed in a future release. Please use 'SELECT <select list> INTO <destination> FROM...' instead select * from t1 into outfile "query_cache.out.file"; ERROR HY000: File 'query_cache.out.file' already exists select * from t1 limit 1 into dumpfile "query_cache.dump.file"; +Warnings: +Warning 1287 '<select expression> INTO <destination>;' is deprecated and will be removed in a future release. Please use 'SELECT <select list> INTO <destination> FROM...' instead show status like "Qcache_queries_in_cache"; Variable_name Value Qcache_queries_in_cache 0 diff --git a/mysql-test/suite/galera/r/rename.result b/mysql-test/suite/galera/r/rename.result index a7ec431657b..3ad715fa38c 100644 --- a/mysql-test/suite/galera/r/rename.result +++ b/mysql-test/suite/galera/r/rename.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; # # MDEV-8598 : Failed MySQL DDL commands and Galera replication # diff --git a/mysql-test/suite/galera/r/rpl_row_annotate.result b/mysql-test/suite/galera/r/rpl_row_annotate.result index 23de06f015b..61fa2bc286c 100644 --- a/mysql-test/suite/galera/r/rpl_row_annotate.result +++ b/mysql-test/suite/galera/r/rpl_row_annotate.result @@ -1,9 +1,15 @@ +connection node_2; +connection node_1; # On node_2 connection node_2; +SET GLOBAL wsrep_on=OFF; RESET MASTER; +SET GLOBAL wsrep_on=ON; # On node_1 connection node_1; +SET GLOBAL wsrep_on=OFF; RESET MASTER; +SET GLOBAL wsrep_on=ON; CREATE TABLE t1(i INT)ENGINE=INNODB; INSERT INTO t1 VALUES(1); DELETE FROM t1 WHERE i = 1; @@ -68,6 +74,4 @@ mysqld-bin.000001 # Table_map 2 # table_id: # (test.t1) mysqld-bin.000001 # Delete_rows_v1 2 # table_id: # flags: STMT_END_F mysqld-bin.000001 # Xid 2 # COMMIT /* xid= */ DROP TABLE t1; -disconnect node_2; -disconnect node_1; # End of test diff --git a/mysql-test/suite/galera/r/sql_log_bin.result b/mysql-test/suite/galera/r/sql_log_bin.result index c175a0a0e7a..6efd70ca8b8 100644 --- a/mysql-test/suite/galera/r/sql_log_bin.result +++ b/mysql-test/suite/galera/r/sql_log_bin.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; # On node_1 connection node_1; diff --git a/mysql-test/suite/galera/r/unique_key.result b/mysql-test/suite/galera/r/unique_key.result index 9f1fc858389..bb7e22014d9 100644 --- a/mysql-test/suite/galera/r/unique_key.result +++ b/mysql-test/suite/galera/r/unique_key.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; # # MDEV#5552 Deadlock when inserting NULL column value in column with # UNIQUE index diff --git a/mysql-test/suite/galera/r/versioning_trx_id.result b/mysql-test/suite/galera/r/versioning_trx_id.result index f15916e51a5..df92d088834 100644 --- a/mysql-test/suite/galera/r/versioning_trx_id.result +++ b/mysql-test/suite/galera/r/versioning_trx_id.result @@ -1,8 +1,12 @@ +connection node_2; +connection node_1; +call mtr.add_suppression("Sending JOIN failed:.*"); connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3; connection node_1; create table t1 (a int, s bigint unsigned as row start, e bigint unsigned as row end, period for system_time(s,e)) engine=InnoDB with system versioning; insert into t1 (a) values (1),(2); connection node_2; +set session wsrep_sync_wait=15; insert into t1 (a) values (3),(4); select a from t1; a @@ -17,6 +21,7 @@ select count(*) from mysql.transaction_registry where begin_timestamp>=commit_ti count(*) 0 connection node_3; +set session wsrep_sync_wait=15; insert into t1 (a) values (5),(6); select a from t1; a @@ -33,6 +38,7 @@ select count(*) from mysql.transaction_registry where begin_timestamp>=commit_ti count(*) 0 connection node_1; +set session wsrep_sync_wait=15; select a from t1; a 1 @@ -48,5 +54,4 @@ select count(*) from mysql.transaction_registry where begin_timestamp>=commit_ti count(*) 0 drop table t1; -disconnect node_2; -disconnect node_1; +disconnect node_3; diff --git a/mysql-test/suite/galera/r/view.result b/mysql-test/suite/galera/r/view.result index f8da811f9cc..45d5b422f3f 100644 --- a/mysql-test/suite/galera/r/view.result +++ b/mysql-test/suite/galera/r/view.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; # # MDEV-7222: Cluster Node Crash at CREATE DEFINER statement # diff --git a/mysql-test/suite/galera/r/wsrep_trx_fragment_size_sr.result b/mysql-test/suite/galera/r/wsrep_trx_fragment_size_sr.result new file mode 100644 index 00000000000..4139ecd6472 --- /dev/null +++ b/mysql-test/suite/galera/r/wsrep_trx_fragment_size_sr.result @@ -0,0 +1,15 @@ +connection node_2; +connection node_1; +SELECT variable_value FROM information_schema.session_variables +WHERE variable_name = 'wsrep_trx_fragment_size'; +variable_value +0 +SET SESSION wsrep_trx_fragment_size = 0; +SET SESSION wsrep_trx_fragment_size = 123; +SELECT variable_value FROM information_schema.global_variables +WHERE variable_name = 'wsrep_trx_fragment_size'; +variable_value +0 +SET GLOBAL wsrep_trx_fragment_size = 0; +SET GLOBAL wsrep_trx_fragment_size = 123; +SET GLOBAL wsrep_trx_fragment_size = default; diff --git a/mysql-test/suite/galera/suite.pm b/mysql-test/suite/galera/suite.pm index 8ef5965834f..c0b2da5f349 100644 --- a/mysql-test/suite/galera/suite.pm +++ b/mysql-test/suite/galera/suite.pm @@ -1,16 +1,11 @@ package My::Suite::Galera; -use File::Basename; -use My::Find; -@ISA = qw(My::Suite); - -return "Not run for embedded server" if $::opt_embedded_server; - -return "WSREP is not compiled in" if not ::have_wsrep(); +use lib 'suite'; +use wsrep::common; -return "No wsrep provider library" unless ::have_wsrep_provider(); +@ISA = qw(My::Suite); -return ::wsrep_version_message() unless ::check_wsrep_version(); +return wsrep_not_ok() if wsrep_not_ok(); push @::global_suppressions, ( @@ -63,10 +58,19 @@ push @::global_suppressions, qr|WSREP: .*core_handle_uuid_msg.*|, qr(WSREP: --wsrep-causal-reads=ON takes precedence over --wsrep-sync-wait=0. WSREP_SYNC_WAIT_BEFORE_READ is on), qr|WSREP: JOIN message from member .* in non-primary configuration. Ignored.|, + qr|Query apply failed:*|, + qr(WSREP: Ignoring error*), qr(WSREP: Failed to remove page file .*), qr(WSREP: wsrep_sst_method is set to 'mysqldump' yet mysqld bind_address is set to .*), qr|WSREP: Sending JOIN failed: -107 \(Transport endpoint is not connected\). Will retry in new primary component.|, qr|WSREP: Trying to continue unpaused monitor|, + qr|WSREP: Wait for gtid returned error 3 while waiting for prior transactions to commit before setting position|, ); +sub skip_combinations { + my %skip = (); + $skip{'include/have_mariabackup.inc'} = 'Need ss' unless `ss -V`; + %skip; +} + bless { }; diff --git a/mysql-test/suite/galera/t/GCF-1081.test b/mysql-test/suite/galera/t/GCF-1081.test new file mode 100644 index 00000000000..38553feda39 --- /dev/null +++ b/mysql-test/suite/galera/t/GCF-1081.test @@ -0,0 +1,72 @@ +# +# GCF-1081 - Assertion `!thd->sp_runtime_ctx` +# +# Test replaying of stored procedures +# + +--source include/galera_cluster.inc +--source include/have_innodb.inc +--source include/have_debug_sync.inc +--source include/galera_have_debug_sync.inc + +--connection node_1 + +--let $wsrep_local_replays_old = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_replays'` + +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY, f2 INTEGER) ENGINE=InnoDB; +INSERT INTO t1 VALUES (1, 0), (3, 0); + +DELIMITER |; +CREATE PROCEDURE proc_update () +BEGIN + UPDATE t1 SET f2 = 1 where f1 > 0; +END| +DELIMITER ;| + +# Block the SP +--connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1 +--let $galera_sync_point = commit_monitor_master_enter_sync +--source include/galera_set_sync_point.inc + +--connection node_1 +--send CALL proc_update (); + +# Wait until SP is blocked +--connection node_1a +SET SESSION wsrep_sync_wait = 0; +--source include/galera_wait_sync_point.inc + +# Issue a conflicting insert on node #2 +--connection node_1a +SET GLOBAL debug_dbug = 'd,sync.wsrep_before_BF_victim_unlock'; + +--connection node_2 +--send INSERT INTO t1 VALUES (2, 2); + +# Wait until it BF aborts the SP +--connection node_1a +SET SESSION DEBUG_SYNC = 'now WAIT_FOR sync.wsrep_before_BF_victim_unlock_reached'; +SET GLOBAL debug_dbug = ''; + +# Unblock the SP +--connection node_1a +--source include/galera_clear_sync_point.inc +--source include/galera_signal_sync_point.inc + +--connection node_2 +--reap +SELECT * FROM t1; + +# SP succeeds +--connection node_1 +--reap +SELECT * FROM t1; + +# wsrep_local_replays has increased by 1 +--let $wsrep_local_replays_new = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_replays'` +--disable_query_log +--eval SELECT $wsrep_local_replays_new - $wsrep_local_replays_old AS wsrep_local_replays; +--enable_query_log + +DROP PROCEDURE proc_update; +DROP TABLE t1; diff --git a/mysql-test/suite/galera/t/GCF-939.test b/mysql-test/suite/galera/t/GCF-939.test new file mode 100644 index 00000000000..637d656996e --- /dev/null +++ b/mysql-test/suite/galera/t/GCF-939.test @@ -0,0 +1,31 @@ +# +# GCF-939 Avoid creation of GRA log files when applier is successfull +# + +--source include/galera_cluster.inc + +--exec rm -rf $MYSQLTEST_VARDIR/mysqld.2/data/GRA_*.log + +--connection node_1 +--error ER_BAD_TABLE_ERROR +DROP TABLE t1; + +CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB; +INSERT INTO t1 VALUES (1); + +# Expect only one GRA_*.log file +# TODO replace_regex is somehow broken, it will filter out +# result totally if replacement string is already in result +# fixed this temporarily by calling list_files twice +# to get GRA_.log two times, this works for some reason +# +--replace_regex /GRA_.+\.log/GRA_.log/ +--list_files $MYSQLTEST_VARDIR/mysqld.2/data GRA_*.log +--replace_regex /GRA_.+\.log/GRA_.log/ +--list_files $MYSQLTEST_VARDIR/mysqld.2/data GRA_*.log + +DROP TABLE t1; +CALL mtr.add_suppression("Ignoring error 'Unknown table 'test.t1'' on query"); +--connection node_2 +CALL mtr.add_suppression("Error 'Unknown table 'test.t1'' on query"); + diff --git a/mysql-test/suite/galera/t/MDEV-16509.test b/mysql-test/suite/galera/t/MDEV-16509.test new file mode 100644 index 00000000000..dddd8ede293 --- /dev/null +++ b/mysql-test/suite/galera/t/MDEV-16509.test @@ -0,0 +1,144 @@ +# +# Test various executions which go through binlog group commit +# + +--source include/galera_cluster.inc +--source include/have_debug_sync.inc + + +CREATE TABLE t1 (f1 INT PRIMARY KEY) ENGINE=InnoDB; + +--let $galera_connection_name = ctrl +--let $galera_server_number = 1 +--source include/galera_connect.inc + +# Scenario 1: Block INSERT after commit order release after queued for +# group commit. Verify that +# +# - WSREP_LAST_SEEN_GTID is not advanced before commit finishes +# - The INSERT does not become visible before commit finishes + +# Turn off sync wait to avoid blocking and use WSREP_LAST_SEEN_GTID() +# to observe gtid position. +SET SESSION wsrep_sync_wait = 0; +--let $last_seen_gtid_prev = `SELECT WSREP_LAST_SEEN_GTID()` + +--connection node_1 +SET SESSION wsrep_sync_wait = 0; +# Set up sync points +SET DEBUG_SYNC = "wsrep_before_commit_order_leave SIGNAL bcol_reached WAIT_FOR bcol_continue"; +SET DEBUG_SYNC = "wsrep_after_commit_order_leave SIGNAL acol_reached WAIT_FOR acol_continue"; +SET DEBUG_SYNC = "after_group_after_commit SIGNAL after_group_reached WAIT_FOR after_group_continue"; +# Send insert which will block in the sync points above +--send INSERT INTO t1 VALUES (1) + +--connection ctrl +# INSERT has gone through wsrep_ordered_commit() and the transaction is +# committed in memory. +SET DEBUG_SYNC = "now WAIT_FOR bcol_reached"; +--disable_query_log +--eval SELECT WSREP_LAST_SEEN_GTID() = '$last_seen_gtid_prev' AS wsrep_last_seen_gtid_match +--enable_query_log +SELECT * FROM t1; +SET DEBUG_SYNC = "now SIGNAL bcol_continue"; + +# SE commit finished but wsrep_after_commit() has not called yet. +SET DEBUG_SYNC = "now WAIT_FOR acol_reached"; +--disable_query_log +--eval SELECT WSREP_LAST_SEEN_GTID() = '$last_seen_gtid_prev' AS wsrep_last_seen_gtid_match +--enable_query_log +SELECT * FROM t1; +SET DEBUG_SYNC = "now SIGNAL acol_continue"; + +SET DEBUG_SYNC = "now WAIT_FOR after_group_reached"; +--disable_query_log +--eval SELECT WSREP_LAST_SEEN_GTID() != '$last_seen_gtid_prev' AS wsrep_last_seen_gtid_do_not_match +--enable_query_log +SET DEBUG_SYNC = "now SIGNAL after_group_continue"; + +--connection node_1 +--reap + +# +# Scenario 2: Verify that two INSERTs from two different connections +# queue for commit. +# +--let $galera_connection_name = node_1a +--let $galera_server_number = 1 +--source include/galera_connect.inc +SET SESSION wsrep_sync_wait = 0; + +--connection ctrl +--let $last_seen_gtid_prev = `SELECT WSREP_LAST_SEEN_GTID()` + +--connection node_1 +SET DEBUG_SYNC = "wsrep_before_commit_order_leave SIGNAL bcol_reached_1 WAIT_FOR bcol_continue_1"; +SET DEBUG_SYNC = "wsrep_after_commit_order_leave SIGNAL acol_reached_1 WAIT_FOR acol_continue_1"; +SET DEBUG_SYNC = "after_group_after_commit SIGNAL agac_reached_1 WAIT_FOR agac_continue_1"; +--send INSERT INTO t1 VALUES (2); +--connection ctrl +SET DEBUG_SYNC = "now WAIT_FOR bcol_reached_1"; + +--disable_query_log +--eval SELECT WSREP_LAST_SEEN_GTID() = '$last_seen_gtid_prev' AS wsrep_last_seen_gtid_match +--enable_query_log + +--connection node_1a +SET DEBUG_SYNC = "wsrep_before_commit_order_leave SIGNAL bcol_reached_2 WAIT_FOR bcol_continue_2"; +SET DEBUG_SYNC = "wsrep_after_commit_order_leave SIGNAL acol_reached_2 WAIT_FOR acol_continue_2"; +SET DEBUG_SYNC = "after_group_after_commit SIGNAL agac_reached_2 WAIT_FOR agac_continue_2"; +--send INSERT INTO t1 VALUES (3); + +# Now INSERTs are queued, node_1 waiting after releasing commit order, +# node_1a waiting before releasing commit order. +--connection ctrl +SET DEBUG_SYNC = "now SIGNAL bcol_continue_1"; +SET DEBUG_SYNC = "now WAIT_FOR acol_reached_1"; +SET DEBUG_SYNC = "now WAIT_FOR bcol_reached_2"; + +--disable_query_log +--eval SELECT WSREP_LAST_SEEN_GTID() = '$last_seen_gtid_prev' AS wsrep_last_seen_gtid_match +--enable_query_log + +SET DEBUG_SYNC = "now SIGNAL bcol_continue_2"; +SET DEBUG_SYNC = "now WAIT_FOR acol_reached_2"; + +--disable_query_log +--eval SELECT WSREP_LAST_SEEN_GTID() = '$last_seen_gtid_prev' AS wsrep_last_seen_gtid_match +--enable_query_log + +# Last seen GTIDs are incremented one by one once after_group_after_commit +# is reached. +SET DEBUG_SYNC = "now SIGNAL acol_continue_1"; +SET DEBUG_SYNC = "now WAIT_FOR agac_reached_1"; + +--disable_query_log +--eval SELECT WSREP_LAST_SEEN_GTID() != '$last_seen_gtid_prev' AS wsrep_last_seen_gtid_no_match +--enable_query_log + +--let $last_seen_gtid_prev = `SELECT WSREP_LAST_SEEN_GTID()` +SET DEBUG_SYNC = "now SIGNAL acol_continue_2"; +SET DEBUG_SYNC = "now WAIT_FOR agac_reached_2"; +--disable_query_log +--eval SELECT WSREP_LAST_SEEN_GTID() != '$last_seen_gtid_prev' AS wsrep_last_seen_gtid_no_match +--enable_query_log + +SET DEBUG_SYNC = "now SIGNAL agac_continue_1"; + +--connection node_1 +--reap + +--connection ctrl +SET DEBUG_SYNC = "now SIGNAL agac_continue_2"; + +--connection node_1a +--reap + +--connection ctrl +SET DEBUG_SYNC = "RESET"; + +DROP TABLE t1; + +--disconnect ctrl +--disconnect node_1a +--source include/galera_end.inc diff --git a/mysql-test/suite/galera/t/MDEV-18832.cnf b/mysql-test/suite/galera/t/MDEV-18832.cnf new file mode 100644 index 00000000000..4c62448fe3d --- /dev/null +++ b/mysql-test/suite/galera/t/MDEV-18832.cnf @@ -0,0 +1,4 @@ +!include ../galera_2nodes.cnf + +[mysqld] +log-bin diff --git a/mysql-test/suite/galera/t/MDEV-18832.test b/mysql-test/suite/galera/t/MDEV-18832.test new file mode 100644 index 00000000000..e2f1b2afd45 --- /dev/null +++ b/mysql-test/suite/galera/t/MDEV-18832.test @@ -0,0 +1,15 @@ +--source include/galera_cluster.inc +--source include/have_innodb.inc + +CREATE SEQUENCE Seq1_1 START WITH 1 INCREMENT BY 1; +CREATE TABLE t1 (Id int(11) NOT NULL, PRIMARY KEY (Id)); +INSERT INTO t1 VALUES (NEXT VALUE FOR Seq1_1); +INSERT INTO t1 VALUES (NEXT VALUE FOR Seq1_1); +INSERT INTO t1 VALUES (NEXT VALUE FOR Seq1_1); +INSERT INTO t1 VALUES (NEXT VALUE FOR Seq1_1); +DROP SEQUENCE Seq1_1; +CREATE SEQUENCE Seq1_1 START WITH 1 INCREMENT BY 1; +--error ER_DUP_ENTRY +INSERT INTO t1 VALUES (NEXT VALUE FOR Seq1_1); +DROP SEQUENCE Seq1_1; +DROP TABLE t1; diff --git a/mysql-test/suite/galera/t/MDEV-20225.test b/mysql-test/suite/galera/t/MDEV-20225.test index 38efb0d6647..2124e499530 100644 --- a/mysql-test/suite/galera/t/MDEV-20225.test +++ b/mysql-test/suite/galera/t/MDEV-20225.test @@ -4,10 +4,8 @@ # --source include/galera_cluster.inc ---source include/have_innodb.inc --source include/have_debug.inc --source include/have_debug_sync.inc ---source suite/galera/include/galera_have_debug_sync.inc CREATE TABLE t1 (f1 INT NOT NULL PRIMARY KEY AUTO_INCREMENT) ENGINE=InnoDB; CREATE TABLE t2 (f1 INT NOT NULL PRIMARY KEY AUTO_INCREMENT, f2 INT) ENGINE=InnoDB; @@ -42,10 +40,9 @@ SET DEBUG_SYNC = 'now SIGNAL signal.mdev_20225_continue'; SET DEBUG_SYNC = 'RESET'; SET GLOBAL wsrep_slave_threads = 1; ---let $wait_condition = SELECT COUNT(*) = 1 FROM test.t1; ---source include/wait_condition.inc - # Trigger should now be dropped on node_2. +--let $wait_condition = SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_NAME like '%tr1' +--source include/wait_condition.inc SHOW TRIGGERS; DROP TABLE t1; diff --git a/mysql-test/suite/galera/t/MDEV-20616.test b/mysql-test/suite/galera/t/MDEV-20616.test new file mode 100644 index 00000000000..1cbc4aadbdd --- /dev/null +++ b/mysql-test/suite/galera/t/MDEV-20616.test @@ -0,0 +1,244 @@ +# +# Test different deadlock scenarios in innodb and make sure that +# wsrep patch does not handle them as BF aborts. +# + +--source include/galera_cluster.inc +--source include/have_debug.inc +--source include/have_debug_sync.inc + +############################################################################## +# test case to verify that natural deadlock of trigger SP execution is +# handled correctly +############################################################################## + +--echo +--echo Test phase 1 to make sure that natral deadlock in trigger SP execution is +--echo handled correctly +--echo +--let $aborts_old = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_bf_aborts'` + +CREATE TABLE t1(a INT); +CREATE TABLE t2(f1 INT, f2 INT, f3 INT); +--disable_query_log +let $run=1000; +while($run) +{ + INSERT INTO t2 VALUES (1, 2, 3); + dec $run; +} +--enable_query_log + +DELIMITER |; +CREATE PROCEDURE proc() +BEGIN + INSERT INTO t2 VALUES(100, 200, 300); + UPDATE t2 SET f3 = f3 + 100; +END| +DELIMITER ;| + +CREATE TRIGGER t1 BEFORE INSERT ON t1 FOR EACH ROW CALL proc(); + +--send INSERT INTO t1 VALUES(2); + +--connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1 +--send INSERT INTO t1 VALUES(1); + +--connection node_1 +--error 0,ER_LOCK_DEADLOCK +--reap + +--connection node_1a +--error 0,ER_LOCK_DEADLOCK +--reap + +--connection node_1 +--let $aborts_new = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_bf_aborts'` +--disable_query_log +--eval SELECT $aborts_new - $aborts_old AS wsrep__bf_aborts; +--enable_query_log +DROP TABLE t1; +DROP TABLE t2; +DROP PROCEDURE proc; + +############################################################################## +# +# test case to verify that BF abort for SP execution is handled correctly +# +############################################################################## + +--echo +--echo Test phase 2 to make sure that BF abort for SP execution is +--echo handled correctly +--echo +--connection node_1 +SET SESSION wsrep_retry_autocommit = 0; +SET SESSION wsrep_sync_wait = 0; +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY, f2 CHAR(1)); + +# Control connection for Galera sync point management +--connection node_1a + +SET SESSION wsrep_retry_autocommit = 0; +SET SESSION wsrep_sync_wait = 0; +--let $aborts_old = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_bf_aborts'` + +DELIMITER |; +CREATE PROCEDURE proc_update() +BEGIN + UPDATE t1 SET f2 = 'b'; +END| +DELIMITER ;| + +INSERT INTO t1 VALUES(1, 'a'); + +--connection node_1 +SET debug_sync='wsrep_before_certification SIGNAL ready WAIT_FOR cont'; +--send CALL proc_update + +--connection node_1a +SET debug_sync='now WAIT_FOR ready'; + +--connection node_2 +UPDATE t1 SET f2='c'; + +--connection node_1a +# wait for BF to happen +--let $wait_condition = SELECT VARIABLE_VALUE = $aborts_old + 1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_bf_aborts' +--source include/wait_condition.inc + +SET debug_sync='now SIGNAL cont'; + +--connection node_1 +--error ER_LOCK_DEADLOCK +--reap + +--connection node_1a +SET debug_sync='RESET'; + +DROP PROCEDURE proc_update; + + +############################################################################## +# +# test case to verify that natural deadlock does not cause BF abort +# +############################################################################## + +--connection node_1 +--echo +--echo Test phase 3 to make sure natural deadlock is not treated as BF abort +--echo +TRUNCATE t1; +INSERT INTO t1 VALUES (1, 'a'), (2, 'a'); + +--connection node_1a +--let $aborts_old = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_bf_aborts'` + +START TRANSACTION; +UPDATE t1 SET f2 = 'b' WHERE f1 = 1; + +--connection node_1 +START TRANSACTION; +UPDATE t1 SET f2 = 'c' WHERE f1 = 2; + +--connection node_1a +# this hangs for lock wait +--send UPDATE t1 SET f2 = 'b' WHERE f1 = 2 + +# +# classic deadlock happens here +# +--connection node_1 +--error 0, ER_LOCK_DEADLOCK +UPDATE t1 SET f2 = 'c' WHERE f1 = 1; + +--connection node_1a +--error 0, ER_LOCK_DEADLOCK +--reap +COMMIT; + +# +# either one of SP executions was aborted because of natural deadlock, or in worst case +# they were ordered seqeuntailly, and both succeeded. +# anyways, we just check here that no BF aborts happened +# +--let $aborts_new = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_bf_aborts'` +--disable_query_log +--eval SELECT $aborts_new - $aborts_old AS wsrep__bf_aborts; +--enable_query_log + +--connection node_1 +ROLLBACK; + +############################################################################## +# +# test case to verify that natural deadlock within SP exceution +# does not cause BF abort +# +############################################################################## + +--echo +--echo Test phase 4 to make sure natural deadlock inside SP execution +--echo is not treated as BF abort +--echo + +--connection node_1a +TRUNCATE t1; +INSERT INTO t1 VALUES (1, 'a'), (2, 'a'); + +--let $aborts_old = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_bf_aborts'` + +DELIMITER |; +CREATE PROCEDURE proc_update_1() +BEGIN + START TRANSACTION; + UPDATE t1 SET f2 = 'b' WHERE f1 = 1; + SELECT SLEEP(5); + UPDATE t1 SET f2 = 'b' WHERE f1 = 2; + COMMIT; +END| +DELIMITER ;| + +DELIMITER |; +CREATE PROCEDURE proc_update_2() +BEGIN + START TRANSACTION; + UPDATE t1 SET f2 = 'c' WHERE f1 = 2; + SELECT SLEEP(5); + UPDATE t1 SET f2 = 'c' WHERE f1 = 1; + COMMIT; +END| +DELIMITER ;| + +--connection node_1 +--send CALL proc_update_1 + +--connection node_1a +# +# calling proc_update_2 should cause a natural deadlock +# however, this test is not deterministic, and depends on the sleep() to +# cause expected ordering for update statement execution within SPs +# We therefore, allow both success and deadlock error for the result +# +--error 0, ER_LOCK_DEADLOCK +CALL proc_update_2; + +# +# either one of SP executions was aborted because of natural deadlock, or in worst case +# they were ordered seqeuntailly, and both succeeded. +# anyways, we just check here that no BF aborts happened +# +--let $aborts_new = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_bf_aborts'` +--disable_query_log +--eval SELECT $aborts_new - $aborts_old AS wsrep__bf_aborts; +--enable_query_log + + +--connection node_1 +--error 0, ER_LOCK_DEADLOCK +--reap + +DROP PROCEDURE proc_update_1; +DROP PROCEDURE proc_update_2; +DROP TABLE t1; diff --git a/mysql-test/suite/galera/t/MDEV-20793.test b/mysql-test/suite/galera/t/MDEV-20793.test new file mode 100644 index 00000000000..13ff3cbe77b --- /dev/null +++ b/mysql-test/suite/galera/t/MDEV-20793.test @@ -0,0 +1,78 @@ +# +# MDEV-20793 Assertion after certification failure during replay. +# +# The test outline: +# In order to produce certification failure three transactions +# are needed. One transaction is executing on node_1 and two others +# on node_2. The first transaction from node_2 BF aborts the transaction +# on node_1, but does not cause certification conflict. The second +# transaction from node_2 will cause conflict and the transaction on +# node_1 fails in certification during replay. +# + +--source include/galera_cluster.inc +--source include/have_debug.inc +--source include/have_debug_sync.inc +--source include/galera_have_debug_sync.inc + +CREATE TABLE t1 (f1 INT PRIMARY KEY, f2 INT); +INSERT INTO t1 VALUES (1, 0), (5, 0); + +--let galera_connection_name = node_1_ctrl +--let galera_server_number = 1 +--source include/galera_connect.inc +--connection node_1_ctrl +SET SESSION wsrep_sync_wait = 0; +SET GLOBAL wsrep_slave_threads = 2; + +--connection node_1 +# Start transaction which takes gap lock 1 - 5 +SET SESSION wsrep_retry_autocommit = 0; +START TRANSACTION; +UPDATE t1 SET f2 = 1; +SET SESSION debug_sync = "wsrep_before_replay SIGNAL reached WAIT_FOR continue"; + +--connection node_1_ctrl +--let $galera_sync_point = apply_monitor_slave_enter_sync +--source include/galera_set_sync_point.inc + +--connection node_2 +# Insert into gap from other node. This generates BF abort but does not +# conflict with update. +INSERT INTO t1 VALUES (2, 2); + +--connection node_1_ctrl +--source include/galera_wait_sync_point.inc +--source include/galera_clear_sync_point.inc +--let $galera_sync_point = local_monitor_slave_enter_sync +--source include/galera_set_sync_point.inc + +# Make an update which will conflict with update on node_1 +--connection node_2 +UPDATE t1 SET f2 = 2 WHERE f1 = 5; + +--connection node_1_ctrl +--let $galera_sync_point = apply_monitor_slave_enter_sync local_monitor_slave_enter_sync +--source include/galera_wait_sync_point.inc + +--connection node_1 +--send COMMIT + +--connection node_1_ctrl +--let $galera_sync_point = apply_monitor_slave_enter_sync +--source include/galera_signal_sync_point.inc +SET SESSION debug_sync = "now WAIT_FOR reached"; + +--let $galera_sync_point = local_monitor_slave_enter_sync +--source include/galera_signal_sync_point.inc +--source include/galera_clear_sync_point.inc +SET SESSION debug_sync = "now SIGNAL continue"; + +--connection node_1 +--error ER_LOCK_DEADLOCK +--reap + +SET debug_sync = "RESET"; + +DROP TABLE t1; +SET GLOBAL wsrep_slave_threads = 1; diff --git a/mysql-test/suite/galera/t/MDEV-22021.test b/mysql-test/suite/galera/t/MDEV-22021.test index 1f0433117c6..5e189faf5ea 100644 --- a/mysql-test/suite/galera/t/MDEV-22021.test +++ b/mysql-test/suite/galera/t/MDEV-22021.test @@ -1,5 +1,5 @@ # -# SAVEPOINT ROLLBACK can introduce incosistency in cluster. +# SAVEPOINT ROLLBACK can introduce inconsistency in cluster. # --source include/galera_cluster.inc diff --git a/mysql-test/suite/galera/t/MDEV-22051.test b/mysql-test/suite/galera/t/MDEV-22051.test new file mode 100644 index 00000000000..b7332c47d69 --- /dev/null +++ b/mysql-test/suite/galera/t/MDEV-22051.test @@ -0,0 +1,33 @@ +# +# If FTWRL is issued on node, DDL statement should report error back to +# user. +# + +--source include/galera_cluster.inc +--source include/have_innodb.inc + +FLUSH TABLES WITH READ LOCK; + +--error ER_UNKNOWN_COM_ERROR +CREATE TABLE t1 (a INT) ENGINE=InnoDB; + +SET wsrep_OSU_method=RSU; +--error ER_UNKNOWN_COM_ERROR +CREATE TABLE t1 (a INT) ENGINE=InnoDB; +SET wsrep_OSU_method=TOI; + +--connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1 +--error ER_UNKNOWN_COM_ERROR +CREATE TABLE t1 (a INT) ENGINE=InnoDB; + +--connection node_1 +UNLOCK TABLES; + +CREATE TABLE t1 (a INT) ENGINE=InnoDB; + +FLUSH TABLES WITH READ LOCK; +--error ER_CANT_UPDATE_WITH_READLOCK +INSERT INTO t1 VALUES (1); +UNLOCK TABLES; + +DROP TABLE t1; diff --git a/mysql-test/suite/galera/t/MDEV-22055.test b/mysql-test/suite/galera/t/MDEV-22055.test new file mode 100644 index 00000000000..ae29c456bf0 --- /dev/null +++ b/mysql-test/suite/galera/t/MDEV-22055.test @@ -0,0 +1,19 @@ +--source include/galera_cluster.inc + +ROLLBACK AND CHAIN; + +CREATE TABLE t1(a int not null primary key) engine=innodb; +INSERT INTO t1 values (1); + +BEGIN; +INSERT INTO t1 values (2); +ROLLBACK AND CHAIN; + +SELECT * FROM t1; + +--connection node_2 +SET SESSION wsrep_sync_wait=15; +SELECT * FROM t1; + +--connection node_1 +DROP TABLE t1; diff --git a/mysql-test/suite/galera/t/MDEV-22458.test b/mysql-test/suite/galera/t/MDEV-22458.test new file mode 100644 index 00000000000..8f9ba1bb107 --- /dev/null +++ b/mysql-test/suite/galera/t/MDEV-22458.test @@ -0,0 +1,21 @@ +# MDEV-22458 +# +# When running SHOW command, thread lock `LOCK_thd_data` should not be taken. +# Lock will be taken only when we are killing thread +# + +--source include/galera_cluster.inc +CREATE TABLE t1 (a INT); + +--connect (con1,localhost,root,,test) +--let $con1 = `SELECT CONNECTION_ID()` + +INSERT INTO t1 VALUES (1),(2),(3),(4); + +--error ER_TARGET_NOT_EXPLAINABLE +EVALP SHOW EXPLAIN FOR $con1; + +--connection con1 +INSERT INTO t1 VALUES (5),(6),(7),(8); + +DROP TABLE t1; diff --git a/mysql-test/suite/galera/t/MDEV-6860.cnf b/mysql-test/suite/galera/t/MDEV-6860.cnf new file mode 100644 index 00000000000..d8defd343ad --- /dev/null +++ b/mysql-test/suite/galera/t/MDEV-6860.cnf @@ -0,0 +1,7 @@ +!include ../galera_2nodes_as_slave.cnf + +[mysqld.2] +slave-parallel-threads=2 +slave-parallel-mode=optimistic +[mysqld.1] +wsrep-slave-threads=10 diff --git a/mysql-test/suite/galera/t/MDEV-6860.test b/mysql-test/suite/galera/t/MDEV-6860.test new file mode 100644 index 00000000000..3a8c98f317f --- /dev/null +++ b/mysql-test/suite/galera/t/MDEV-6860.test @@ -0,0 +1,42 @@ +--source include/have_innodb.inc + +--source include/galera_cluster.inc + +--connection node_2 +--disable_query_log +--eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='root', MASTER_PORT=$NODE_MYPORT_3, MASTER_USE_GTID=slave_pos; +--enable_query_log +START SLAVE; + +--connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3 +--connection node_3 +--let $inserts=1000 +CREATE TABLE t1 (f1 int, f2 int) ENGINE=InnoDB; + +--let $count=0 +--disable_query_log +while($count < $inserts) +{ + --eval insert into t1 values ($count,1) + --inc $count +} +--enable_query_log + +--connection node_2 + +--let $wait_condition = SELECT COUNT(*) = $inserts FROM t1 +--source include/wait_condition.inc + +--connection node_1 +--let $wait_condition = SELECT COUNT(*) = $inserts FROM t1 +--source include/wait_condition.inc + +--connection node_3 +DROP TABLE t1; + +--connection node_2 +--let $wait_condition = SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'test' +--source include/wait_condition.inc + +STOP SLAVE; +RESET SLAVE ALL; diff --git a/mysql-test/suite/galera/t/MW-284.test b/mysql-test/suite/galera/t/MW-284.test index 568826db5b0..99fe305d859 100644 --- a/mysql-test/suite/galera/t/MW-284.test +++ b/mysql-test/suite/galera/t/MW-284.test @@ -66,5 +66,3 @@ STOP SLAVE; RESET SLAVE ALL; CALL mtr.add_suppression('failed registering on master'); - - diff --git a/mysql-test/suite/galera/t/MW-286.test b/mysql-test/suite/galera/t/MW-286.test index 426b4493bb7..9c849861001 100644 --- a/mysql-test/suite/galera/t/MW-286.test +++ b/mysql-test/suite/galera/t/MW-286.test @@ -4,31 +4,55 @@ --source include/galera_cluster.inc --source include/have_innodb.inc ---source include/big_test.inc - +--source include/have_debug_sync.inc + --connection node_1 -CREATE TABLE ten (f1 INTEGER) Engine=InnoDB; -INSERT INTO ten VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); CREATE TABLE t1 (f1 INTEGER) Engine=InnoDB; - # Insert some values before the ALTER -INSERT INTO t1 (f1) SELECT 000000 + (10000 * a1.f1) + (1000 * a2.f1) + (100 * a3.f1) + (10 * a4.f1) + a5.f1 FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4, ten AS a5; - -# Insert more values while the ALTER is running ---send INSERT INTO t1 (f1) SELECT 100000 + (10000 * a1.f1) + (1000 * a2.f1) + (100 * a3.f1) + (10 * a4.f1) + a5.f1 FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4, ten AS a5; +INSERT INTO t1 (f1) VALUES (1), (2), (3); +# +# run ALTER with no wsrep replication +# --connection node_2 SET GLOBAL wsrep_desync = TRUE; SET wsrep_on = FALSE; ---error 0,ER_QUERY_INTERRUPTED -ALTER TABLE t1 ADD PRIMARY KEY (f1); +# +# stop ALTER processing after it has acquired exclusive MDL lock +# +SET SESSION debug_sync = "alter_table_inplace_after_lock_upgrade SIGNAL mdl_locked WAIT_FOR mdl_continue"; + +--send ALTER TABLE t1 ADD PRIMARY KEY (f1); + +--connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2 +--connection node_2a +SET SESSION debug_sync = "now WAIT_FOR mdl_locked"; + +# +# replicate conflicting insert from node_1 +# +--connection node_1 +INSERT INTO t1(f1) VALUES (11); + +# +# let parked ALTER processing to continue after the conflict +# +--connection node_2a +SET debug_sync = "now SIGNAL mdl_continue"; +SET debug_sync='RESET'; + +# +# ALTER should have been aborted with query interupted error code +# +--connection node_2 +--error ER_QUERY_INTERRUPTED +--reap SET wsrep_on = TRUE; SET GLOBAL wsrep_desync = FALSE; --connection node_1 -reap; + DROP TABLE t1; -DROP TABLE ten; diff --git a/mysql-test/suite/galera/t/MW-292.test b/mysql-test/suite/galera/t/MW-292.test index ecb1273759e..9580d53d85c 100644 --- a/mysql-test/suite/galera/t/MW-292.test +++ b/mysql-test/suite/galera/t/MW-292.test @@ -9,7 +9,7 @@ --source include/galera_cluster.inc --source include/have_innodb.inc --source include/have_debug_sync.inc ---source suite/galera/include/galera_have_debug_sync.inc +--source include/galera_have_debug_sync.inc --let $wsrep_local_replays_old = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_replays'` @@ -25,37 +25,51 @@ START TRANSACTION; UPDATE t1 SET f2 = 'b' WHERE f1 = 1; SELECT * FROM t1 WHERE f1 = 2 FOR UPDATE; -# Block the commit +# Block the applier on node #1 and issue a conflicting update on node #2 --connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1 ---let $galera_sync_point = commit_monitor_enter_sync +SET SESSION wsrep_sync_wait=0; +--let $galera_sync_point = apply_monitor_slave_enter_sync --source include/galera_set_sync_point.inc ---connection node_1 ---send COMMIT; +--connection node_2 +UPDATE t1 SET f2 = 'c' WHERE f1 = 2; -# Wait until commit is blocked --connection node_1a -SET SESSION wsrep_sync_wait = 0; --source include/galera_wait_sync_point.inc +--source include/galera_clear_sync_point.inc -# Issue a conflicting update on node #2 ---connection node_2 -UPDATE t1 SET f2 = 'c' WHERE f1 = 2; +# Block the commit, send the COMMIT and wait until it gets blocked -# Wait for both transactions to be blocked ---connection node_1a ---let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE STATE LIKE 'Update_rows_log_event::find_row%'; ---source include/wait_condition.inc +--let $galera_sync_point = commit_monitor_master_enter_sync +--source include/galera_set_sync_point.inc ---let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE STATE = 'init' AND INFO = 'COMMIT'; ---source include/wait_condition.inc +--connection node_1 +--send COMMIT -# Unblock the commit --connection node_1a + +--let $galera_sync_point = apply_monitor_slave_enter_sync commit_monitor_master_enter_sync +--source include/galera_wait_sync_point.inc --source include/galera_clear_sync_point.inc + +# Let the conflicting UPDATE proceed and wait until it hits abort_trx_end. +# The victim transaction still sits in commit_monitor_master_sync_point. + +--let $galera_sync_point = abort_trx_end +--source include/galera_set_sync_point.inc +--let $galera_sync_point = apply_monitor_slave_enter_sync +--source include/galera_signal_sync_point.inc +--let $galera_sync_point = abort_trx_end commit_monitor_master_enter_sync +--source include/galera_wait_sync_point.inc + +# Let the transactions proceed +--source include/galera_clear_sync_point.inc +--let $galera_sync_point = abort_trx_end +--source include/galera_signal_sync_point.inc +--let $galera_sync_point = commit_monitor_master_enter_sync --source include/galera_signal_sync_point.inc -# Commit succeeds via replay +# Commit succeeds --connection node_1 --reap diff --git a/mysql-test/suite/galera/t/MW-328A.cnf b/mysql-test/suite/galera/t/MW-328A.cnf index a10ea88bdf2..e68f891792c 100644 --- a/mysql-test/suite/galera/t/MW-328A.cnf +++ b/mysql-test/suite/galera/t/MW-328A.cnf @@ -1,7 +1,7 @@ !include ../galera_2nodes.cnf [mysqld.1] -wsrep-debug=ON +wsrep-debug=SERVER [mysqld.2] -wsrep-debug=ON +wsrep-debug=SERVER diff --git a/mysql-test/suite/galera/t/MW-328A.test b/mysql-test/suite/galera/t/MW-328A.test index a547823ced0..2435a9e2c2e 100644 --- a/mysql-test/suite/galera/t/MW-328A.test +++ b/mysql-test/suite/galera/t/MW-328A.test @@ -16,7 +16,11 @@ --source include/force_restart.inc --source suite/galera/t/MW-328-header.inc +--connection node_1 +call mtr.add_suppression("WSREP: Wait for gtid returned error 3 while waiting for prior transactions to commit before setting position"); + --connection node_2 +call mtr.add_suppression("WSREP: Wait for gtid returned error 3 while waiting for prior transactions to commit before setting position"); --let $count = 100 --let $successes = 0 --let $deadlocks = 0 diff --git a/mysql-test/suite/galera/t/MW-328B.cnf b/mysql-test/suite/galera/t/MW-328B.cnf index a10ea88bdf2..e68f891792c 100644 --- a/mysql-test/suite/galera/t/MW-328B.cnf +++ b/mysql-test/suite/galera/t/MW-328B.cnf @@ -1,7 +1,7 @@ !include ../galera_2nodes.cnf [mysqld.1] -wsrep-debug=ON +wsrep-debug=SERVER [mysqld.2] -wsrep-debug=ON +wsrep-debug=SERVER diff --git a/mysql-test/suite/galera/t/MW-328C.cnf b/mysql-test/suite/galera/t/MW-328C.cnf new file mode 100644 index 00000000000..e68f891792c --- /dev/null +++ b/mysql-test/suite/galera/t/MW-328C.cnf @@ -0,0 +1,7 @@ +!include ../galera_2nodes.cnf + +[mysqld.1] +wsrep-debug=SERVER + +[mysqld.2] +wsrep-debug=SERVER diff --git a/mysql-test/suite/galera/t/MW-328C.test b/mysql-test/suite/galera/t/MW-328C.test new file mode 100644 index 00000000000..7241dfbdbca --- /dev/null +++ b/mysql-test/suite/galera/t/MW-328C.test @@ -0,0 +1,35 @@ +# +# MW-328 Fix unnecessary/silent BF aborts +# + +# +# Make sure that a high value of wsrep_retry_autocommit +# masks all deadlock errors +# + +--source include/galera_cluster.inc +--source suite/galera/t/MW-328-header.inc + +--connection node_2 +--let $count = 100 + +SET SESSION wsrep_retry_autocommit = 10000; + +--disable_query_log + +while ($count) +{ + --error 0 + INSERT IGNORE INTO t2 SELECT f2 FROM t1; + + --disable_result_log + --error 0 + SELECT 1 FROM DUAL; + --enable_result_log + + --dec $count +} + +--enable_query_log + +--source suite/galera/t/MW-328-footer.inc diff --git a/mysql-test/suite/galera/t/MW-328D.cnf b/mysql-test/suite/galera/t/MW-328D.cnf new file mode 100644 index 00000000000..e68f891792c --- /dev/null +++ b/mysql-test/suite/galera/t/MW-328D.cnf @@ -0,0 +1,7 @@ +!include ../galera_2nodes.cnf + +[mysqld.1] +wsrep-debug=SERVER + +[mysqld.2] +wsrep-debug=SERVER diff --git a/mysql-test/suite/galera/t/MW-328E.cnf b/mysql-test/suite/galera/t/MW-328E.cnf new file mode 100644 index 00000000000..e68f891792c --- /dev/null +++ b/mysql-test/suite/galera/t/MW-328E.cnf @@ -0,0 +1,7 @@ +!include ../galera_2nodes.cnf + +[mysqld.1] +wsrep-debug=SERVER + +[mysqld.2] +wsrep-debug=SERVER diff --git a/mysql-test/suite/galera/t/MW-329.test b/mysql-test/suite/galera/t/MW-329.test index dc2693ab859..904fc2f95d8 100644 --- a/mysql-test/suite/galera/t/MW-329.test +++ b/mysql-test/suite/galera/t/MW-329.test @@ -11,11 +11,6 @@ CREATE TABLE t1 (f1 INTEGER, f2 CHAR(20) DEFAULT 'abc') ENGINE=InnoDB; # We start with a populated table INSERT INTO t1 (f1) VALUES (1),(65535); -# Clear the wsrep_local_replays counter - -FLUSH STATUS; -SELECT VARIABLE_VALUE = 0 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_replays'; - # # Run concurrent INSERTs # @@ -45,8 +40,9 @@ DELIMITER ;| # --connection node_2 -CALL mtr.add_suppression("WSREP: Failed to report last committed .*"); ---let $count = 200 +--let $count = 10 +--let $wsrep_local_replays_old = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_replays'` + while ($count) { --let $signature = `SELECT LEFT(MD5(RAND()), 10)` @@ -60,14 +56,28 @@ while ($count) --die ROW_COUNT() = 0 } } - --dec $count + + # + # Ensure at least one replay happens + # + + --let $wsrep_replays = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_replays'` + --disable_query_log + if (`SELECT $wsrep_replays - $wsrep_local_replays_old > 0`) { + --dec $count + } + --enable_query_log } # # Confirm that some transaction replays occurred # -SELECT VARIABLE_VALUE > 0 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_replays'; +--let $wsrep_local_replays_new = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_replays'` +--disable_query_log +--eval SELECT $wsrep_local_replays_new - $wsrep_local_replays_old > 0 AS wsrep_local_replays; +--enable_query_log + # # Terminate the stored procedure diff --git a/mysql-test/suite/galera/t/MW-336.cnf b/mysql-test/suite/galera/t/MW-336.cnf index 4f23644ca50..e68f891792c 100644 --- a/mysql-test/suite/galera/t/MW-336.cnf +++ b/mysql-test/suite/galera/t/MW-336.cnf @@ -1,8 +1,7 @@ !include ../galera_2nodes.cnf [mysqld.1] -wsrep-debug=ON +wsrep-debug=SERVER [mysqld.2] -wsrep-debug=ON - +wsrep-debug=SERVER diff --git a/mysql-test/suite/galera/t/MW-360-master.opt b/mysql-test/suite/galera/t/MW-360-master.opt new file mode 100644 index 00000000000..e51c49c3808 --- /dev/null +++ b/mysql-test/suite/galera/t/MW-360-master.opt @@ -0,0 +1,2 @@ +--gtid-domain-id=1 --log-bin --log-slave-updates + diff --git a/mysql-test/suite/galera/t/MW-369.inc b/mysql-test/suite/galera/t/MW-369.inc index 5fd9ef150ae..71df979d6ba 100644 --- a/mysql-test/suite/galera/t/MW-369.inc +++ b/mysql-test/suite/galera/t/MW-369.inc @@ -24,7 +24,6 @@ --connection node_1 SET AUTOCOMMIT=ON; START TRANSACTION; - --eval $mw_369_parent_query # @@ -51,7 +50,7 @@ SET SESSION wsrep_sync_wait = 0; --source include/galera_wait_sync_point.inc --source include/galera_clear_sync_point.inc ---let $galera_sync_point = local_monitor_enter_sync +--let $galera_sync_point = local_monitor_master_enter_sync --source include/galera_set_sync_point.inc --connection node_1 @@ -61,7 +60,7 @@ SET SESSION wsrep_sync_wait = 0; # Wait until both sync points have been reached # --connection node_1a ---let $galera_sync_point = apply_monitor_slave_enter_sync local_monitor_enter_sync +--let $galera_sync_point = apply_monitor_slave_enter_sync local_monitor_master_enter_sync --source include/galera_wait_sync_point.inc # @@ -70,6 +69,6 @@ SET SESSION wsrep_sync_wait = 0; --let $galera_sync_point = apply_monitor_slave_enter_sync --source include/galera_signal_sync_point.inc ---let $galera_sync_point = local_monitor_enter_sync +--let $galera_sync_point = local_monitor_master_enter_sync --source include/galera_signal_sync_point.inc --source include/galera_clear_sync_point.inc diff --git a/mysql-test/suite/galera/t/MW-369.test b/mysql-test/suite/galera/t/MW-369.test index 720d6daf518..c8f8c974019 100644 --- a/mysql-test/suite/galera/t/MW-369.test +++ b/mysql-test/suite/galera/t/MW-369.test @@ -24,7 +24,7 @@ --source include/galera_cluster.inc --source include/have_innodb.inc --source include/have_debug_sync.inc ---source suite/galera/include/galera_have_debug_sync.inc +--source include/galera_have_debug_sync.inc CREATE TABLE p (f1 INTEGER PRIMARY KEY, f2 INTEGER) ENGINE=INNODB; CREATE TABLE c (f1 INTEGER PRIMARY KEY, p_id INTEGER, @@ -244,3 +244,101 @@ SELECT * FROM c; DROP TABLE c; DROP TABLE p; +--echo # +--echo # Start of 10.4 tests +--echo # +# +# Test F Outline: +# =============== +# +# Test two concurrent INSERTs on the child table. +# +# The pf table will originally have row (1) +# The cf table will originally be empty +# +# A new row (10, 1) pointing to parent row (1) is inserted from +# connection node_2. A transaction which tries to INSERT another child +# row (20, 1), pointing to the same parent, is run from connection node_1. +# +# Expected Outcome: +# ================= +# Both INSERTs should succeed since they don't modify the common parent +# key. +# +# At the end of the test: +# parent table should have row (1) +# child table should have rows (10, 1), (20, 1) + +--connection node_1 + +CREATE TABLE pf (f1 INTEGER PRIMARY KEY) ENGINE=INNODB; +CREATE TABLE cf ( + f1 INTEGER PRIMARY KEY, + p_id INTEGER, + CONSTRAINT fk_1 FOREIGN KEY (p_id) REFERENCES pf (f1) +); + +INSERT INTO pf VALUES (1); + +# This is run on node1: +--let $mw_369_parent_query = INSERT INTO cf (f1, p_id) VALUES (10, 1) +# This is run on node2: +--let $mw_369_child_query = INSERT INTO cf (f1, p_id) VALUES (20, 1) +--source MW-369.inc + +--connection node_1 +--reap + +--connection node_2 +SELECT * FROM pf; +SELECT * FROM cf; + +DROP TABLE cf; +DROP TABLE pf; + +# +# Test G Outline: +# =============== +# +# This test is similar to test B where a existing +# child table row is updated concurrently from another node +# with a transaction which updates the parent table, except +# that here the child table row is inserted, not updated. +# +# The pg table will originally have rows (1, 0), (2, 0). +# The cg table will originally be empty +# +# Expected outcome: +# ================ +# +# Both UPDATE and INSERT should succeed since they are done to separate tables +# and UPDATE to parent row does not touch the foreign key referenced by the +# child row INSERT. The parent table shall contain rows (1, 1), (2, 0). +# The child table shall contain row (1, 1, 0) which points to parent table +# row (1, 0). +# + +--connection node_1 +CREATE TABLE pg (f1 INTEGER PRIMARY KEY, f2 INTEGER) ENGINE=INNODB; +CREATE TABLE cg (f1 INTEGER PRIMARY KEY, p_id INTEGER, + f2 INTEGER, + CONSTRAINT fk_1 FOREIGN KEY (p_id) REFERENCES pg (f1)) ; + +INSERT INTO pg VALUES (1, 0); +INSERT INTO pg VALUES (2, 0); + +--let mw_369_parent_query = UPDATE pg SET f2 = 1 WHERE f1 = 1 +--let $mw_369_child_query = INSERT INTO cg VALUES (1, 1, 0) +--source MW-369.inc + +# Commit succeeds +--connection node_1 +--reap + +--connection node_2 +SELECT * FROM pg; +SELECT * FROM cg; + +DROP TABLE cg; +DROP TABLE pg; + diff --git a/mysql-test/suite/galera/t/MW-402.test b/mysql-test/suite/galera/t/MW-402.test index 36b691c6295..4b83e25dc50 100644 --- a/mysql-test/suite/galera/t/MW-402.test +++ b/mysql-test/suite/galera/t/MW-402.test @@ -1,6 +1,6 @@ --source include/galera_cluster.inc --source include/have_innodb.inc ---source suite/galera/include/galera_have_debug_sync.inc +--source include/galera_have_debug_sync.inc # # we must open connection node_1a here, MW-369.inc will use it later @@ -135,7 +135,6 @@ SELECT * FROM c; DROP TABLE c; DROP TABLE p; - # # CASCADE DELETE tests with two parent tables # Here we cause cascaded operation on child table through @@ -151,10 +150,11 @@ DROP TABLE p; CREATE TABLE p1 (f1 INTEGER PRIMARY KEY, f2 INTEGER) ENGINE=INNODB; CREATE TABLE p2 (f1 INTEGER PRIMARY KEY, f2 INTEGER) ENGINE=INNODB; -CREATE TABLE c (f1 INTEGER PRIMARY KEY, p1_id INTEGER, p2_id INTEGER, f2 INTEGER, - CONSTRAINT fk_1 FOREIGN KEY (p1_id) REFERENCES p1 (f1) ON DELETE CASCADE, +CREATE TABLE c (f1 INTEGER PRIMARY KEY, p1_id INTEGER, p2_id INTEGER, + f2 INTEGER, + CONSTRAINT fk_1 FOREIGN KEY (p1_id) REFERENCES p1 (f1) + ON DELETE CASCADE, CONSTRAINT fk_2 FOREIGN KEY (p2_id) REFERENCES p2 (f1)); - INSERT INTO p1 VALUES (1, 0); INSERT INTO p2 VALUES (1, 0); @@ -171,7 +171,51 @@ INSERT INTO c VALUES (1, 1, 1, 0); --connection node_1 --reap -# same as previous, but statements in different order +--connection node_2 +SELECT * FROM p1; +SELECT * FROM p2; +SELECT * FROM c; + +DROP TABLE c; +DROP TABLE p1; +DROP TABLE p2; + +# +# CASCADE DELETE tests with two parent tables +# Here we cause cascaded operation on child table through +# one parent table and issue other delete operation through the +# other parent table. The cascade progresses to same child table row where +# we should see the conflict to happen +# +# As a result, the update on p2 should fail +# +--connection node_1 + +CREATE TABLE p1 (f1 INTEGER PRIMARY KEY, f2 INTEGER) ENGINE=INNODB; +CREATE TABLE p2 (f1 INTEGER PRIMARY KEY, f2 INTEGER) ENGINE=INNODB; +CREATE TABLE c (f1 INTEGER PRIMARY KEY, p1_id INTEGER, p2_id INTEGER, + f2 INTEGER, + CONSTRAINT fk_1 FOREIGN KEY (p1_id) REFERENCES p1 (f1) + ON DELETE CASCADE, + CONSTRAINT fk_2 FOREIGN KEY (p2_id) REFERENCES p2 (f1) + ON DELETE CASCADE); + +INSERT INTO p1 VALUES (1, 0); +INSERT INTO p2 VALUES (1, 0); + +INSERT INTO c VALUES (1, 1, 1, 0); + +--let $mw_369_parent_query = DELETE FROM p2 WHERE f1=1 +--let $mw_369_child_query = DELETE FROM p1 WHERE f1=1 + +--connection node_1a +--source MW-369.inc + +# Commit succeeds +--connection node_1 +--error ER_LOCK_DEADLOCK +--reap + --connection node_2 SELECT * FROM p1; SELECT * FROM p2; diff --git a/mysql-test/suite/galera/t/MW-86-wait1.test b/mysql-test/suite/galera/t/MW-86-wait1.test index c5b78be64e5..7ebd3ba95a0 100644 --- a/mysql-test/suite/galera/t/MW-86-wait1.test +++ b/mysql-test/suite/galera/t/MW-86-wait1.test @@ -9,12 +9,15 @@ --source include/have_debug_sync.inc --source include/galera_have_debug_sync.inc +SET @orig_debug=@@debug_dbug; + --connection node_2 # Make sure no signals have been leftover from previous tests to surprise us. SELECT @@debug_sync; +set debug_sync='RESET'; SET SESSION wsrep_sync_wait = 1; -SET GLOBAL debug_dbug = "d,sync.wsrep_apply_cb"; +SET GLOBAL debug_dbug = "+d,sync.wsrep_apply_cb"; --connection node_1 CREATE TABLE t_wait1 (f1 INTEGER) ENGINE=InnoDB; @@ -92,16 +95,15 @@ SHOW WARNINGS; --enable_result_log # Unblock the background INSERT and remove the sync point. -SET GLOBAL debug_dbug = ""; -SET SESSION debug_sync = "now SIGNAL signal.wsrep_apply_cb"; +SET GLOBAL debug_dbug = @orig_debug; +SET SESSION debug_sync = "now SIGNAL signal.wsrep_apply_cb"; +SET debug_sync='RESET'; 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 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.test b/mysql-test/suite/galera/t/MW-86-wait8.test index a648924b9d8..1b3f355eb25 100644 --- a/mysql-test/suite/galera/t/MW-86-wait8.test +++ b/mysql-test/suite/galera/t/MW-86-wait8.test @@ -7,12 +7,14 @@ --source include/have_debug_sync.inc --source include/galera_have_debug_sync.inc +SET @orig_debug=@@debug_dbug; + --connection node_2 # Make sure no signals have been leftover from previous tests to surprise us. SELECT @@debug_sync; SET SESSION wsrep_sync_wait = 8; -SET GLOBAL debug_dbug = "d,sync.wsrep_apply_cb"; +SET GLOBAL debug_dbug = "+d,sync.wsrep_apply_cb"; --connection node_1 CREATE TABLE t_wait8 (f1 INTEGER) ENGINE=InnoDB; @@ -114,8 +116,10 @@ SHOW WARNINGS; --enable_query_log # Unblock the background INSERT and remove the sync point. -SET GLOBAL debug_dbug = ""; +SET GLOBAL debug_dbug = @orig_debug; + SET DEBUG_SYNC = "now SIGNAL signal.wsrep_apply_cb"; +SET debug_sync='RESET'; SET SESSION wsrep_sync_wait = default; @@ -123,7 +127,5 @@ SET SESSION wsrep_sync_wait = default; # from the test. DROP TABLE t_wait8; -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/galera#500.test b/mysql-test/suite/galera/t/galera#500.test index 3c8490b6907..60f303b7103 100644 --- a/mysql-test/suite/galera/t/galera#500.test +++ b/mysql-test/suite/galera/t/galera#500.test @@ -8,6 +8,10 @@ --source include/galera_cluster.inc --source include/galera_have_debug_sync.inc +--let $node_1=node_1 +--let $node_2=node_2 +--source suite/galera/include/auto_increment_offset_save.inc + # Force node_2 gcomm background thread to terminate via exception. --connection node_2 --let $wsrep_cluster_address = `SELECT @@wsrep_cluster_address` @@ -36,3 +40,5 @@ SET SESSION wsrep_on=0; --connection node_2 CALL mtr.add_suppression("WSREP: exception from gcomm, backend must be restarted: Gcomm backend termination was requested by setting gmcast.isolate=2."); + +--source suite/galera/include/auto_increment_offset_restore.inc diff --git a/mysql-test/suite/galera/t/galera_applier_ftwrl_table_alter-master.opt b/mysql-test/suite/galera/t/galera_applier_ftwrl_table_alter-master.opt new file mode 100644 index 00000000000..6f688b39fd5 --- /dev/null +++ b/mysql-test/suite/galera/t/galera_applier_ftwrl_table_alter-master.opt @@ -0,0 +1 @@ +--lock_wait_timeout=5 --innodb_lock_wait_timeout=5 --wait_timeout=60 diff --git a/mysql-test/suite/galera/t/galera_as_master.test b/mysql-test/suite/galera/t/galera_as_master.test index 49f3c993256..1c439ffff63 100644 --- a/mysql-test/suite/galera/t/galera_as_master.test +++ b/mysql-test/suite/galera/t/galera_as_master.test @@ -64,4 +64,6 @@ RESET SLAVE ALL; CALL mtr.add_suppression('You need to use --log-bin to make --binlog-format work'); --connection node_1 +set global wsrep_on=OFF; RESET MASTER; +set global wsrep_on=ON; diff --git a/mysql-test/suite/galera/t/galera_as_slave.test b/mysql-test/suite/galera/t/galera_as_slave.test index 849b75eadd1..da92437b118 100644 --- a/mysql-test/suite/galera/t/galera_as_slave.test +++ b/mysql-test/suite/galera/t/galera_as_slave.test @@ -5,18 +5,19 @@ # --source include/have_innodb.inc - -# As node #1 is not a Galera node, we connect to node #2 in order to run include/galera_cluster.inc ---connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2 --source include/galera_cluster.inc +# As node #3 is not a Galera node, and galera_cluster.inc does not open connetion to it +# we open the node_3 connection here +--connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3 + --connection node_2 --disable_query_log ---eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='root', MASTER_PORT=$NODE_MYPORT_1; +--eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='root', MASTER_PORT=$NODE_MYPORT_3; --enable_query_log START SLAVE; ---connection node_1 +--connection node_3 CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; INSERT INTO t1 VALUES(1); @@ -29,14 +30,14 @@ INSERT INTO t1 VALUES(1); INSERT INTO t1 VALUES (2); ---connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3 +--connection node_1 SELECT COUNT(*) = 2 FROM t1; INSERT INTO t1 VALUES (3); --connection node_2 SELECT COUNT(*) = 3 FROM t1; ---connection node_1 +--connection node_3 DROP TABLE t1; --connection node_2 @@ -46,5 +47,5 @@ DROP TABLE t1; STOP SLAVE; RESET SLAVE ALL; ---connection node_1 +--connection node_3 RESET MASTER; diff --git a/mysql-test/suite/galera/t/galera_as_slave_autoinc.test b/mysql-test/suite/galera/t/galera_as_slave_autoinc.test index 59483d0591c..e0c8bf29682 100644 --- a/mysql-test/suite/galera/t/galera_as_slave_autoinc.test +++ b/mysql-test/suite/galera/t/galera_as_slave_autoinc.test @@ -5,18 +5,19 @@ # --source include/have_innodb.inc - -# As node #1 is not a Galera node, we connect to node #2 in order to run include/galera_cluster.inc ---connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2 --source include/galera_cluster.inc +# As node #3 is not a Galera node, and galera_cluster.inc does not open connetion to it +# we open the node_3 connection here +--connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3 + --connection node_2 --disable_query_log ---eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='root', MASTER_PORT=$NODE_MYPORT_1; +--eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='root', MASTER_PORT=$NODE_MYPORT_3; --enable_query_log START SLAVE; ---connection node_1 +--connection node_3 ## ## Verify the correct operation of the auto-increment when @@ -62,14 +63,13 @@ select * from t1; show variables like 'binlog_format'; show variables like 'auto_increment_increment'; ---connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3 - +--connection node_1 select * from t1; show variables like 'binlog_format'; show variables like 'auto_increment_increment'; ---connection node_1 +--connection node_3 DROP TABLE t1; --connection node_2 @@ -79,5 +79,5 @@ DROP TABLE t1; STOP SLAVE; RESET SLAVE ALL; ---connection node_1 +--connection node_3 RESET MASTER; diff --git a/mysql-test/suite/galera/t/galera_as_slave_ctas.test b/mysql-test/suite/galera/t/galera_as_slave_ctas.test index 1a5e023b981..eced636c600 100644 --- a/mysql-test/suite/galera/t/galera_as_slave_ctas.test +++ b/mysql-test/suite/galera/t/galera_as_slave_ctas.test @@ -6,70 +6,69 @@ # --source include/have_innodb.inc - -# As node #1 is not a Galera node, we connect to node #2 in order to run include/galera_cluster.inc ---connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2 +--source include/have_log_bin.inc --source include/galera_cluster.inc +# As node #3 is not a Galera node, and galera_cluster.inc does not open connetion to it +# we open the node_3 connection here --connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3 +SELECT @@wsrep_on; ---connection node_2 +--connection node_1 --disable_query_log ---eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='root', MASTER_PORT=$NODE_MYPORT_1; +--eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='root', MASTER_PORT=$NODE_MYPORT_3; --enable_query_log START SLAVE; - # make sure master server has binlog_format=ROW ---connection node_1 +--connection node_3 SHOW VARIABLES LIKE 'binlog_format'; # # test phase one, issue CTAS with empty source table # ---connection node_1 + CREATE TABLE source (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; CREATE TABLE target AS SELECT * FROM source; ---connection node_2 +--connection node_1 --let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'target'; --source include/wait_condition.inc ---connection node_3 +--connection node_2 --let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'target'; --source include/wait_condition.inc # # test phase two, issue CTAS with populated source table # ---connection node_1 +--connection node_3 DROP TABLE target; INSERT INTO source VALUES(1); CREATE TABLE target AS SELECT * FROM source; ---connection node_2 +--connection node_1 --let $wait_condition = SELECT COUNT(*) = 1 FROM target; --source include/wait_condition.inc ---connection node_3 +--connection node_2 --let $wait_condition = SELECT COUNT(*) = 1 FROM target; --source include/wait_condition.inc ---connection node_1 +--connection node_3 DROP TABLE source; DROP TABLE target; ---connection node_3 +--connection node_2 --let $wait_condition = SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'target'; --source include/wait_condition.inc - ---connection node_2 +--connection node_1 STOP SLAVE; RESET SLAVE ALL; ---connection node_1 +--connection node_3 RESET MASTER; diff --git a/mysql-test/suite/galera/t/galera_as_slave_gtid.inc b/mysql-test/suite/galera/t/galera_as_slave_gtid.inc index 461e7833a94..ca6cce52497 100644 --- a/mysql-test/suite/galera/t/galera_as_slave_gtid.inc +++ b/mysql-test/suite/galera/t/galera_as_slave_gtid.inc @@ -8,6 +8,7 @@ # --source include/have_innodb.inc +--source include/have_log_bin.inc --source include/galera_cluster.inc # As node #3 is not a Galera node, and galera_cluster.inc does not open connetion to it diff --git a/mysql-test/suite/galera/t/galera_as_slave_gtid.test b/mysql-test/suite/galera/t/galera_as_slave_gtid.test index a3c43540916..c5f45031050 100644 --- a/mysql-test/suite/galera/t/galera_as_slave_gtid.test +++ b/mysql-test/suite/galera/t/galera_as_slave_gtid.test @@ -7,71 +7,4 @@ # In addition to performing DDL and DML, we check that the gtid of the master is preserved inside the cluster # ---source include/have_innodb.inc - -# As node #1 is not a Galera node, we connect to node #2 in order to run include/galera_cluster.inc ---connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2 ---source include/galera_cluster.inc - ---connection node_2 ---disable_query_log ---eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='root', MASTER_PORT=$NODE_MYPORT_1; ---enable_query_log -START SLAVE; - ---connection node_1 -CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; -INSERT INTO t1 VALUES(1); - -SELECT LENGTH(@@global.gtid_binlog_state) > 1; ---let $gtid_binlog_state_node1 = `SELECT @@global.gtid_binlog_state;` - ---connection node_2 ---let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1'; ---source include/wait_condition.inc - ---let $wait_condition = SELECT COUNT(*) = 1 FROM t1; ---source include/wait_condition.inc - ---disable_query_log ---eval SELECT '$gtid_binlog_state_node1' = @@global.gtid_binlog_state AS gtid_binlog_state_equal; ---enable_query_log - ---connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3 -SELECT COUNT(*) = 1 FROM t1; - ---disable_query_log ---eval SELECT '$gtid_binlog_state_node1' = @@global.gtid_binlog_state AS gtid_binlog_state_equal; ---enable_query_log - ---connection node_1 -DROP TABLE t1; - -# -# Unfortunately without the sleep below the following statement fails with "query returned no rows", which -# is difficult to understand given that it is an aggregate query. A "query execution was interrupted" -# warning is also reported by MTR, which is also weird. -# - ---sleep 1 - ---connection node_3 ---let $wait_condition = SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1'; ---source include/wait_condition.inc - ---connection node_2 ---let $wait_condition = SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1'; ---source include/wait_condition.inc - -STOP SLAVE; -RESET SLAVE ALL; - ---echo #cleanup ---connection node_1 -reset master; - ---connection node_2 -reset master; - ---connection node_3 -reset master; +--source galera_as_slave_gtid.inc diff --git a/mysql-test/suite/galera/t/galera_as_slave_gtid_auto_engine.cnf b/mysql-test/suite/galera/t/galera_as_slave_gtid_auto_engine.cnf new file mode 100644 index 00000000000..efabe4161aa --- /dev/null +++ b/mysql-test/suite/galera/t/galera_as_slave_gtid_auto_engine.cnf @@ -0,0 +1,8 @@ +!include ../galera_2nodes_as_slave.cnf + +[mysqld] +log-bin=mysqld-bin +log-slave-updates +binlog-format=ROW + +gtid_pos_auto_engines=InnoDB diff --git a/mysql-test/suite/galera/t/galera_as_slave_gtid_auto_engine.test b/mysql-test/suite/galera/t/galera_as_slave_gtid_auto_engine.test new file mode 100644 index 00000000000..5ef98573660 --- /dev/null +++ b/mysql-test/suite/galera/t/galera_as_slave_gtid_auto_engine.test @@ -0,0 +1,14 @@ +# +# Test Galera as a slave to a MariaDB master using GTIDs +# +# suite/galera/galera_2nodes_as_slave.cnf describes the setup of the nodes +# suite/galera/t/galera_as_slave_gtid.cnf has the GTID options +# +# In addition to performing DDL and DML, we check that the gtid of the master is preserved inside the cluster +# + +--source galera_as_slave_gtid.inc + +--connection node_2 +DROP TABLE mysql.gtid_slave_pos_InnoDB; +CALL mtr.add_suppression("The automatically created table"); diff --git a/mysql-test/suite/galera/t/galera_as_slave_gtid_myisam.test b/mysql-test/suite/galera/t/galera_as_slave_gtid_myisam.test index 940c9c0667d..8787f864a99 100644 --- a/mysql-test/suite/galera/t/galera_as_slave_gtid_myisam.test +++ b/mysql-test/suite/galera/t/galera_as_slave_gtid_myisam.test @@ -12,29 +12,32 @@ # --source include/have_innodb.inc - -# As node #1 is not a Galera node, we connect to node #2 in order to run include/galera_cluster.inc ---connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2 +--source include/have_log_bin.inc --source include/galera_cluster.inc SELECT @@WSREP_ON; ---connection node_2 +# As node #3 is not a Galera node, and galera_cluster.inc does not open connetion to it +# we open the node_3 connection here +--connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3 +SELECT @@wsrep_on; + +--connection node_1 # make sure gtid_slave_pos is of innodb engine, mtr does not currently provide that ALTER TABLE mysql.gtid_slave_pos engine = InnoDB; --disable_query_log ---eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='root', MASTER_PORT=$NODE_MYPORT_1; +--eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='root', MASTER_PORT=$NODE_MYPORT_3; --enable_query_log START SLAVE; ---connection node_1 +--connection node_3 CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=MyISAM; INSERT INTO t1 VALUES(1); SELECT LENGTH(@@global.gtid_binlog_state) > 1; --let $gtid_binlog_state_node1 = `SELECT @@global.gtid_binlog_state;` ---connection node_2 +--connection node_1 --let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1'; --source include/wait_condition.inc @@ -45,18 +48,22 @@ SELECT LENGTH(@@global.gtid_binlog_state) > 1; --eval SELECT '$gtid_binlog_state_node1' = @@global.gtid_binlog_state AS gtid_binlog_state_equal; --enable_query_log ---connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3 -SELECT COUNT(*) = 0 FROM t1; +--connection node_2 +SELECT COUNT(*) AS EXPECT_0 FROM t1; --disable_query_log --eval SELECT '$gtid_binlog_state_node1' = @@global.gtid_binlog_state AS gtid_binlog_state_equal; --enable_query_log --echo #cleanup +--connection node_3 +DROP TABLE t1; + --sleep 1 --connection node_1 -DROP TABLE t1; +--let $wait_condition = SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1'; +--source include/wait_condition.inc --connection node_2 --let $wait_condition = SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1'; @@ -65,13 +72,19 @@ DROP TABLE t1; --connection node_3 --let $wait_condition = SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1'; --source include/wait_condition.inc +RESET MASTER; + --connection node_1 +STOP SLAVE; +RESET SLAVE ALL; +SET GLOBAL WSREP_ON=OFF; reset master; +SET GLOBAL WSREP_ON=ON; --connection node_2 -STOP SLAVE; -RESET SLAVE ALL; +SET GLOBAL WSREP_ON=OFF; reset master; +SET GLOBAL WSREP_ON=ON; --connection node_3 -reset master; +RESET MASTER; diff --git a/mysql-test/suite/galera/t/galera_as_slave_nonprim.test b/mysql-test/suite/galera/t/galera_as_slave_nonprim.test index 46a93458271..0d878db29b8 100644 --- a/mysql-test/suite/galera/t/galera_as_slave_nonprim.test +++ b/mysql-test/suite/galera/t/galera_as_slave_nonprim.test @@ -7,22 +7,23 @@ --source include/have_innodb.inc --source include/big_test.inc +--source include/galera_cluster.inc # Step #1. Establish replication # -# As node #1 is not a Galera node, we connect to node #2 in order to run include/galera_cluster.inc -# ---connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2 ---source include/galera_cluster.inc +# As node 4 is not a Galera node, and galera_cluster.inc does not open connetion to it +# we open the node_4 connection here +--connect node_4, 127.0.0.1, root, , test, $NODE_MYPORT_4 + --connection node_2 --disable_query_log ---eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$NODE_MYPORT_1, MASTER_USER='root'; +--eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$NODE_MYPORT_4, MASTER_USER='root'; --enable_query_log START SLAVE; SET SESSION wsrep_sync_wait = 0; ---connection node_1 +--connection node_4 CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; --connection node_2 @@ -34,22 +35,21 @@ CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; SET GLOBAL wsrep_provider_options = 'gmcast.isolate=1'; ---connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3 ---connection node_3 +--connection node_1 --source include/wait_until_connected_again.inc --let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size' --source include/wait_condition.inc # Step #3. Force async replication to fail by creating a replication event while the slave is non-prim ---connection node_1 +--connection node_4 INSERT INTO t1 VALUES (1),(2),(3),(4),(5); --connection node_2 --sleep 5 --let $value = query_get_value(SHOW SLAVE STATUS, Last_SQL_Error, 1) ---connection node_3 +--connection node_1 --disable_query_log --eval SELECT "$value" IN ("Error 'Unknown command' on query. Default database: 'test'. Query: 'BEGIN'", "Node has dropped from cluster") AS expected_error --enable_query_log @@ -58,7 +58,7 @@ INSERT INTO t1 VALUES (1),(2),(3),(4),(5); --connection node_2 SET GLOBAL wsrep_provider_options = 'gmcast.isolate=0'; ---connection node_3 +--connection node_1 --source include/wait_until_connected_again.inc --let $wait_condition = SELECT VARIABLE_VALUE = 3 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size' --source include/wait_condition.inc @@ -74,7 +74,7 @@ START SLAVE; --let $wait_condition = SELECT COUNT(*) = 5 FROM t1; --source include/wait_condition.inc ---connection node_1 +--connection node_4 DROP TABLE t1; --sleep 2 @@ -91,6 +91,5 @@ CALL mtr.add_suppression("Transport endpoint is not connected"); CALL mtr.add_suppression("Slave SQL: Error in Xid_log_event: Commit could not be completed, 'Deadlock found when trying to get lock; try restarting transaction', Error_code: 1213"); CALL mtr.add_suppression("Slave SQL: Node has dropped from cluster, Error_code: 1047"); - ---connection node_1 +--connection node_4 RESET MASTER; diff --git a/mysql-test/suite/galera/t/galera_as_slave_replication_bundle.cnf b/mysql-test/suite/galera/t/galera_as_slave_replication_bundle.cnf deleted file mode 100644 index d092d88bfaf..00000000000 --- a/mysql-test/suite/galera/t/galera_as_slave_replication_bundle.cnf +++ /dev/null @@ -1,4 +0,0 @@ -!include ../galera_2nodes_as_slave.cnf - -[mysqld] -wsrep-mysql-replication-bundle=2 diff --git a/mysql-test/suite/galera/t/galera_as_slave_replication_bundle.test b/mysql-test/suite/galera/t/galera_as_slave_replication_bundle.test deleted file mode 100644 index 460e040c010..00000000000 --- a/mysql-test/suite/galera/t/galera_as_slave_replication_bundle.test +++ /dev/null @@ -1,48 +0,0 @@ -# -# Test the wsrep_replication_bundle variable. We expect that multiple async replication events -# will be grouped together and thus a smaller number of wsrep_last_committed transactions will -# be reported. -# - ---source include/have_innodb.inc - -# As node #1 is not a Galera node, we connect to node #2 in order to run include/galera_cluster.inc ---connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2 ---source include/galera_cluster.inc - ---connection node_2 ---disable_query_log ---eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='root', MASTER_PORT=$NODE_MYPORT_1; ---enable_query_log -START SLAVE; - ---connection node_1 -CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; -INSERT INTO t1 VALUES(1); -INSERT INTO t1 VALUES(2); -INSERT INTO t1 VALUES(3); -INSERT INTO t1 VALUES(4); -INSERT INTO t1 VALUES(5); - ---connection node_2 ---let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1'; ---source include/wait_condition.inc - ---let $wait_condition = SELECT COUNT(*) = 4 FROM t1; ---source include/wait_condition.inc - -# With wsrep_mysql_replication_bundle = 2, the last insert is not delivered -# because there are not enough events remaining to complete an entire bundle -SELECT COUNT(*) = 4 FROM t1; - -# Bundle is now complete, the last INSERT and the DROP are delivered ---connection node_1 -DROP TABLE t1; - ---connection node_2 ---sleep 1 ---let $wait_condition = SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1'; ---source include/wait_condition.inc - -STOP SLAVE; -RESET SLAVE ALL; diff --git a/mysql-test/suite/galera/t/galera_autoinc_sst_mariabackup.cnf b/mysql-test/suite/galera/t/galera_autoinc_sst_mariabackup.cnf index bd6bf9d4f98..cddb8e0e174 100644 --- a/mysql-test/suite/galera/t/galera_autoinc_sst_mariabackup.cnf +++ b/mysql-test/suite/galera/t/galera_autoinc_sst_mariabackup.cnf @@ -5,7 +5,7 @@ wsrep_sst_method=mariabackup wsrep_sst_auth="root:" [mysqld.1] -wsrep_provider_options='base_port=@mysqld.1.#galera_port;gcache.size=1;pc.ignore_sb=true' +wsrep_provider_options='base_port=@mysqld.1.#galera_port;gcache.size=10M;pc.ignore_sb=true' [mysqld.2] -wsrep_provider_options='base_port=@mysqld.2.#galera_port;gcache.size=1;pc.ignore_sb=true' +wsrep_provider_options='base_port=@mysqld.2.#galera_port;gcache.size=10M;pc.ignore_sb=true' diff --git a/mysql-test/suite/galera/t/galera_autoinc_sst_mariabackup.test b/mysql-test/suite/galera/t/galera_autoinc_sst_mariabackup.test index 9c94d7f10d2..ff8bdc9c4cc 100644 --- a/mysql-test/suite/galera/t/galera_autoinc_sst_mariabackup.test +++ b/mysql-test/suite/galera/t/galera_autoinc_sst_mariabackup.test @@ -20,6 +20,7 @@ INSERT INTO t1 VALUES (NULL),(NULL),(NULL),(NULL),(NULL),(NULL); --connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2 --connection node_2a --source include/kill_galera.inc +--remove_file $MYSQLTEST_VARDIR/mysqld.2/data/grastate.dat --connection node_1 INSERT INTO t1 VALUES (NULL),(NULL),(NULL),(NULL),(NULL),(NULL); diff --git a/mysql-test/suite/galera/t/galera_bf_abort_at_after_statement.test b/mysql-test/suite/galera/t/galera_bf_abort_at_after_statement.test new file mode 100644 index 00000000000..b1fe3e64cd8 --- /dev/null +++ b/mysql-test/suite/galera/t/galera_bf_abort_at_after_statement.test @@ -0,0 +1,37 @@ +# +# This test checks that the client gets an error for a BF abort, +# specifically when it gets detected inside the wsrep_after_statement hook +# + +--source include/have_innodb.inc +--source include/galera_cluster.inc +--source include/have_debug_sync.inc + +--connection node_1 +CREATE TABLE t1 (id INT PRIMARY KEY, val INT); +INSERT INTO t1 VALUES (1, 1); + +--connection node_2 +START TRANSACTION; +SET DEBUG_SYNC = 'wsrep_after_statement_enter SIGNAL blocked WAIT_FOR continue'; +--send UPDATE t1 SET val=2 WHERE id=1 + +--connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2 +SET DEBUG_SYNC = 'now WAIT_FOR blocked'; + +--connection node_1 +# cause BF abort on other node +UPDATE t1 SET val=3 WHERE id=1; + +--connection node_2a +SET DEBUG_SYNC = 'now SIGNAL continue'; + +--connection node_2 +# check we get BF aborted +--error ER_LOCK_DEADLOCK +--reap +COMMIT; +SET DEBUG_SYNC = 'RESET'; + +--connection node_1 +DROP TABLE t1; diff --git a/mysql-test/suite/galera/t/galera_bf_abort_group_commit.cnf b/mysql-test/suite/galera/t/galera_bf_abort_group_commit.cnf new file mode 100644 index 00000000000..612418c17c0 --- /dev/null +++ b/mysql-test/suite/galera/t/galera_bf_abort_group_commit.cnf @@ -0,0 +1,15 @@ +!include ../galera_2nodes.cnf + +# We set repl.commit_order=1 in order to disable provider commit +# ordering. + +[mysqld.1] +log-bin +log-slave-updates +wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.1.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;repl.commit_order=1' + +[mysqld.2] + +log-bin +log-slave-updates +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;repl.commit_order=1'
\ No newline at end of file diff --git a/mysql-test/suite/galera/t/galera_bf_abort_group_commit.test b/mysql-test/suite/galera/t/galera_bf_abort_group_commit.test new file mode 100644 index 00000000000..a828701cd0e --- /dev/null +++ b/mysql-test/suite/galera/t/galera_bf_abort_group_commit.test @@ -0,0 +1,77 @@ +# +# This test uses galera_sr_bf_abort.inc to probe various BF abort points +# for SR transactions with wsrep provider commit ordering disabled. +# + +--source include/galera_cluster.inc +--source include/have_innodb.inc +--source include/galera_have_debug_sync.inc + +# Control connection for manipulating sync points on node 1 +--connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1 +SET SESSION wsrep_sync_wait = 0; + +# SR bf abort on fragment +--let $wsrep_trx_fragment_size = 1 +--echo galera_sr_bf_abort_at_commit = 0 +--let $galera_sr_bf_abort_at_commit = 0 + +--echo after_replicate_sync +--let $galera_sr_bf_abort_sync_point = after_replicate_sync +--source ../../suite/galera_sr/t/galera_sr_bf_abort.inc + +--echo local_monitor_master_enter_sync +--let $galera_sr_bf_abort_sync_point = local_monitor_master_enter_sync +--source ../../suite/galera_sr/t/galera_sr_bf_abort.inc + +--echo apply_monitor_master_enter_sync +--let $galera_sr_bf_abort_sync_point = apply_monitor_master_enter_sync +--source ../../suite/galera_sr/t/galera_sr_bf_abort.inc + +--echo commit_monitor_master_enter_sync +--let $galera_sr_bf_abort_sync_point = commit_monitor_master_enter_sync +--source ../../suite/galera_sr/t/galera_sr_bf_abort.inc + +# SR bf abort on commit fragment +--let $wsrep_trx_fragment_size = 1 +--echo galera_sr_bf_abort_at_commit = 1 +--let $galera_sr_bf_abort_at_commit = 1 + +--echo after_replicate_sync +--let $galera_sr_bf_abort_sync_point = after_replicate_sync +--source ../../suite/galera_sr/t/galera_sr_bf_abort.inc + +--echo local_monitor_master_enter_sync +--let $galera_sr_bf_abort_sync_point = local_monitor_master_enter_sync +--source ../../suite/galera_sr/t/galera_sr_bf_abort.inc + +--echo apply_monitor_master_enter_sync +--let $galera_sr_bf_abort_sync_point = apply_monitor_master_enter_sync +--source ../../suite/galera_sr/t/galera_sr_bf_abort.inc + +--echo commit_monitor_master_enter_sync +--let $galera_sr_bf_abort_sync_point = commit_monitor_master_enter_sync +--source suite/galera/t/galera_sr_bf_abort.inc + +# Normal bf abort on commit +--let $wsrep_trx_fragment_size = 0 +--echo galera_sr_bf_abort_at_commit = 1 +--let $galera_sr_bf_abort_at_commit = 1 + +--echo after_replicate_sync +--let $galera_sr_bf_abort_sync_point = after_replicate_sync +--source ../../suite/galera_sr/t/galera_sr_bf_abort.inc + +--echo local_monitor_master_enter_sync +--let $galera_sr_bf_abort_sync_point = local_monitor_master_enter_sync +--source ../../suite/galera_sr/t/galera_sr_bf_abort.inc + +--echo apply_monitor_master_enter_sync +--let $galera_sr_bf_abort_sync_point = apply_monitor_master_enter_sync +--source ../../suite/galera_sr/t/galera_sr_bf_abort.inc + +--echo commit_monitor_master_enter_sync +--let $galera_sr_bf_abort_sync_point = commit_monitor_master_enter_sync +--source ../../suite/galera_sr/t/galera_sr_bf_abort.inc + +CALL mtr.add_suppression("WSREP: fragment replication failed: 1"); diff --git a/mysql-test/suite/galera/t/galera_bf_abort_shutdown.test b/mysql-test/suite/galera/t/galera_bf_abort_shutdown.test new file mode 100644 index 00000000000..c7af8375b3f --- /dev/null +++ b/mysql-test/suite/galera/t/galera_bf_abort_shutdown.test @@ -0,0 +1,33 @@ +# +# This test verifies that the server can be shut down even if +# some of the wsrep transactions are in QUERY_COMMITTING state. +# In this case the shutdown sequence may do a BF abort for the +# connection. +# + +--source include/have_innodb.inc +--source include/galera_cluster.inc +--source include/have_debug_sync.inc + +# Save original auto_increment_offset values. +--let $node_1=node_1 +--let $node_2=node_2 +--source include/auto_increment_offset_save.inc + +--connection node_1 +CREATE TABLE t1 (f1 INT PRIMARY KEY); + +--connection node_2 +SET DEBUG_SYNC = 'wsrep_before_certification WAIT_FOR continue'; +--send INSERT INTO t1 VALUES (1) + +--connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2 +--source include/restart_mysqld.inc + +# Restore original auto_increment_offset values. +--let $node_2=node_2a +--source include/auto_increment_offset_restore.inc + +--connection node_1 + +DROP TABLE t1; diff --git a/mysql-test/suite/galera/t/galera_bf_kill.cnf b/mysql-test/suite/galera/t/galera_bf_kill.cnf new file mode 100644 index 00000000000..e68f891792c --- /dev/null +++ b/mysql-test/suite/galera/t/galera_bf_kill.cnf @@ -0,0 +1,7 @@ +!include ../galera_2nodes.cnf + +[mysqld.1] +wsrep-debug=SERVER + +[mysqld.2] +wsrep-debug=SERVER diff --git a/mysql-test/suite/galera/t/galera_bf_kill.test b/mysql-test/suite/galera/t/galera_bf_kill.test new file mode 100644 index 00000000000..c8564bc9219 --- /dev/null +++ b/mysql-test/suite/galera/t/galera_bf_kill.test @@ -0,0 +1,141 @@ +--source include/galera_cluster.inc +--source include/have_innodb.inc + +# +# Test case 1: Start a transaction on node_2a and kill it +# from other connection on same node +# + +--connection node_2 +CREATE TABLE t1(a int not null primary key auto_increment,b int) engine=InnoDB; +insert into t1 values (NULL,1); + +--connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2 +--connection node_2a +begin; +update t1 set a = 5; + +--connection node_2 + +--let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE USER = 'root' AND COMMAND = 'Sleep' LIMIT 1 +--source include/wait_condition.inc + +--let $k_thread = `SELECT ID FROM INFORMATION_SCHEMA.PROCESSLIST WHERE USER = 'root' AND COMMAND = 'Sleep' LIMIT 1` + +--disable_query_log +--eval KILL $k_thread +--enable_query_log + +select * from t1; +--disconnect node_2a + +# +# Test case 2: Start a transaction on node_2a and use +# kill query from other connection on same node +# + +--connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2 +--connection node_2a +begin; +update t1 set a =5; + +--connection node_2 +--let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE USER = 'root' AND COMMAND = 'Sleep' LIMIT 1 +--source include/wait_condition.inc + +--let $k_thread = `SELECT ID FROM INFORMATION_SCHEMA.PROCESSLIST WHERE USER = 'root' AND COMMAND = 'Sleep' LIMIT 1` + +--disable_query_log +--eval KILL QUERY $k_thread +--enable_query_log + +select * from t1; +--disconnect node_2a +# +# Test case 3: Start a transaction on node_2a and start a DDL on other transaction +# that will then abort node_2a transaction +# +--connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2 +--connection node_2a +begin; +update t1 set a =5, b=2; + +--connection node_2 +ALTER TABLE t1 ADD UNIQUE KEY b1(b); +ALTER TABLE t1 DROP KEY b1; + +select * from t1; + +--disconnect node_2a + +# +# Test case 4: Start a transaction on node_2a and conflicting transaction on node_2b +# and start a DDL on other transaction that will then abort node_2a and node_2b +# transactions +# + +--connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2 +--connection node_2a +begin; +update t1 set a =5, b=2; + +--connect node_2b, 127.0.0.1, root, , test, $NODE_MYPORT_2 +--connection node_2b +begin; +send update t1 set a =6, b=7; + +--connection node_2 +ALTER TABLE t1 ADD UNIQUE KEY b2(b); +ALTER TABLE t1 DROP KEY b2; + +select * from t1; + +--disconnect node_2a +--disconnect node_2b + +# +# Test case 5: Start a transaction on node_2a with wsrep disabled +# and start a DDL on other transaction that will then abort node_2a +# transactions +# + +--connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2 +--connection node_2a +SET SESSION wsrep_on=OFF; +begin; +update t1 set a =5, b=2; + +--connection node_2 +ALTER TABLE t1 ADD UNIQUE KEY b3(b); + +select * from t1; + +--disconnect node_2a + +# +# Test case 6: Start a transaction on node_2a with wsrep disabled +# and kill it from other connection on same node +# + +--connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2 +--connection node_2a +SET SESSION wsrep_on=OFF; +begin; +update t1 set a =5, b=2; + +--connection node_2 +--let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE USER = 'root' AND COMMAND = 'Sleep' LIMIT 1 +--source include/wait_condition.inc + +--let $k_thread = `SELECT ID FROM INFORMATION_SCHEMA.PROCESSLIST WHERE USER = 'root' AND COMMAND = 'Sleep' LIMIT 1` + +--disable_query_log +--eval KILL $k_thread +--enable_query_log + +select * from t1; + +--disconnect node_2a + +--connection node_1 +drop table t1; diff --git a/mysql-test/suite/galera/t/galera_bf_kill_debug.cnf b/mysql-test/suite/galera/t/galera_bf_kill_debug.cnf new file mode 100644 index 00000000000..e68f891792c --- /dev/null +++ b/mysql-test/suite/galera/t/galera_bf_kill_debug.cnf @@ -0,0 +1,7 @@ +!include ../galera_2nodes.cnf + +[mysqld.1] +wsrep-debug=SERVER + +[mysqld.2] +wsrep-debug=SERVER diff --git a/mysql-test/suite/galera/t/galera_bf_kill_debug.test b/mysql-test/suite/galera/t/galera_bf_kill_debug.test new file mode 100644 index 00000000000..b687a5a6a67 --- /dev/null +++ b/mysql-test/suite/galera/t/galera_bf_kill_debug.test @@ -0,0 +1,140 @@ +--source include/galera_cluster.inc +--source include/have_innodb.inc +--source include/have_debug.inc +--source include/have_debug_sync.inc + +# +# Test case 7: +# 1. Start a transaction on node_2, +# and leave it pending while holding a row locked +# 2. set sync point pause applier +# 3. send a conflicting write on node_1, it will pause +# at the sync point +# 4. though another connection to node_2, kill the local +# transaction +# + +--connection node_2 +CREATE TABLE t1(a int not null primary key auto_increment,b int) engine=InnoDB; +insert into t1 values (NULL,1); + +# +# connection node_2a runs a local transaction, that is victim of BF abort +# and victim of KILL command by connection node_2 +# +--connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2 +--connection node_2a +truncate t1; +insert into t1 values (1,0); + +# start a transaction that will conflict with later applier +begin; +update t1 set b=2 where a=1; + +--connection node_2 +set session wsrep_sync_wait=0; +--let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE USER = 'root' AND COMMAND = 'Sleep' LIMIT 1 +--source include/wait_condition.inc + +--let $k_thread = `SELECT ID FROM INFORMATION_SCHEMA.PROCESSLIST WHERE USER = 'root' AND COMMAND = 'Sleep' LIMIT 1` + +# connection node_2b is for controlling debug syn points +# first set a sync point for applier, to pause during BF aborting +# and before THD::awake would be called +# +--connect node_2b, 127.0.0.1, root, , test, $NODE_MYPORT_2 +--connection node_2b +SET GLOBAL debug_dbug = "d,sync.before_wsrep_thd_abort"; + +# +# replicate an update, which will BF abort the victim node_2a +# however, while applier in node 2 is handling the abort, +# it will pause in sync point set by node_2b +# +--connection node_1 +select * from t1; +update t1 set b= 1 where a=1; + +# +# wait until the applying of above update has reached the sync point +# in node 2 +# +--connection node_2b +SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.before_wsrep_thd_abort_reached"; + +--connection node_2 +# +# pause KILL execution before awake +# +SET DEBUG_SYNC= 'before_awake_no_mutex SIGNAL awake_reached WAIT_FOR continue_kill'; +--disable_query_log +--send_eval KILL $k_thread +--enable_query_log + + +--connection node_2b +SET DEBUG_SYNC='now WAIT_FOR awake_reached'; + +# release applier and KILL operator +SET GLOBAL debug_dbug = ""; +SET DEBUG_SYNC = "now SIGNAL signal.before_wsrep_thd_abort"; +SET DEBUG_SYNC = "now SIGNAL continue_kill"; + +--connection node_2 +--reap + +--connection node_2a +--error 0,1213 +select * from t1; + +--connection node_2 +SET DEBUG_SYNC = "RESET"; + +drop table t1; + +--disconnect node_2a +# +# Test case 7: +# run a transaction in node 2, and set a sync point to pause the transaction +# in commit phase. +# Through another connection to node 2, kill the committing transaction by +# KILL QUERY command +# + +--connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2 +--connection node_2a +--let $connection_id = `SELECT CONNECTION_ID()` + +CREATE TABLE t1 (i int primary key); + +# Set up sync point +SET DEBUG_SYNC = "before_wsrep_ordered_commit SIGNAL bwoc_reached WAIT_FOR bwoc_continue"; + +# Send insert which will block in the sync point above +--send INSERT INTO t1 VALUES (1) + +--connection node_2 +SET DEBUG_SYNC = "now WAIT_FOR bwoc_reached"; + +--disable_query_log +--disable_result_log +# victim has passed the point of no return, kill is not possible anymore +--eval KILL QUERY $connection_id +--enable_result_log +--enable_query_log + +SET DEBUG_SYNC = "now SIGNAL bwoc_continue"; +SET DEBUG_SYNC='RESET'; +--connection node_2a +--error 0,1213 +--reap + +--connection node_2 +# victim was able to complete the INSERT +select * from t1; + +--disconnect node_2a + +--connection node_1 +drop table t1; + diff --git a/mysql-test/suite/galera/t/galera_bf_lock_wait.cnf b/mysql-test/suite/galera/t/galera_bf_lock_wait.cnf new file mode 100644 index 00000000000..e68f891792c --- /dev/null +++ b/mysql-test/suite/galera/t/galera_bf_lock_wait.cnf @@ -0,0 +1,7 @@ +!include ../galera_2nodes.cnf + +[mysqld.1] +wsrep-debug=SERVER + +[mysqld.2] +wsrep-debug=SERVER diff --git a/mysql-test/suite/galera/t/galera_bf_lock_wait.test b/mysql-test/suite/galera/t/galera_bf_lock_wait.test index c8a31506ffa..0562b4361ff 100644 --- a/mysql-test/suite/galera/t/galera_bf_lock_wait.test +++ b/mysql-test/suite/galera/t/galera_bf_lock_wait.test @@ -1,7 +1,13 @@ --source include/galera_cluster.inc +--source include/have_innodb.inc --source include/big_test.inc +--connection node_2 +call mtr.add_suppression("WSREP: Trying to continue unpaused monitor"); + --connection node_1 +call mtr.add_suppression("WSREP: Trying to continue unpaused monitor"); + CREATE TABLE t1 ENGINE=InnoDB select 1 as a, 1 as b union select 2, 2; ALTER TABLE t1 add primary key(a); diff --git a/mysql-test/suite/galera/t/galera_change_user.test b/mysql-test/suite/galera/t/galera_change_user.test new file mode 100644 index 00000000000..89efef1dbb0 --- /dev/null +++ b/mysql-test/suite/galera/t/galera_change_user.test @@ -0,0 +1,29 @@ +# +# Check that change user works with Galera +# + +--source include/galera_cluster.inc +--source include/have_innodb.inc + +--connection node_1 +CREATE USER user1; +CREATE TABLE t1 (f1 INT PRIMARY KEY) ENGINE=InnoDB; + +# Change user in idle connection +--connect node_1a, 127.0.0.1, root, , test, $MYPORT_NODE_1 +change_user 'user1'; +reset_connection; +--disconnect node_1a + +# Change user with transaction open +--connect node_1a, 127.0.0.1, root, , test, $MYPORT_NODE_1 +START TRANSACTION; +INSERT INTO t1 VALUES (1); +change_user 'user1'; +reset_connection; +--disconnect node_1a + +--connection node_1 +DROP TABLE t1; +DROP USER user1; + diff --git a/mysql-test/suite/galera/t/galera_commit_empty.test b/mysql-test/suite/galera/t/galera_commit_empty.test new file mode 100644 index 00000000000..4e1a1e4eb2c --- /dev/null +++ b/mysql-test/suite/galera/t/galera_commit_empty.test @@ -0,0 +1,35 @@ +# Test empty transactions. +# +# Check that the empty transaction gets terminated by starting and new +# transaction after it. If the empty transaction is not terminated +# appropriately, the following START TRANSACTION will fail. +# +# Also check that empty transactions don't generate any write sets. +# + +--source include/galera_cluster.inc +--source include/have_innodb.inc + +--let $wsrep_last_committed_before = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME = 'wsrep_last_committed'` + +START TRANSACTION; +COMMIT; + +START TRANSACTION; +COMMIT; + +START TRANSACTION READ ONLY; +COMMIT; + +START TRANSACTION; +COMMIT; + +START TRANSACTION; +START TRANSACTION; +COMMIT; + +--let $wsrep_last_committed_after = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME = 'wsrep_last_committed'` + +--disable_query_log +--eval SELECT $wsrep_last_committed_after = $wsrep_last_committed_before AS wsrep_last_committed_diff +--enable_query_log diff --git a/mysql-test/suite/galera/t/galera_concurrent_ctas.test b/mysql-test/suite/galera/t/galera_concurrent_ctas.test index 6c4e8be68a7..61038664b21 100644 --- a/mysql-test/suite/galera/t/galera_concurrent_ctas.test +++ b/mysql-test/suite/galera/t/galera_concurrent_ctas.test @@ -1,32 +1,32 @@ --source include/galera_cluster.inc ---source include/have_innodb.inc +--source include/big_test.inc --write_file $MYSQLTEST_VARDIR/tmp/galera_concurrent.sql -CREATE table t1 as SELECT SLEEP(0); +CREATE table t1 as SELECT SLEEP(0.1); DROP table t1; -CREATE table t1 as SELECT SLEEP(0); +CREATE table t1 as SELECT SLEEP(0.1); DROP table t1; -CREATE table t1 as SELECT SLEEP(0); +CREATE table t1 as SELECT SLEEP(0.1); DROP table t1; -CREATE table t1 as SELECT SLEEP(0); +CREATE table t1 as SELECT SLEEP(0.1); DROP table t1; -CREATE table t1 as SELECT SLEEP(0); +CREATE table t1 as SELECT SLEEP(0.1); DROP table t1; -CREATE table t1 as SELECT SLEEP(0); +CREATE table t1 as SELECT SLEEP(0.1); DROP table t1; -CREATE table t1 as SELECT SLEEP(0); +CREATE table t1 as SELECT SLEEP(0.1); DROP table t1; -CREATE table t1 as SELECT SLEEP(0); +CREATE table t1 as SELECT SLEEP(0.1); DROP table t1; -CREATE table t1 as SELECT SLEEP(0); -CREATE table t2 as SELECT SLEEP(0); -CREATE table t3 as SELECT SLEEP(0); -CREATE table t4 as SELECT SLEEP(0); -CREATE table t5 as SELECT SLEEP(0); -CREATE table t6 as SELECT SLEEP(0); -CREATE table t7 as SELECT SLEEP(0); -CREATE table t8 as SELECT SLEEP(0); -CREATE table t9 as SELECT SLEEP(0); +CREATE table t1 as SELECT SLEEP(0.2); +CREATE table t2 as SELECT SLEEP(0.2); +CREATE table t3 as SELECT SLEEP(0.2); +CREATE table t4 as SELECT SLEEP(0.2); +CREATE table t5 as SELECT SLEEP(0.2); +CREATE table t6 as SELECT SLEEP(0.2); +CREATE table t7 as SELECT SLEEP(0.2); +CREATE table t8 as SELECT SLEEP(0.2); +CREATE table t9 as SELECT SLEEP(0.2); DROP table t1; DROP table t2; DROP table t3; diff --git a/mysql-test/suite/galera/t/galera_create_table_as_select.test b/mysql-test/suite/galera/t/galera_create_table_as_select.test new file mode 100644 index 00000000000..a6c1f657280 --- /dev/null +++ b/mysql-test/suite/galera/t/galera_create_table_as_select.test @@ -0,0 +1,145 @@ +# +# CREATE TABLE AS SELECT tests +# + +--source include/galera_cluster.inc + +--connection node_1 +SET SESSION default_storage_engine=InnoDB; + +# Left table already exists + +CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB; +CREATE TABLE t2 (f1 INTEGER) ENGINE=InnoDB; +--error ER_TABLE_EXISTS_ERROR +CREATE TABLE t1 AS SELECT * FROM t2; +DROP TABLE t1,t2; + +# Right table does not exist +--error ER_NO_SUCH_TABLE +CREATE TABLE t1 AS SELECT * FROM t2; + +# No right table at all +CREATE TABLE t1 AS SELECT 1 FROM DUAL; + +--connection node_2 +SELECT COUNT(*) = 1 FROM t1; + +--connection node_1 +DROP TABLE t1; + +# Empty right table +--connection node_1 +CREATE TABLE t2 (f1 INTEGER) ENGINE=InnoDB; +CREATE TABLE t1 AS SELECT * FROM t2; + +--connection node_2 +SELECT COUNT(*) = 0 FROM t1; + +--connection node_1 +DROP TABLE t1,t2; + +# Right table is MyISAM + +CREATE TABLE t2 (f1 INTEGER) ENGINE=MyISAM; +INSERT INTO t2 VALUES (1),(2),(3),(4),(5); +CREATE TABLE t1 AS SELECT * FROM t2; +SELECT COUNT(*) = 5 FROM t1; + +--connection node_2 +SELECT COUNT(*) = 5 FROM t1; + +--connection node_1 +DROP TABLE t1,t2; + +# Right side is a subquery + +--connection node_1 +CREATE TABLE t2 (f1 INTEGER) ENGINE=InnoDB; +INSERT INTO t2 VALUES (1),(2),(3),(4),(5); +CREATE TABLE t1 AS SELECT MAX(f1) AS f1 FROM t2; + +--connection node_2 +SELECT COUNT(*) = 1 FROM t1; +SELECT f1 = 5 FROM t1; + +--connection node_1 +DROP TABLE t1,t2; + +# Inside a stored procedure + +--connection node_1 +DELIMITER |; +CREATE PROCEDURE sp1 () +BEGIN + CREATE TABLE t2 (f1 INTEGER) ENGINE=InnoDB; + INSERT INTO t2 VALUES (1),(2),(3),(4),(5); + CREATE TABLE t1 AS SELECT * FROM t2; +END| +DELIMITER ;| +CALL sp1(); +SELECT COUNT(*) = 5 FROM t1; + +--connection node_2 +SELECT COUNT(*) = 5 FROM t1; + +--connection node_1 +DROP TABLE t1, t2; +DROP PROCEDURE sp1; + +# Inside a prepared statement + +--connection node_1 +CREATE TABLE t2 (f1 INTEGER) ENGINE=InnoDB; +INSERT INTO t2 VALUES (1),(2),(3),(4),(5); + +PREPARE stmt FROM 'CREATE TABLE t1 AS SELECT * FROM t2'; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; +DROP TABLE t1, t2; + +# +# Multi-master conflict +# + +--connection node_1 + +CREATE TABLE t2 (f1 INTEGER) ENGINE=InnoDB; +INSERT INTO t2 VALUES (1),(2),(3),(4),(5); + +--connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1 +LOCK TABLE t2 WRITE; + +--connection node_1 +--send CREATE TABLE t1 AS SELECT * FROM t2; + +--connection node_2 +SELECT COUNT(*) = 5 FROM t2; +CREATE TABLE t1 AS SELECT * FROM t2; + +--connection node_1a +UNLOCK TABLES; + +--connection node_1 +--error ER_TABLE_EXISTS_ERROR,ER_LOCK_DEADLOCK +--reap + +DROP TABLE t1, t2; + +# +# Temporary table +# + +CREATE TABLE t2 (f1 INTEGER) ENGINE=InnoDB; +INSERT INTO t2 VALUES (1),(2),(3),(4),(5); + +CREATE TEMPORARY TABLE t1 AS SELECT * FROM t2; + +--connection node_2 +--error ER_NO_SUCH_TABLE +SELECT * FROM t1; + +CALL mtr.add_suppression("Slave SQL: Error 'Unknown table 'test.t1'' on query"); + +--connection node_1 +DROP TABLE t1, t2; diff --git a/mysql-test/suite/galera/t/galera_defaults.test b/mysql-test/suite/galera/t/galera_defaults.test index 3d4a7da7b54..3f8be268135 100644 --- a/mysql-test/suite/galera/t/galera_defaults.test +++ b/mysql-test/suite/galera/t/galera_defaults.test @@ -19,7 +19,7 @@ source ../wsrep/include/check_galera_version.inc; # Global Variables -SELECT COUNT(*) = 43 FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME LIKE 'wsrep_%'; +SELECT COUNT(*) `expect 48` FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME LIKE 'wsrep_%'; SELECT VARIABLE_NAME, VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES diff --git a/mysql-test/suite/galera/t/galera_fk_cascade_delete_debug.test b/mysql-test/suite/galera/t/galera_fk_cascade_delete_debug.test index f38c028b7d6..96e633f83d7 100644 --- a/mysql-test/suite/galera/t/galera_fk_cascade_delete_debug.test +++ b/mysql-test/suite/galera/t/galera_fk_cascade_delete_debug.test @@ -61,20 +61,21 @@ CREATE TABLE child ( INSERT INTO parent VALUES (1); INSERT INTO child VALUES (1,0,1); +--connection node_2 +--let $wait_condition = SELECT COUNT(*) = 1 FROM child; +--source include/wait_condition.inc + # block applier before applying --connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1 SET GLOBAL debug_dbug = "d,sync.wsrep_apply_cb"; --connection node_2 ---let $wait_condition = SELECT COUNT(*) = 1 FROM child; ---source include/wait_condition.inc DELETE FROM parent; --connection node_1a # wait until applier has reached the sync point SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached"; - --connection node_1 # issue conflicting write to child table, it should fail in certification --error ER_LOCK_DEADLOCK diff --git a/mysql-test/suite/galera/t/galera_flush_local.cnf b/mysql-test/suite/galera/t/galera_flush_local.cnf deleted file mode 100644 index c92cb58f484..00000000000 --- a/mysql-test/suite/galera/t/galera_flush_local.cnf +++ /dev/null @@ -1,12 +0,0 @@ -!include ../galera_2nodes.cnf - -[mysqld.1] -query_cache_type=1 -query_cache_size=1000000 -wsrep_replicate_myisam=ON - -[mysqld.2] -query_cache_type=1 -query_cache_size=1000000 -wsrep_replicate_myisam=ON - diff --git a/mysql-test/suite/galera/t/galera_forced_binlog_format.test b/mysql-test/suite/galera/t/galera_forced_binlog_format.test index 5da70abd255..786837239ed 100644 --- a/mysql-test/suite/galera/t/galera_forced_binlog_format.test +++ b/mysql-test/suite/galera/t/galera_forced_binlog_format.test @@ -7,9 +7,10 @@ --source include/galera_cluster.inc --connection node_1 -SET SESSION wsrep_on=OFF; +SET GLOBAL wsrep_on=OFF; RESET MASTER; -SET SESSION wsrep_on=ON; +SET GLOBAL wsrep_on=ON; +FLUSH BINARY LOGS; --disable_warnings SET SESSION binlog_format = 'STATEMENT'; @@ -46,6 +47,6 @@ REVOKE ALL PRIVILEGES, GRANT OPTION FROM dummy@localhost; DROP USER dummy@localhost; DROP DATABASE testdb_9401; ---source include/galera_end.inc +#--source include/galera_end.inc --echo # End of tests diff --git a/mysql-test/suite/galera/t/galera_ftwrl_drain.test b/mysql-test/suite/galera/t/galera_ftwrl_drain.test index 690e890cdea..ee64e147f65 100644 --- a/mysql-test/suite/galera/t/galera_ftwrl_drain.test +++ b/mysql-test/suite/galera/t/galera_ftwrl_drain.test @@ -12,7 +12,7 @@ --source include/galera_cluster.inc --source include/have_innodb.inc --source include/have_debug_sync.inc ---source suite/galera/include/galera_have_debug_sync.inc +--source include/galera_have_debug_sync.inc --connection node_1 CREATE TABLE t1 (id INT PRIMARY KEY) ENGINE=InnoDB; @@ -55,7 +55,7 @@ SET SESSION innodb_lock_wait_timeout=1; SET SESSION wait_timeout=1; --error ER_LOCK_WAIT_TIMEOUT -INSERT INTO t2 VALUES (2); +INSERT INTO t1 VALUES (2); --connection node_2a UNLOCK TABLES; diff --git a/mysql-test/suite/galera/t/galera_gcache_recover_full_gcache.test b/mysql-test/suite/galera/t/galera_gcache_recover_full_gcache.test index 0d8994f7d7b..6b3e56d8a0f 100644 --- a/mysql-test/suite/galera/t/galera_gcache_recover_full_gcache.test +++ b/mysql-test/suite/galera/t/galera_gcache_recover_full_gcache.test @@ -13,6 +13,14 @@ SET SESSION wsrep_sync_wait = 0; --source include/kill_galera.inc --connection node_1 + +# +# Wait until the configuration change is over in order to avoid +# replication error due to configuration change. +# +--let $wait_condition = SELECT VARIABLE_VALUE = 1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size' +--source include/wait_condition.inc + INSERT INTO t1 (f2) VALUES (REPEAT('x', 1024 * 1024 * 10)); INSERT INTO t1 (f2) VALUES (REPEAT('x', 1024 * 1024 * 10)); INSERT INTO t1 (f2) VALUES (REPEAT('x', 1024 * 1024 * 10)); diff --git a/mysql-test/suite/galera/t/galera_gcs_fc_limit.test b/mysql-test/suite/galera/t/galera_gcs_fc_limit.test index e0626bd8946..d73286dcba2 100644 --- a/mysql-test/suite/galera/t/galera_gcs_fc_limit.test +++ b/mysql-test/suite/galera/t/galera_gcs_fc_limit.test @@ -3,13 +3,16 @@ # --source include/galera_cluster.inc ---source include/have_innodb.inc +--source include/big_test.inc +--source include/force_restart.inc CREATE TABLE t1 (f1 INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,B INTEGER) ENGINE=InnoDB; INSERT INTO t1 VALUES (1,1); --connection node_2 -SET SESSION wsrep_sync_wait=15; +--let $wait_condition = SELECT COUNT(*)=1 FROM t1; +--source include/wait_condition.inc + SELECT COUNT(*) FROM t1; --let $wsrep_provider_options_orig = `SELECT @@wsrep_provider_options` @@ -53,5 +56,6 @@ SELECT COUNT(*) FROM t1; --disable_query_log --eval SET GLOBAL wsrep_provider_options = '$wsrep_provider_options_orig'; --enable_query_log +--source include/wait_until_connected_again.inc DROP TABLE t1; diff --git a/mysql-test/suite/galera/t/galera_gcs_fragment.test b/mysql-test/suite/galera/t/galera_gcs_fragment.test index 80d3a5cb659..d2593fec8c8 100644 --- a/mysql-test/suite/galera/t/galera_gcs_fragment.test +++ b/mysql-test/suite/galera/t/galera_gcs_fragment.test @@ -1,7 +1,7 @@ # Test fragmentation over configuration changes --source include/galera_cluster.inc --source include/have_innodb.inc ---source suite/galera/include/galera_have_debug_sync.inc +--source include/galera_have_debug_sync.inc # Save original auto_increment_offset values. --let $node_1=node_1 @@ -54,7 +54,7 @@ INSERT INTO t1 VALUES (2, "bbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa # Deadlock error should be returned since write set send was # interrupted by gcs --connection node_1 ---error ER_LOCK_DEADLOCK +--error ER_ERROR_DURING_COMMIT --reap # Do additional insert to verify that node_1 remain operational diff --git a/mysql-test/suite/galera/t/galera_gtid-master.opt b/mysql-test/suite/galera/t/galera_gtid-master.opt new file mode 100644 index 00000000000..30317469ae7 --- /dev/null +++ b/mysql-test/suite/galera/t/galera_gtid-master.opt @@ -0,0 +1 @@ +--log-bin --log-slave-updates --loose-new-servers-for-galera_gtid-test diff --git a/mysql-test/suite/galera/t/galera_gtid_slave.test b/mysql-test/suite/galera/t/galera_gtid_slave.test index 19bfd8e17db..df55ea03cb0 100644 --- a/mysql-test/suite/galera/t/galera_gtid_slave.test +++ b/mysql-test/suite/galera/t/galera_gtid_slave.test @@ -8,18 +8,19 @@ # --source include/have_innodb.inc - -# As node #1 is not a Galera node, we connect to node #2 in order to run include/galera_cluster.inc ---connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2 --source include/galera_cluster.inc +# As node #3 is not a Galera node, and galera_cluster.inc does not open connetion to it +# we open the node_3 connection here +--connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3 + --connection node_2 --disable_query_log ---eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='root', MASTER_PORT=$NODE_MYPORT_1; +--eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='root', MASTER_PORT=$NODE_MYPORT_3; --enable_query_log START SLAVE; ---connection node_1 +--connection node_3 CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; CREATE TABLE t2 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; INSERT INTO t1 VALUES(1); @@ -49,31 +50,43 @@ INSERT INTO t1 VALUES(2); INSERT INTO t1 VALUES(3); SELECT @@global.gtid_binlog_state; ---connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3 +--connection node_1 --let $wait_condition = SELECT COUNT(*) = 3 FROM t1; --source include/wait_condition.inc INSERT INTO t1 VALUES(4); SELECT @@global.gtid_binlog_state; ---connection node_1 +--connection node_3 DROP TABLE t1,t2; +# +# Unfortunately without the sleep below the following statement fails with "query returned no rows", which +# is difficult to understand given that it is an aggregate query. A "query execution was interrupted" +# warning is also reported by MTR, which is also weird. +# + +--sleep 1 + --connection node_2 --let $wait_condition = SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1'; --source include/wait_condition.inc ---connection node_3 +--connection node_1 --let $wait_condition = SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1'; --source include/wait_condition.inc --connection node_2 STOP SLAVE; RESET SLAVE ALL; +SET GLOBAL wsrep_on=OFF; reset master; +SET GLOBAL wsrep_on=ON; ---connection node_3 +--connection node_1 +SET GLOBAL wsrep_on=OFF; reset master; +SET GLOBAL wsrep_on=ON; ---connection node_1 +--connection node_3 reset master; diff --git a/mysql-test/suite/galera/t/galera_gtid_slave_sst_rsync.test b/mysql-test/suite/galera/t/galera_gtid_slave_sst_rsync.test index 3ed7ec1d09e..d03445d537a 100644 --- a/mysql-test/suite/galera/t/galera_gtid_slave_sst_rsync.test +++ b/mysql-test/suite/galera/t/galera_gtid_slave_sst_rsync.test @@ -8,21 +8,21 @@ --source include/big_test.inc --source include/have_innodb.inc -# As node #1 is not a Galera node, we connect to node #2 in order to run include/galera_cluster.inc ---connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2 --source include/galera_cluster.inc +# As node #3 is not a Galera node, and galera_cluster.inc does not open connetion to it +# we open the node_3 connection here +--connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3 --echo #Connection 2 --connection node_2 --disable_query_log ---eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='root', MASTER_PORT=$NODE_MYPORT_1,master_use_gtid=slave_pos; +--eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='root', MASTER_PORT=$NODE_MYPORT_3,master_use_gtid=slave_pos; --enable_query_log START SLAVE; --sleep 1 - ---echo #Connection 1 ---connection node_1 +--echo #Connection 3 +--connection node_3 CREATE TABLE t2 (f1 INTEGER PRIMARY KEY, f2 int unique) ENGINE=InnoDB; INSERT INTO t2 VALUES(1,11); INSERT INTO t2 VALUES(2,22); @@ -30,7 +30,6 @@ INSERT INTO t2 VALUES(3,33); SELECT @@global.gtid_binlog_state; --source include/save_master_gtid.inc - --echo #Connection 2 --connection node_2 --source include/sync_with_master_gtid.inc @@ -40,9 +39,8 @@ INSERT INTO t2 VALUES(4,44); INSERT INTO t2 VALUES(5,55); INSERT INTO t2 VALUES(6,66); SELECT @@global.gtid_binlog_state; - ---echo #Connection 3 ---connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3 +--echo #Connection 1 +--connection node_1 --let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME= 't2'; --source include/wait_condition.inc --let $wait_condition = SELECT COUNT(*) = 6 FROM t2; @@ -53,8 +51,8 @@ INSERT INTO t2 VALUES(8,88); SELECT @@global.gtid_binlog_state; #Perform SST ---echo #Connection 1 ---connection node_1 +--echo #Connection 3 +--connection node_3 CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB; SET AUTOCOMMIT=OFF; START TRANSACTION; @@ -62,7 +60,6 @@ INSERT INTO t1 VALUES ('node1_committed_before'); INSERT INTO t1 VALUES ('node1_committed_before'); COMMIT; --source include/save_master_gtid.inc - --echo #Connection 2 --connection node_2 --source include/sync_with_master_gtid.inc @@ -71,22 +68,21 @@ START TRANSACTION; INSERT INTO t1 VALUES ('node2_committed_before'); INSERT INTO t1 VALUES ('node2_committed_before'); COMMIT; - ---echo #Connection 3 ---connection node_3 +--echo #Connection 1 +--connection node_1 --let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME= 't1'; --source include/wait_condition.inc --let $wait_condition = SELECT COUNT(*) = 4 FROM t1; --source include/wait_condition.inc ---let $node_1= node_2 ---let $node_2= node_3 +--let $node_1= node_1 +--let $node_2= node_2 --source include/auto_increment_offset_save.inc ---echo Shutting down server ... ---source include/shutdown_mysqld.inc - - --echo #Connection 2 --connection node_2 +--echo Shutting down server ... +--source include/shutdown_mysqld.inc +--echo #Connection 1 +--connection node_1 --let $wait_condition = SELECT VARIABLE_VALUE = 1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size' --source include/wait_condition.inc SET AUTOCOMMIT=OFF; @@ -94,51 +90,46 @@ START TRANSACTION; INSERT INTO t1 VALUES ('node1_committed_during'); INSERT INTO t1 VALUES ('node1_committed_during'); COMMIT; - ---echo #Connection 3 ---connection node_3 +--echo #Connection 2 +--connection node_2 --echo Starting server ... --source include/start_mysqld.inc + --source include/wait_until_ready.inc --source include/auto_increment_offset_restore.inc SET AUTOCOMMIT=OFF; START TRANSACTION; -INSERT INTO t1 VALUES ('node3_committed_after'); -INSERT INTO t1 VALUES ('node3_committed_after'); +INSERT INTO t1 VALUES ('node2_committed_after'); +INSERT INTO t1 VALUES ('node2_committed_after'); COMMIT; - ---echo #Connection 2 ---connection node_2 +--echo #Connection 1 +--connection node_1 --let $wait_condition = SELECT COUNT(*) = 8 FROM t1; --source include/wait_condition.inc Select * from t1 order by f1; - ---echo #Connection 3 ---connection node_3 +--echo #Connection 2 +--connection node_2 Select * from t1 order by f1; #SST Done --sleep 1 +--echo #Connection 1 +--connection node_1 +SELECT @@global.gtid_binlog_state; --echo #Connection 2 --connection node_2 SELECT @@global.gtid_binlog_state; - --echo #Connection 3 --connection node_3 -SELECT @@global.gtid_binlog_state; - ---echo #Connection 1 ---connection node_1 SET AUTOCOMMIT=ON; #drop table t1; #CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB; - --echo #Connection 2 --connection node_2 SET AUTOCOMMIT=ON; ---echo #Connection 3 ---connection node_3 +--echo #Connection 1 +--connection node_1 SET AUTOCOMMIT=ON; # @@ -148,10 +139,9 @@ SET AUTOCOMMIT=ON; STOP slave; --sleep 1 INSERT INTO t1 VALUES ('node2_slave_stoped'); - ---echo #Connection 1 ---connection node_1 -INSERT INTO t1 VALUES ('node1_normal_entry'); +--echo #Connection 3 +--connection node_3 +INSERT INTO t1 VALUES ('node3_normal_entry'); --source include/save_master_gtid.inc #start slave @@ -163,16 +153,14 @@ start slave; INSERT INTO t1 VALUES ('node2_slave_started'); SELECT count(*) from t1; SELECT @@global.gtid_binlog_state; - ---echo #Connection 3 ---connection node_3 +--echo #Connection 1 +--connection node_1 --let $wait_condition = SELECT COUNT(*) = 12 FROM t1; --source include/wait_condition.inc SELECT count(*) from t1; SELECT @@global.gtid_binlog_state; - ---echo #Connection 1 ---connection node_1 +--echo #Connection 3 +--connection node_3 DROP TABLE t2,t1; # Unfortunately without the sleep below the following statement fails with "query returned no rows", which @@ -181,30 +169,31 @@ DROP TABLE t2,t1; # --sleep 3 - --echo #Connection 2 --connection node_2 --let $wait_condition = SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't2'; --source include/wait_condition.inc - ---echo #Connection 3 ---connection node_3 +--echo #Connection 1 +--connection node_1 --let $wait_condition = SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1'; --source include/wait_condition.inc - --echo #Connection 2 --connection node_2 STOP SLAVE; RESET SLAVE ALL; +set global wsrep_on=OFF; +reset master; +set global wsrep_on=ON; + --disable_warnings set global gtid_slave_pos=""; --enable_warnings -reset master; - ---echo #Connection 3 ---connection node_3 -reset master; --echo #Connection 1 --connection node_1 +set global wsrep_on=OFF; +reset master; +set global wsrep_on=ON; +--echo #Connection 3 +--connection node_3 reset master; diff --git a/mysql-test/suite/galera/t/galera_ist_mariabackup.cnf b/mysql-test/suite/galera/t/galera_ist_mariabackup.cnf index 75dff78149d..2392071ccfe 100644 --- a/mysql-test/suite/galera/t/galera_ist_mariabackup.cnf +++ b/mysql-test/suite/galera/t/galera_ist_mariabackup.cnf @@ -10,3 +10,6 @@ wsrep_provider_options='base_port=@mysqld.1.#galera_port;pc.ignore_sb=true' [mysqld.2] wsrep_provider_options='base_port=@mysqld.2.#galera_port;pc.ignore_sb=true' +[sst] +transferfmt=@ENV.MTR_GALERA_TFMT +streamfmt=xbstream diff --git a/mysql-test/suite/galera/t/galera_ist_mariabackup_innodb_flush_logs.cnf b/mysql-test/suite/galera/t/galera_ist_mariabackup_innodb_flush_logs.cnf index 1542376b2b8..e98f37654cc 100644 --- a/mysql-test/suite/galera/t/galera_ist_mariabackup_innodb_flush_logs.cnf +++ b/mysql-test/suite/galera/t/galera_ist_mariabackup_innodb_flush_logs.cnf @@ -12,3 +12,6 @@ wsrep_provider_options='base_port=@mysqld.1.#galera_port;pc.ignore_sb=true' [mysqld.2] wsrep_provider_options='base_port=@mysqld.2.#galera_port;pc.ignore_sb=true' +[sst] +transferfmt=@ENV.MTR_GALERA_TFMT +streamfmt=xbstream diff --git a/mysql-test/suite/galera/t/galera_ist_progress.test b/mysql-test/suite/galera/t/galera_ist_progress.test index 3ba63415c28..3d7c53bd1eb 100644 --- a/mysql-test/suite/galera/t/galera_ist_progress.test +++ b/mysql-test/suite/galera/t/galera_ist_progress.test @@ -5,6 +5,7 @@ --source include/galera_cluster.inc # This could cause out of storage if run /dev/shm --source include/big_test.inc +--source include/force_restart.inc # Isolate node #2 --connection node_2 @@ -58,16 +59,16 @@ SET GLOBAL wsrep_provider_options = 'gmcast.isolate = 0'; --let $assert_file = $MYSQLTEST_VARDIR/log/mysqld.2.err --let $assert_only_after = Need state transfer ---let $assert_text = Receiving IST: 11 writesets, seqnos ---let $assert_select = Receiving IST: 11 writesets, seqnos +--let $assert_text = Receiving IST: 13 writesets, seqnos 3-15 +--let $assert_select = Receiving IST: 13 writesets, seqnos 3-15 --source include/assert_grep.inc ---let $assert_text = Receiving IST\.\.\. 0\.0% \( 0/11 events\) complete ---let $assert_select = Receiving IST\.\.\. 0\.0% \( 0/11 events\) complete +--let $assert_text = Receiving IST\.\.\. 0\.0% \( 0/13 events\) complete +--let $assert_select = Receiving IST\.\.\. 0\.0% \( 0/13 events\) complete --source include/assert_grep.inc ---let $assert_text = Receiving IST\.\.\.100\.0% \(11/11 events\) complete ---let $assert_select = Receiving IST\.\.\.100\.0% \(11/11 events\) complete +--let $assert_text = Receiving IST\.\.\.100\.0% \(13/13 events\) complete +--let $assert_select = Receiving IST\.\.\.100\.0% \(13/13 events\) complete --source include/assert_grep.inc # Cleanup diff --git a/mysql-test/suite/galera/t/galera_ist_restart_joiner.test b/mysql-test/suite/galera/t/galera_ist_restart_joiner.test index 633318629a6..42f210170bc 100644 --- a/mysql-test/suite/galera/t/galera_ist_restart_joiner.test +++ b/mysql-test/suite/galera/t/galera_ist_restart_joiner.test @@ -7,7 +7,7 @@ --source include/galera_cluster.inc --source include/have_innodb.inc --source include/have_debug_sync.inc ---source suite/galera/include/galera_have_debug_sync.inc +--source include/galera_have_debug_sync.inc # This could cause out of storage if run /dev/shm --source include/big_test.inc @@ -43,8 +43,6 @@ UPDATE t1 SET f2 = 'c' WHERE f1 > 2; # ... and restart provider to force IST --echo Loading wsrep_provider ... --disable_query_log -# base_port setting is lost for some reason when unloading provider, so we need to restore it ---eval SET GLOBAL wsrep_provider_options= 'base_port=$NODE_GALERAPORT_2'; --eval SET GLOBAL wsrep_provider = '$wsrep_provider_orig'; # Make sure IST will block ... --let $galera_sync_point = recv_IST_after_apply_trx diff --git a/mysql-test/suite/galera/t/galera_last_committed_id.test b/mysql-test/suite/galera/t/galera_last_committed_id.test new file mode 100644 index 00000000000..550838cdcd9 --- /dev/null +++ b/mysql-test/suite/galera/t/galera_last_committed_id.test @@ -0,0 +1,68 @@ +# +# Tests functions WSREP_LAST_WRITTEN_GTID and WSREP_LAST_SEEN_GTID +# + +--source include/galera_cluster.inc + +# Returns -1 if no transactions have been run + +SELECT WSREP_LAST_WRITTEN_GTID() = '00000000-0000-0000-0000-000000000000:-1'; + +--disable_query_log +--let $seqno = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_last_committed'` +--let $state = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_state_uuid'` +--eval SELECT WSREP_LAST_SEEN_GTID() = '$state:$seqno' AS wsrep_last_committed_id_match; +--enable_query_log + +# WSREP_LAST_WRITTEN_GTID() should not be influenced by transactions committed +# on other connections + +--connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1 +--connection node_1a +CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB; +INSERT INTO t1 VALUES (1); + +--connection node_1 +SELECT WSREP_LAST_WRITTEN_GTID() = '00000000-0000-0000-0000-000000000000:-1'; + +# WSREP_LAST_SEEN_GTID() should be influenced by transactions committed +# on other connections + +--connection node_1a +INSERT INTO t1 VALUES (1); +--disable_query_log +--let $wsrep_last_committed_id_conn_1a = `SELECT WSREP_LAST_SEEN_GTID()` +--enable_query_log + +--connection node_1 +--disable_query_log +--eval SELECT WSREP_LAST_SEEN_GTID() = '$wsrep_last_committed_id_conn_1a' AS wsrep_last_committed_id_match; +--enable_query_log + +# Should not advance while a transaction is in progress + +SET AUTOCOMMIT=OFF; +START TRANSACTION; +SELECT WSREP_LAST_WRITTEN_GTID() = '00000000-0000-0000-0000-000000000000:-1'; + +--disable_query_log +--let $wsrep_last_committed_id_before = `SELECT WSREP_LAST_SEEN_GTID()` +--enable_query_log +INSERT INTO t1 VALUES (1); +SELECT WSREP_LAST_WRITTEN_GTID() = '00000000-0000-0000-0000-000000000000:-1'; +--disable_query_log +--eval SELECT WSREP_LAST_SEEN_GTID() = '$wsrep_last_committed_id_before' AS wsrep_last_committed_id_match; +--enable_query_log + +# Should only advance after the transaction has been committed + +COMMIT; +--disable_query_log +--let $seqno = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_last_committed'` +--let $state = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_state_uuid'` +--eval SELECT WSREP_LAST_WRITTEN_GTID() = '$state:$seqno' AS wsrep_last_committed_id_advanced; +--eval SELECT WSREP_LAST_SEEN_GTID() = '$state:$seqno' AS wsrep_last_committed_id_advanced; +--enable_query_log +SET AUTOCOMMIT=ON; + +DROP TABLE t1; diff --git a/mysql-test/suite/galera/t/galera_load_data.test b/mysql-test/suite/galera/t/galera_load_data.test index 183095492fa..c37920a43c4 100644 --- a/mysql-test/suite/galera/t/galera_load_data.test +++ b/mysql-test/suite/galera/t/galera_load_data.test @@ -37,6 +37,13 @@ ALTER TABLE cardtest_tbl ENABLE KEYS; UNLOCK TABLES; use cardtest02; +--sleep 20 + +let $cardinality1 = `SELECT cardinality from information_schema.statistics WHERE TABLE_NAME = 'cardtest_tbl'`; +let $table_rows1 = `SELECT table_rows from information_schema.tables WHERE TABLE_NAME = 'cardtest_tbl'`; +let $avg_row_length1 = `SELECT avg_row_length from information_schema.tables WHERE TABLE_NAME = 'cardtest_tbl'`; +let $data_length1 = `SELECT data_length from information_schema.tables WHERE TABLE_NAME = 'cardtest_tbl'`; + --let $wait_timeout=600 --let $wait_condition = SELECT COUNT(*) = 301 from cardtest_tbl; --source include/wait_condition.inc diff --git a/mysql-test/suite/galera/t/galera_lock_tables_in_transaction.test b/mysql-test/suite/galera/t/galera_lock_tables_in_transaction.test new file mode 100644 index 00000000000..5cb7347639c --- /dev/null +++ b/mysql-test/suite/galera/t/galera_lock_tables_in_transaction.test @@ -0,0 +1,21 @@ +# +# Check `LOCK TABLES` command with or without existing table in database. +# Test case for MDEV-22222 / MDEV-22223 +# + +--source include/galera_cluster.inc +--source include/have_innodb.inc + +CREATE TABLE t1 (a INT) ENGINE=InnoDB; + +START TRANSACTION; +INSERT INTO t1 VALUES (1); +--error ER_NO_SUCH_TABLE +LOCK TABLES t2 READ; + +START TRANSACTION; +INSERT INTO t1 VALUES (1); +LOCK TABLES t1 READ; +UNLOCK TABLES; + +DROP TABLE t1; diff --git a/mysql-test/suite/galera/t/galera_log_bin.test b/mysql-test/suite/galera/t/galera_log_bin.test index f1d2a12b9de..cc78367b510 100644 --- a/mysql-test/suite/galera/t/galera_log_bin.test +++ b/mysql-test/suite/galera/t/galera_log_bin.test @@ -2,9 +2,13 @@ --source include/force_restart.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; # # Test Galera with --log-bin --log-slave-updates . @@ -38,5 +42,5 @@ DROP TABLE t2; --echo #cleanup --connection node_1 +SET GLOBAL wsrep_on=OFF; RESET MASTER; - diff --git a/mysql-test/suite/galera/t/galera_multirow_rollback.combinations b/mysql-test/suite/galera/t/galera_multirow_rollback.combinations new file mode 100644 index 00000000000..1ce3b45aa1a --- /dev/null +++ b/mysql-test/suite/galera/t/galera_multirow_rollback.combinations @@ -0,0 +1,4 @@ +[binlogon] +log-bin + +[binlogoff] diff --git a/mysql-test/suite/galera/t/galera_multirow_rollback.test b/mysql-test/suite/galera/t/galera_multirow_rollback.test new file mode 100644 index 00000000000..a5aaedd8bd4 --- /dev/null +++ b/mysql-test/suite/galera/t/galera_multirow_rollback.test @@ -0,0 +1,89 @@ +# +# Test multirow insert rollback +# + +--source include/galera_cluster.inc + +# +# Case 1: error on multirow insert results in empty transaction +# +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY DEFAULT 0, f2 char(12)); + +--connection node_1 +START TRANSACTION; +--error ER_DUP_ENTRY +INSERT INTO t1 (f2) VALUES ('a'), ('b'); +COMMIT; + +SELECT COUNT(*) AS expect_0 FROM t1; + +--connection node_2 +SELECT COUNT(*) AS expect_0 FROM t1; + +DROP TABLE t1; + + +# +# Case 2: error on multirow insert does not affect previous statements +# +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY DEFAULT 0, f2 char(12)); + +--connection node_1 +START TRANSACTION; +INSERT INTO t1 VALUES (1, 'a'); +INSERT INTO t1 VALUES (2, 'b'); +--error ER_DUP_ENTRY +INSERT INTO t1 (f2) VALUES ('c'), ('d'); +COMMIT; + +--echo expect (1,'a'), (2, 'b') +SELECT * FROM t1; + +--connection node_2 +--echo expect (1,'a'), (2, 'b') +SELECT * FROM t1; + +DROP TABLE t1; + + +# +# Case 3: error on autocommit multirow insert +# +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY DEFAULT 0, f2 char(12)); + +--connection node_1 +--error ER_DUP_ENTRY +INSERT INTO t1 (f2) VALUES ('a'),('b'); + +SELECT COUNT(*) AS expect_0 FROM t1; + +--connection node_2 +SELECT COUNT(*) AS expect_0 FROM t1; + +DROP TABLE t1; + + +# +# Case 4: FK constraint violation on multirow insert +# +--connection node_1 +CREATE TABLE p(id int primary key, j int) ENGINE=InnoDB; +CREATE TABLE c(id int primary key, fk1 int) ENGINE=InnoDB; +ALTER TABLE c ADD FOREIGN KEY (fk1) references p(id); +INSERT INTO p VALUES(1, 0); + +START TRANSACTION; +INSERT INTO c VALUES (3,1); +--error ER_NO_REFERENCED_ROW_2 +INSERT INTO c VALUES (1,1), (2,2); +COMMIT; + +SELECT * FROM p; +SELECT * FROM c; + +--connection node_2 +SELECT * FROM p; +SELECT * FROM c; + +DROP TABLE c; +DROP TABLE p; diff --git a/mysql-test/suite/galera/t/galera_parallel_apply_lock_table.test b/mysql-test/suite/galera/t/galera_parallel_apply_lock_table.test index 08ed3fac67e..5a33c16c86e 100644 --- a/mysql-test/suite/galera/t/galera_parallel_apply_lock_table.test +++ b/mysql-test/suite/galera/t/galera_parallel_apply_lock_table.test @@ -32,8 +32,8 @@ INSERT INTO t2 VALUES (1); --connection node_2a --sleep 1 SET SESSION wsrep_sync_wait=0; -SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE STATE LIKE '%applied write set%'; -SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE STATE LIKE 'Waiting for table metadata lock'; +SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE STATE LIKE '%committing%'; +SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE STATE LIKE '%Waiting for table metadata lock%'; SELECT COUNT(*) = 0 FROM t1; SELECT COUNT(*) = 0 FROM t2; @@ -44,7 +44,7 @@ UNLOCK TABLES; --eval SET SESSION wsrep_sync_wait = $wsrep_sync_wait_orig; SELECT COUNT(*) = 1 FROM t1; SELECT COUNT(*) = 1 FROM t2; -SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE STATE LIKE 'committed%'; +SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE STATE LIKE '%committed%'; --eval SET GLOBAL wsrep_slave_threads = $wsrep_slave_threads_orig; DROP TABLE t1; diff --git a/mysql-test/suite/galera/t/galera_parallel_autoinc_largetrx.test b/mysql-test/suite/galera/t/galera_parallel_autoinc_largetrx.test index adabb4def00..df0200fab55 100644 --- a/mysql-test/suite/galera/t/galera_parallel_autoinc_largetrx.test +++ b/mysql-test/suite/galera/t/galera_parallel_autoinc_largetrx.test @@ -37,9 +37,18 @@ SET GLOBAL wsrep_slave_threads = 4; --connection node_1 --reap +--let $wait_condition = select count(*)=30000 from t1; +--source include/wait_condition.inc + +SELECT COUNT(*) FROM t1; +SELECT COUNT(DISTINCT f1) FROM t1; --connection node_1a --reap +--let $wait_condition = select count(*)=30000 from t1; +--source include/wait_condition.inc +SELECT COUNT(*) FROM t1; +SELECT COUNT(DISTINCT f1) FROM t1; --connection node_2 --reap diff --git a/mysql-test/suite/galera/t/galera_parallel_simple.test b/mysql-test/suite/galera/t/galera_parallel_simple.test index 2cd840123cf..d49dc0ae876 100644 --- a/mysql-test/suite/galera/t/galera_parallel_simple.test +++ b/mysql-test/suite/galera/t/galera_parallel_simple.test @@ -12,7 +12,6 @@ CREATE TABLE t1 (id INT) ENGINE=InnoDB; CREATE TABLE t2 (id INT) ENGINE=InnoDB; --connection node_2 -SET GLOBAL wsrep_slave_threads = 2; # Wait until above DDL's are replicated --let $wait_condition = SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME LIKE 'test/t%'; @@ -20,6 +19,8 @@ SET GLOBAL wsrep_slave_threads = 2; SELECT NAME FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME LIKE 'test/t%'; +SET GLOBAL wsrep_slave_threads = 2; + LOCK TABLE t1 WRITE; --connection node_1 @@ -38,8 +39,11 @@ INSERT INTO t2 VALUES (1); INSERT INTO t1 VALUES (1); INSERT INTO t2 VALUES (1); -INSERT INTO t1 VALUES (1); -INSERT INTO t2 VALUES (1); +INSERT INTO t1 select * from t1; +INSERT INTO t2 select * from t2; + +INSERT INTO t1 select * from t1; +INSERT INTO t2 select * from t2; --connection node_2 SET SESSION wsrep_sync_wait = 0; @@ -47,15 +51,15 @@ SET SESSION wsrep_sync_wait = 0; --let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE STATE LIKE 'Waiting for table metadata lock%'; --source include/wait_condition.inc ---let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE STATE LIKE 'applied write set%'; +--let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE STATE LIKE 'committing%'; --source include/wait_condition.inc UNLOCK TABLES; SET SESSION wsrep_sync_wait = 15; -SELECT COUNT(*) = 10 FROM t1; -SELECT COUNT(*) = 10 FROM t2; +SELECT COUNT(*) as expect_20 FROM t1; +SELECT COUNT(*) as expect_20 FROM t2; --eval SET GLOBAL wsrep_slave_threads = $wsrep_slave_threads_orig; diff --git a/mysql-test/suite/galera/t/galera_partition.test b/mysql-test/suite/galera/t/galera_partition.test index 66b2a5c10f6..bf3f02eaa92 100644 --- a/mysql-test/suite/galera/t/galera_partition.test +++ b/mysql-test/suite/galera/t/galera_partition.test @@ -1,5 +1,6 @@ --source include/galera_cluster.inc --source include/have_partition.inc +--source include/big_test.inc --connection node_1 @@ -406,16 +407,16 @@ insert into t1 (id, dt) values (350, '2010-12-17 00:00:00'); SELECT COUNT(*) FROM t1; --connection node_2 -call mtr.add_suppression("WSREP: Sending JOIN failed:.*"); ---send call p1(100); +call mtr.add_suppression("WSREP: Sending JOIN failed:"); +send call p1(10); --connection node_3 -call mtr.add_suppression("WSREP: Sending JOIN failed:.*"); ---send call p1(100); +call mtr.add_suppression("WSREP: Sending JOIN failed:"); +send call p1(10); --connection node_4 -call mtr.add_suppression("WSREP: Sending JOIN failed:.*"); ---send call p1(100); +call mtr.add_suppression("WSREP: Sending JOIN failed:"); +send call p1(10); --connection node_1 SET SESSION wsrep_OSU_method='RSU'; diff --git a/mysql-test/suite/galera/t/galera_pc_recovery.test b/mysql-test/suite/galera/t/galera_pc_recovery.test new file mode 100644 index 00000000000..1621414aff5 --- /dev/null +++ b/mysql-test/suite/galera/t/galera_pc_recovery.test @@ -0,0 +1,102 @@ +# +# Test the pc.recovery=1 option. Killing all nodes simultaneously and +# restarting them should succeed and the cluster should re-form. +# + +--source include/have_innodb.inc +--source include/galera_cluster.inc +--source include/big_test.inc + +# Save galera ports +--connection node_1 +--source suite/galera/include/galera_base_port.inc +--let $NODE_GALERAPORT_1 = $_NODE_GALERAPORT + +--connection node_2 +--source suite/galera/include/galera_base_port.inc +--let $NODE_GALERAPORT_2 = $_NODE_GALERAPORT + +--connection node_1 +CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB; +INSERT INTO t1 VALUES (1); + +# Instruct MTR to not restart the nodes automatically when they are killed + +--let $NODE_1_PIDFILE = `SELECT @@pid_file` +--connection node_2 +SELECT COUNT(*) = 1 FROM t1; +--let $NODE_2_PIDFILE = `SELECT @@pid_file` + +--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect +--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.2.expect +--exec kill -9 `cat $NODE_1_PIDFILE` `cat $NODE_2_PIDFILE` + +# Perform --wsrep-recover and preserve the positions into variables by placing them in $MYSQL_TMP_DIR/galera_wsrep_start_position.inc and then --source'ing it + +--exec $MYSQLD --defaults-group-suffix=.1 --defaults-file=$MYSQLTEST_VARDIR/my.cnf --wsrep-recover --log-error=$MYSQL_TMP_DIR/galera_wsrep_recover.1.log > $MYSQL_TMP_DIR/galera_wsrep_recover.1.log 2>&1 +--exec $MYSQLD --defaults-group-suffix=.2 --defaults-file=$MYSQLTEST_VARDIR/my.cnf --wsrep-recover --log-error=$MYSQL_TMP_DIR/galera_wsrep_recover.2.log > $MYSQL_TMP_DIR/galera_wsrep_recover.2.log 2>&1 + +--perl + use strict; + my $wsrep_start_position1 = `grep 'WSREP: Recovered position:' $ENV{MYSQL_TMP_DIR}/galera_wsrep_recover.1.log | sed 's/.*WSREP\:\ Recovered\ position://' | sed 's/^[ \t]*//'`; + chomp($wsrep_start_position1); + + my $wsrep_start_position2 = `grep 'WSREP: Recovered position:' $ENV{MYSQL_TMP_DIR}/galera_wsrep_recover.2.log | sed 's/.*WSREP\:\ Recovered\ position://' | sed 's/^[ \t]*//'`; + chomp($wsrep_start_position2); + + die if $wsrep_start_position1 eq '' || $wsrep_start_position2 eq ''; + + open(FILE, ">", "$ENV{MYSQL_TMP_DIR}/galera_wsrep_start_position.inc") or die; + print FILE "--let \$galera_wsrep_start_position1 = $wsrep_start_position1\n"; + print FILE "--let \$galera_wsrep_start_position2 = $wsrep_start_position2\n"; + close FILE; +EOF + +--source $MYSQL_TMP_DIR/galera_wsrep_start_position.inc + +if ($galera_wsrep_start_position1 == '') { + --die "Could not obtain wsrep_start_position." +} + +if ($galera_wsrep_start_position2 == '') { + --die "Could not obtain wsrep_start_position." +} + +--remove_file $MYSQL_TMP_DIR/galera_wsrep_start_position.inc + +# Instruct MTR to perform the actual restart using --wsrep-start-position . Proper --wsrep_cluster_address is used as my.cnf only contains 'gcomm://' for node #1 + +--exec echo "restart: --wsrep-start-position=$galera_wsrep_start_position1 --wsrep_cluster_address=gcomm://127.0.0.1:$NODE_GALERAPORT_1,127.0.0.1:$NODE_GALERAPORT_2" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect +--exec echo "restart: --wsrep-start-position=$galera_wsrep_start_position2 --wsrep_cluster_address=gcomm://127.0.0.1:$NODE_GALERAPORT_1,127.0.0.1:$NODE_GALERAPORT_2" > $MYSQLTEST_VARDIR/tmp/mysqld.2.expect + +--sleep 5 +--connection node_1 +--enable_reconnect +--source include/wait_until_connected_again.inc + +# Confirm that the cluster has re-formed and data is present + +--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size' +--source include/wait_condition.inc + +SELECT VARIABLE_VALUE = 'Primary' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status'; +SELECT COUNT(*) = 1 FROM t1; + +--connection node_2 +--enable_reconnect +--source include/wait_until_connected_again.inc +SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'; +SELECT VARIABLE_VALUE = 'Primary' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status'; +SELECT COUNT(*) = 1 FROM t1; + +DROP TABLE t1; + +--connection node_1 +CALL mtr.add_suppression("points to own listening address, blacklisting"); +CALL mtr.add_suppression("non weight changing install in S_PRIM"); +CALL mtr.add_suppression("No re-merged primary component found"); + +--connection node_2 +CALL mtr.add_suppression("points to own listening address, blacklisting"); +CALL mtr.add_suppression("non weight changing install in S_PRIM"); +CALL mtr.add_suppression("No re-merged primary component found"); diff --git a/mysql-test/suite/galera/t/galera_set_position_after_cert_failure.test b/mysql-test/suite/galera/t/galera_set_position_after_cert_failure.test new file mode 100644 index 00000000000..4dfddb0f32a --- /dev/null +++ b/mysql-test/suite/galera/t/galera_set_position_after_cert_failure.test @@ -0,0 +1,98 @@ +# +# Check that wsrep position is updated in innodb after +# a local certification failure. +# + +--source include/galera_cluster.inc +--source include/have_debug_sync.inc + +--let $node_1=node_1 +--let $node_2=node_2 +--source include/auto_increment_offset_save.inc + +# +# Cause a certification failure. The INSERT on node_2 will fail certification, +# and it is going to be the last event before shutting down node_2. +# +--connection node_2 +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY, f2 CHAR(255)) Engine=InnoDB; +SET GLOBAL wsrep_slave_threads = 2; +SET GLOBAL DEBUG_DBUG = "d,sync.wsrep_apply_cb"; + +--let $expected_cert_failures = `SELECT VARIABLE_VALUE + 1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_cert_failures'` + +--connection node_1 +--send INSERT INTO t1 VALUES (1, 'node_1'); + +--connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2 +--connection node_2a +SET DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached"; + +--connection node_2 +SET SESSION wsrep_sync_wait = 0; +SET SESSION wsrep_retry_autocommit = 0; + +--send INSERT INTO t1 VALUES (1, 'node_2'); + +--connection node_2a +SET SESSION wsrep_sync_wait = 0; +--let $wait_condition = SELECT VARIABLE_VALUE = $expected_cert_failures FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_cert_failures' +--source include/wait_condition.inc + +SET DEBUG_SYNC = "now SIGNAL signal.wsrep_apply_cb"; + +--connection node_2 +--error ER_LOCK_DEADLOCK +--reap + +--connection node_1 +--reap + +--connection node_2a +SET GLOBAL DEBUG_DBUG = ""; +SET DEBUG_SYNC = "RESET"; + +# +# Keep track of the current position in variable $expected_position +# +--let $expected_position_uuid = `SELECT VARIABLE_VALUE FROM information_schema.global_status WHERE VARIABLE_NAME = 'wsrep_local_state_uuid'` +--let $expected_position_seqno = `SELECT VARIABLE_VALUE FROM information_schema.global_status WHERE VARIABLE_NAME = 'wsrep_last_committed'` + +--let $expected_position = $expected_position_uuid:$expected_position_seqno +--disconnect node_2a + +# +# Shutdown node 2 +# +--connection node_2 +--source include/shutdown_mysqld.inc + +--connection node_1 +SET SESSION wsrep_sync_wait = 0; +--let $wait_condition = SELECT VARIABLE_VALUE = 1 FROM information_schema.global_status WHERE VARIABLE_NAME = 'wsrep_cluster_size'; +--source include/wait_condition.inc + +# +# Check that start position matches the position we recorded +# before shutdown in $expected_position +# +--let $galera_wsrep_recover_server_id = 2 +--source suite/galera/include/galera_wsrep_recover.inc + +if ($galera_wsrep_start_position != $expected_position) +{ + --exec echo "expected position $expected_position" + --exec echo "recover position $galera_wsrep_start_position" + die("Expected position and recover position did not match"); +} + +# +# Restart node 2 and cleanup +# +--connection node_2 +--source include/start_mysqld.inc + +--connection node_1 +DROP TABLE t1; +SET GLOBAL wsrep_slave_threads = DEFAULT; +--source include/auto_increment_offset_restore.inc diff --git a/mysql-test/suite/galera/t/galera_set_position_after_dummy_writeset.test b/mysql-test/suite/galera/t/galera_set_position_after_dummy_writeset.test new file mode 100644 index 00000000000..76f6d98168e --- /dev/null +++ b/mysql-test/suite/galera/t/galera_set_position_after_dummy_writeset.test @@ -0,0 +1,101 @@ +# +# Check that wsrep position is updated in innodb after +# a dummy write set is applied. +# + +--source include/galera_cluster.inc +--source include/have_debug.inc +--source include/have_debug_sync.inc +--source include/galera_have_debug_sync.inc + +--let $node_1=node_1 +--let $node_2=node_2 +--source include/auto_increment_offset_save.inc + +# +# Cause a certification failure. The INSERT on in node_1 will fail certification, +# and will result in a dummy writeset on node_2. This is going to be the last +# writeset before shutting down node_2. +# +--connection node_1 +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY, f2 CHAR(255)) Engine=InnoDB; +SET GLOBAL wsrep_slave_threads = 2; +SET GLOBAL DEBUG_DBUG = "d,sync.wsrep_apply_cb"; + +--let $expected_cert_failures = `SELECT VARIABLE_VALUE + 1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_cert_failures'` + +--connection node_2 +--send INSERT INTO t1 VALUES (1, 'node_2'); + +--connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1 +--connection node_1a +SET SESSION wsrep_sync_wait=0; +SET DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached"; + +--connection node_1 +SET SESSION wsrep_sync_wait = 0; +SET SESSION wsrep_retry_autocommit = 0; + +--send INSERT INTO t1 VALUES (1, 'node_1'); + +--connection node_1a +--let $wait_condition = SELECT VARIABLE_VALUE = $expected_cert_failures FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_cert_failures' +--source include/wait_condition.inc + +SET GLOBAL DEBUG_DBUG = ""; +SET DEBUG_SYNC = "now SIGNAL signal.wsrep_apply_cb"; + +--connection node_1 +--error ER_LOCK_DEADLOCK +--reap + +--connection node_2 +--reap + +# +# Keep track of the current position in variable $expected_position +# +--let $expected_position_uuid = `SELECT VARIABLE_VALUE FROM information_schema.global_status WHERE VARIABLE_NAME = 'wsrep_local_state_uuid'` +--let $expected_position_seqno = `SELECT VARIABLE_VALUE FROM information_schema.global_status WHERE VARIABLE_NAME = 'wsrep_last_committed'` + +--let $expected_position = $expected_position_uuid:$expected_position_seqno + +# +# Shutdown node 2 +# +--connection node_2 +--source include/shutdown_mysqld.inc + +--connection node_1 +SET SESSION wsrep_sync_wait = 0; +--let $wait_condition = SELECT VARIABLE_VALUE = 1 FROM information_schema.global_status WHERE VARIABLE_NAME = 'wsrep_cluster_size'; +--source include/wait_condition.inc + +# +# Check that start position matches the position we recorded +# before shutdown in $expected_position +# +--let $galera_wsrep_recover_server_id = 2 +--source suite/galera/include/galera_wsrep_recover.inc + +if ($galera_wsrep_start_position != $expected_position) +{ + --exec echo "expected position $expected_position" + --exec echo "recover position $galera_wsrep_start_position" + die("Expected position and recover position did not match"); +} + +# +# Restart the node 2 and cleanup +# +--connection node_2 +--source include/start_mysqld.inc + +--connection node_1 +DROP TABLE t1; +SET GLOBAL wsrep_slave_threads = DEFAULT; +--source include/auto_increment_offset_restore.inc + +--connection node_1a +SET GLOBAL DEBUG_DBUG=NULL; +SET DEBUG_SYNC = "RESET"; diff --git a/mysql-test/suite/galera/t/galera_slave_replay.test b/mysql-test/suite/galera/t/galera_slave_replay.test index b3bdaeaa532..f1500eeaeaa 100644 --- a/mysql-test/suite/galera/t/galera_slave_replay.test +++ b/mysql-test/suite/galera/t/galera_slave_replay.test @@ -7,6 +7,7 @@ # --source include/have_innodb.inc +--source include/have_log_bin.inc --source include/have_debug.inc --source include/have_debug_sync.inc --source include/galera_have_debug_sync.inc @@ -17,9 +18,10 @@ --source include/galera_cluster.inc # -# node 1 is native MariaDB server operating as async replication master +# node 3 is native MariaDB server operating as async replication master # ---connection node_1 +--connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3 +--connection node_3 RESET MASTER; --connection node_2a @@ -30,14 +32,14 @@ RESET MASTER; # -# nodes 2 and 3 form a galera cluster, node 2 operates as slave for native MariaDB naster in node 1 +# nodes 1 and 2 form a galera cluster, node 2 operates as slave for native MariaDB master in node 3 # --disable_query_log ---eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='root', MASTER_PORT=$NODE_MYPORT_1; +--eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='root', MASTER_PORT=$NODE_MYPORT_3; --enable_query_log START SLAVE; ---connection node_1 +--connection node_3 CREATE TABLE t1 (f1 INTEGER PRIMARY KEY, f2 CHAR(1)) engine=innodb; INSERT INTO t1 VALUES (1, 'a'); INSERT INTO t1 VALUES (3, 'a'); @@ -62,31 +64,30 @@ SET SESSION wsrep_sync_wait = 0; --source include/wait_condition.inc # wait for create table and inserts to be replicated in cluster ---connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3 ---connection node_3 +--connection node_1 SET SESSION wsrep_sync_wait = 0; --let $wait_condition = SELECT COUNT(*) = 2 FROM test.t1; --source include/wait_condition.inc --connection node_2a # Block the future commit of async replication ---let $galera_sync_point = commit_monitor_enter_sync +--let $galera_sync_point = commit_monitor_master_enter_sync --source include/galera_set_sync_point.inc # block also the applier before applying begins SET GLOBAL debug_dbug = "d,sync.wsrep_apply_cb"; # -# now inject a conflicting insert from node 3, it will replicate with +# now inject a conflicting insert from node 1, it will replicate with # earlier seqno (than async transaction) and pause before applying in node 2 # ---connection node_3 +--connection node_1 INSERT INTO test.t1 VALUES (2, 'b'); # # send the update from master, this will succeed here, beceuase of async replication. # async replication will apply this in node 2 and pause before commit phase, ---connection node_1 +--connection node_3 --error 0 COMMIT; @@ -107,7 +108,7 @@ SET DEBUG_SYNC = "now SIGNAL signal.wsrep_apply_cb"; --source include/galera_clear_sync_point.inc --source include/galera_signal_sync_point.inc ---connection node_1 +--connection node_3 SELECT COUNT(*) = 1 FROM t1 WHERE f2 = 'a'; SELECT COUNT(*) = 1 FROM t1 WHERE f2 = 'c'; @@ -138,7 +139,7 @@ SET DEBUG_SYNC = "RESET"; --echo # test phase with real abort --echo # ---connection node_1 +--connection node_3 set binlog_format=ROW; @@ -154,35 +155,31 @@ UPDATE t1 SET f2 = 'd' WHERE f1 = 3; --let $wait_condition = SELECT COUNT(*) = 4 FROM test.t1; --source include/wait_condition.inc -# Block the commit ---let $galera_sync_point = commit_monitor_enter_sync ---source include/galera_set_sync_point.inc - # block applier SET GLOBAL debug_dbug = "d,sync.wsrep_apply_cb"; -# Inject a conflicting update from node 3 ---connection node_3 +# Inject a conflicting update from node 1 +--connection node_1 UPDATE test.t1 SET f2 = 'e' WHERE f1 = 3; +--connection node_2a +# wait until applier has reached the sync point +SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached"; +--let $expected_cert_failures = `SELECT VARIABLE_VALUE+1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_cert_failures'` + # send the update from master ---connection node_1 +--connection node_3 --error 0 COMMIT; --connection node_2a +--let $wait_condition = SELECT VARIABLE_VALUE = $expected_cert_failures FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_cert_failures' +--source include/wait_condition.inc -# release the applier +# release the applier from node 1 SET GLOBAL debug_dbug = ""; SET DEBUG_SYNC = "now SIGNAL signal.wsrep_apply_cb"; - -# Unblock the async slave commit ---connection node_2a ---source include/galera_clear_sync_point.inc ---source include/galera_signal_sync_point.inc -SET DEBUG_SYNC = "RESET"; - --connection node_2a set session wsrep_sync_wait=15; @@ -191,9 +188,10 @@ set session wsrep_sync_wait=0; STOP SLAVE; RESET SLAVE; +SET DEBUG_SYNC = "RESET"; DROP TABLE t1; ---connection node_1 +--connection node_3 DROP TABLE t1; RESET MASTER; diff --git a/mysql-test/suite/galera/t/galera_sp_bf_abort.inc b/mysql-test/suite/galera/t/galera_sp_bf_abort.inc index 7ca8ecf20a9..58345184e98 100644 --- a/mysql-test/suite/galera/t/galera_sp_bf_abort.inc +++ b/mysql-test/suite/galera/t/galera_sp_bf_abort.inc @@ -1,3 +1,4 @@ + # # Issue an INSERT for gap between 1 and 3 to node_2 and wait until it hits # apply monitor sync point on node_1 @@ -34,3 +35,4 @@ --source include/galera_signal_sync_point.inc --let $galera_sync_point = after_replicate_sync --source include/galera_signal_sync_point.inc + diff --git a/mysql-test/suite/galera/t/galera_sp_bf_abort.test b/mysql-test/suite/galera/t/galera_sp_bf_abort.test index b5f28c23b05..ce5e00ff8dc 100644 --- a/mysql-test/suite/galera/t/galera_sp_bf_abort.test +++ b/mysql-test/suite/galera/t/galera_sp_bf_abort.test @@ -3,10 +3,7 @@ # --source include/galera_cluster.inc ---source include/have_innodb.inc ---source include/have_debug.inc ---source include/have_debug_sync.inc ---source suite/galera/include/galera_have_debug_sync.inc +--source include/galera_have_debug_sync.inc --connection node_1 @@ -256,7 +253,7 @@ INSERT INTO t1 VALUES (1, 'a'), (3, 'a'); SET SESSION wsrep_sync_wait = 0; --source galera_sp_bf_abort.inc --connection node_1 ---error ER_DUP_ENTRY,ER_LOCK_DEADLOCK, ER_ERROR_DURING_COMMIT +--error ER_DUP_ENTRY,ER_LOCK_DEADLOCK --reap SET SESSION wsrep_sync_wait = default; SELECT * FROM t1; diff --git a/mysql-test/suite/galera/t/galera_sp_insert_parallel.test b/mysql-test/suite/galera/t/galera_sp_insert_parallel.test new file mode 100644 index 00000000000..b6878a9c32a --- /dev/null +++ b/mysql-test/suite/galera/t/galera_sp_insert_parallel.test @@ -0,0 +1,55 @@ +--source include/galera_cluster.inc +--source include/have_innodb.inc + +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY, f2 INTEGER) ENGINE=InnoDB; + + +DELIMITER |; +CREATE PROCEDURE proc_insert() +BEGIN + DECLARE i INT; + DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN END; + + SET i = 0; + WHILE i < 1000 DO + INSERT IGNORE INTO t1 (f1, f2) + VALUES (FLOOR(1 + RAND() * 65535), FLOOR(1 + RAND() * 15)), + (FLOOR(1 + RAND() * 65535), FLOOR(1 + RAND() * 15)), + (FLOOR(1 + RAND() * 65535), FLOOR(1 + RAND() * 15)), + (FLOOR(1 + RAND() * 65535), FLOOR(1 + RAND() * 15)), + (FLOOR(1 + RAND() * 65535), FLOOR(1 + RAND() * 15)), + (FLOOR(1 + RAND() * 65535), FLOOR(1 + RAND() * 15)), + (FLOOR(1 + RAND() * 65535), FLOOR(1 + RAND() * 15)), + (FLOOR(1 + RAND() * 65535), FLOOR(1 + RAND() * 15)), + (FLOOR(1 + RAND() * 65535), FLOOR(1 + RAND() * 15)); + SET i = i + 1; + + END WHILE; +END| +DELIMITER ;| + +--connection node_1 +SELECT 0; +SET SESSION wsrep_sync_wait = 0; +--send CALL proc_insert +--connection node_2 +SELECT 0; +SET SESSION wsrep_sync_wait = 0; +--send CALL proc_insert + +--connection node_1 +--error 0,ER_LOCK_DEADLOCK,ER_QUERY_INTERRUPTED +--disable_warnings +--reap +--enable_warnings +SET SESSION wsrep_sync_wait = default; +--connection node_2 +--error 0,ER_LOCK_DEADLOCK,ER_QUERY_INTERRUPTED +--disable_warnings +--reap +--enable_warnings +SET SESSION wsrep_sync_wait = default; + +--connection node_1 +DROP PROCEDURE proc_insert; +DROP TABLE t1; diff --git a/mysql-test/suite/galera/t/galera_split_brain.test b/mysql-test/suite/galera/t/galera_split_brain.test index a85a2ad9b8d..91a2cc326a2 100644 --- a/mysql-test/suite/galera/t/galera_split_brain.test +++ b/mysql-test/suite/galera/t/galera_split_brain.test @@ -1,6 +1,8 @@ # -# Confirm that with two nodes, killing one causes the other to stop accepting connections -# The pc.ignore_sb=true wsrep_provider option is tested in the galera_kill_* tests. +# Confirm that with two nodes, killing one causes the other to stop accepting +# connections. +# The pc.ignore_sb=true wsrep_provider option is tested in the galera_kill_* +# tests. # --source include/galera_cluster.inc diff --git a/mysql-test/suite/galera/t/galera_ssl_upgrade.test b/mysql-test/suite/galera/t/galera_ssl_upgrade.test index eb5f79c12b4..2ce932b5398 100644 --- a/mysql-test/suite/galera/t/galera_ssl_upgrade.test +++ b/mysql-test/suite/galera/t/galera_ssl_upgrade.test @@ -46,4 +46,8 @@ SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_N --source include/wait_condition.inc SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'; +# 5. Make sure node_2 is ready as well +--connection node_2 +--source include/galera_wait_ready.inc + # Upgrade complete. Both nodes now use the new key and certificate diff --git a/mysql-test/suite/galera/t/galera_sst_mariabackup.cnf b/mysql-test/suite/galera/t/galera_sst_mariabackup.cnf index 336296e9bfe..be2ca0d1f09 100644 --- a/mysql-test/suite/galera/t/galera_sst_mariabackup.cnf +++ b/mysql-test/suite/galera/t/galera_sst_mariabackup.cnf @@ -3,7 +3,7 @@ [mysqld] wsrep_sst_method=mariabackup wsrep_sst_auth="root:" -wsrep_debug=ON +wsrep_debug=1 [mysqld.1] wsrep_provider_options='base_port=@mysqld.1.#galera_port;gcache.size=1;pc.ignore_sb=true' diff --git a/mysql-test/suite/galera/t/galera_sst_mariabackup_data_dir.cnf b/mysql-test/suite/galera/t/galera_sst_mariabackup_data_dir.cnf index aeb2301925e..b1caf700a12 100644 --- a/mysql-test/suite/galera/t/galera_sst_mariabackup_data_dir.cnf +++ b/mysql-test/suite/galera/t/galera_sst_mariabackup_data_dir.cnf @@ -3,7 +3,7 @@ [mysqld] wsrep_sst_method=mariabackup wsrep_sst_auth="root:" -wsrep_debug=ON +wsrep_debug=1 [mysqld.1] wsrep_provider_options='base_port=@mysqld.1.#galera_port;gcache.size=1;pc.ignore_sb=true' diff --git a/mysql-test/suite/galera/t/galera_sst_mariabackup_encrypt_with_key.cnf b/mysql-test/suite/galera/t/galera_sst_mariabackup_encrypt_with_key.cnf index 646d7322b41..60db7ddba77 100644 --- a/mysql-test/suite/galera/t/galera_sst_mariabackup_encrypt_with_key.cnf +++ b/mysql-test/suite/galera/t/galera_sst_mariabackup_encrypt_with_key.cnf @@ -3,7 +3,7 @@ [mysqld] wsrep_sst_method=mariabackup wsrep_sst_auth="root:" -wsrep_debug=ON +wsrep_debug=1 [SST] tkey=@ENV.MYSQL_TEST_DIR/std_data/cakey.pem diff --git a/mysql-test/suite/galera/t/galera_sst_mariabackup_table_options.cnf b/mysql-test/suite/galera/t/galera_sst_mariabackup_table_options.cnf index 5e6913d4d2b..a5c269b74e2 100644 --- a/mysql-test/suite/galera/t/galera_sst_mariabackup_table_options.cnf +++ b/mysql-test/suite/galera/t/galera_sst_mariabackup_table_options.cnf @@ -3,7 +3,7 @@ [mysqld] wsrep_sst_method=mariabackup wsrep_sst_auth="root:" -wsrep_debug=ON +wsrep_debug=1 innodb-file-format='Barracuda' innodb-file-per-table=ON diff --git a/mysql-test/suite/galera/t/galera_sst_mysqldump.cnf b/mysql-test/suite/galera/t/galera_sst_mysqldump.cnf index 574ae28b54a..af4fedf12ce 100644 --- a/mysql-test/suite/galera/t/galera_sst_mysqldump.cnf +++ b/mysql-test/suite/galera/t/galera_sst_mysqldump.cnf @@ -5,7 +5,5 @@ [mysqld.1] wsrep_provider_options='base_port=@mysqld.1.#galera_port;gcache.size=1;pc.ignore_sb=true' - [mysqld.2] wsrep_provider_options='base_port=@mysqld.2.#galera_port;gcache.size=1;pc.ignore_sb=true' - diff --git a/mysql-test/suite/galera/t/galera_sst_mysqldump.test b/mysql-test/suite/galera/t/galera_sst_mysqldump.test index 835fac94a68..cce4d374a6d 100644 --- a/mysql-test/suite/galera/t/galera_sst_mysqldump.test +++ b/mysql-test/suite/galera/t/galera_sst_mysqldump.test @@ -1,6 +1,5 @@ --source include/big_test.inc --source include/galera_cluster.inc - --source suite/galera/include/galera_sst_set_mysqldump.inc --let $node_1=node_1 @@ -14,7 +13,6 @@ --source suite/galera/include/galera_st_shutdown_slave.inc --source suite/galera/include/galera_st_clean_slave.inc - --source suite/galera/include/galera_st_kill_slave.inc --source suite/galera/include/galera_st_kill_slave_ddl.inc diff --git a/mysql-test/suite/galera/t/galera_sst_mysqldump_with_key.cnf b/mysql-test/suite/galera/t/galera_sst_mysqldump_with_key.cnf index 44e5573b3e6..0f38a85744e 100644 --- a/mysql-test/suite/galera/t/galera_sst_mysqldump_with_key.cnf +++ b/mysql-test/suite/galera/t/galera_sst_mysqldump_with_key.cnf @@ -5,12 +5,11 @@ [mysqld.1] wsrep_provider_options='base_port=@mysqld.1.#galera_port;gcache.size=1;pc.ignore_sb=true' +wsrep_sync_wait=0 [mysqld.2] wsrep_provider_options='base_port=@mysqld.2.#galera_port;gcache.size=1;pc.ignore_sb=true' - -[mysqld] -wsrep_debug=ON +wsrep_sync_wait=0 [client] ssl-ca=@ENV.MYSQL_TEST_DIR/std_data/cacert.pem diff --git a/mysql-test/suite/galera/t/galera_sst_mysqldump_with_key.test b/mysql-test/suite/galera/t/galera_sst_mysqldump_with_key.test index 57244cb50c7..3e0e944b0df 100644 --- a/mysql-test/suite/galera/t/galera_sst_mysqldump_with_key.test +++ b/mysql-test/suite/galera/t/galera_sst_mysqldump_with_key.test @@ -20,7 +20,7 @@ GRANT USAGE ON *.* TO sslsst REQUIRE SSL; SET GLOBAL wsrep_sst_auth = 'sslsst:'; # We set the required mysqldump SST options here so that they are used every time the server is restarted during the test ---let $start_mysqld_params = --wsrep_sst_auth=sst:'sslsst:' --wsrep_sst_method=mysqldump --wsrep-sst-receive-address=127.0.0.1:$NODE_MYPORT_2 --skip-grant-tables +--let $start_mysqld_params = --wsrep_sst_auth=sst:'sslsst:' --wsrep_sst_method=mysqldump --wsrep-sst-receive-address=127.0.0.1:$NODE_MYPORT_2 --source suite/galera/include/galera_st_shutdown_slave.inc --source suite/galera/include/galera_st_kill_slave.inc diff --git a/mysql-test/suite/galera/t/galera_sync_wait_upto-master.opt b/mysql-test/suite/galera/t/galera_sync_wait_upto-master.opt new file mode 100644 index 00000000000..0b35236062b --- /dev/null +++ b/mysql-test/suite/galera/t/galera_sync_wait_upto-master.opt @@ -0,0 +1 @@ +--wsrep-sync-wait=0 --wsrep-causal-reads=OFF
\ No newline at end of file diff --git a/mysql-test/suite/galera/t/galera_sync_wait_upto.test b/mysql-test/suite/galera/t/galera_sync_wait_upto.test new file mode 100644 index 00000000000..32c6b590c84 --- /dev/null +++ b/mysql-test/suite/galera/t/galera_sync_wait_upto.test @@ -0,0 +1,115 @@ +# +# Tests the wsrep_sync_wait_upto variable. +# + +--source include/galera_cluster.inc +--source include/have_debug_sync.inc + +CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB; +INSERT INTO t1 VALUES (1); + + +# Test with invalid values + +--error ER_WRONG_ARGUMENTS +SELECT WSREP_SYNC_WAIT_UPTO_GTID(NULL); + +--error ER_WRONG_ARGUMENTS +SELECT WSREP_SYNC_WAIT_UPTO_GTID('a'); + +--error ER_WRONG_ARGUMENTS +SELECT WSREP_SYNC_WAIT_UPTO_GTID(2); + + +# If set to low value, expect no waiting + +--disable_query_log +--let $seqno = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_last_committed'` +--let $state = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_state_uuid'` +--enable_query_log + +--disable_query_log +--eval SELECT WSREP_SYNC_WAIT_UPTO_GTID('00000000-0000-0000-0000-000000000000:-1') AS WSREP_SYNC_WAIT_UPTO; +--enable_query_log + +--disable_query_log +--eval SELECT WSREP_SYNC_WAIT_UPTO_GTID('$state:0') AS WSREP_SYNC_WAIT_UPTO; +--enable_query_log + + +# If set to current last_committed value + +--disable_query_log +--eval SELECT WSREP_SYNC_WAIT_UPTO_GTID('$state:$seqno') AS WSREP_SYNC_WAIT_UPTO; +--enable_query_log + + +# If set to very high value, will wait + +--disable_query_log +--error ER_LOCK_WAIT_TIMEOUT +--eval SELECT WSREP_SYNC_WAIT_UPTO_GTID('$state:9223372036854775807', 1) AS WSREP_SYNC_WAIT_UPTO; +--enable_query_log + + +# If applier is blocked, will wait + +--connection node_2 +SET GLOBAL DEBUG_DBUG = "d,sync.wsrep_apply_cb"; + + +--connection node_1 +# Perform two inserts and record the IDs of each +INSERT INTO t1 VALUES (2); +--let $gtid_first = `SELECT WSREP_LAST_WRITTEN_GTID()` + +INSERT INTO t1 VALUES (3); +--let $gtid_second = `SELECT WSREP_LAST_WRITTEN_GTID()` + +--connection node_2 +SET SESSION wsrep_sync_wait = 0; + +--disable_query_log +--error ER_LOCK_WAIT_TIMEOUT +--eval SELECT WSREP_SYNC_WAIT_UPTO_GTID('$gtid_first', 1) AS WSREP_SYNC_WAIT_UPTO; +--enable_query_log + +--disable_query_log +--send_eval SELECT WSREP_SYNC_WAIT_UPTO_GTID('$gtid_first') AS WSREP_SYNC_WAIT_UPTO; +--enable_query_log + +# Unblock applier +--connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2 +--connection node_2a +SET SESSION wsrep_sync_wait = 0; +--let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE INFO LIKE 'SELECT WSREP_SYNC_WAIT%'; +--source include/wait_condition.inc +SET DEBUG_SYNC = "now SIGNAL signal.wsrep_apply_cb"; + +--connection node_2 +--reap + +# Confirm that we were allowed to proceed when the applier reached $seqno_first +--let $gtid_current = `SELECT WSREP_LAST_SEEN_GTID()` +--disable_query_log +--eval SELECT '$gtid_current' = '$gtid_first' AS `gtid_current = gtid_first` +--enable_query_log + +SET GLOBAL DEBUG_DBUG = ""; +SET DEBUG_SYNC = "now SIGNAL signal.wsrep_apply_cb"; + +# Move forward some more, to $seqno_second; + +--disable_query_log +--eval SELECT WSREP_SYNC_WAIT_UPTO_GTID('$gtid_second') AS WSREP_SYNC_WAIT_UPTO; +--enable_query_log + +--let $gtid_current = `SELECT WSREP_LAST_SEEN_GTID()` +--disable_query_log +--eval SELECT '$gtid_current' = '$gtid_second' AS `seqno_current = seqno_second` +--enable_query_log + +SET DEBUG_SYNC = "RESET"; + +--connection node_1 +DROP TABLE t1; diff --git a/mysql-test/suite/galera/t/galera_toi_ddl_error.test b/mysql-test/suite/galera/t/galera_toi_ddl_error.test index c586d97bdb5..6ee2a6e9b16 100644 --- a/mysql-test/suite/galera/t/galera_toi_ddl_error.test +++ b/mysql-test/suite/galera/t/galera_toi_ddl_error.test @@ -27,3 +27,8 @@ SHOW CREATE TABLE t1; DROP TABLE t1; DROP TABLE ten; + +CALL mtr.add_suppression("Ignoring error 'Duplicate entry '111110' for key 'PRIMARY'' on query."); + +--connection node_2 +CALL mtr.add_suppression("Ignoring error 'Duplicate entry '111110' for key 'PRIMARY'' on query.");
\ No newline at end of file diff --git a/mysql-test/suite/galera/t/galera_toi_ddl_locking.test b/mysql-test/suite/galera/t/galera_toi_ddl_locking.test index 12c83a1f87a..22a45316306 100644 --- a/mysql-test/suite/galera/t/galera_toi_ddl_locking.test +++ b/mysql-test/suite/galera/t/galera_toi_ddl_locking.test @@ -11,20 +11,31 @@ CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB; CREATE TABLE t2 (f1 INTEGER) ENGINE=InnoDB; ---connection node_1 -SET DEBUG_SYNC = 'alter_table_before_open_tables WAIT_FOR continue'; ---send ALTER TABLE t1 ADD COLUMN f2 INTEGER; - --let $galera_connection_name = node_1a --let $galera_server_number = 1 --source include/galera_connect.inc +SET SESSION wsrep_sync_wait = 0; --let $galera_connection_name = node_1b --let $galera_server_number = 1 --source include/galera_connect.inc +# node_1c tests write to unrelated table trough a transaction +--let $galera_connection_name = node_1c +--let $galera_server_number = 1 +--source include/galera_connect.inc + +--connection node_1 +SET DEBUG_SYNC= 'RESET'; +SET DEBUG_SYNC = 'alter_table_before_open_tables SIGNAL before_open_tables WAIT_FOR continue'; +--send ALTER TABLE t1 ADD COLUMN f2 INTEGER; + --connection node_1a -SET SESSION wsrep_sync_wait = 0; +SET DEBUG_SYNC= 'now WAIT_FOR before_open_tables'; + +# if we would retry the insert, it would fail for wrong column count +# on second try +SET wsrep_retry_autocommit=0; # Allowed SELECT COUNT(*) = 0 FROM t1; @@ -32,45 +43,56 @@ SELECT COUNT(*) = 0 FROM t1; # Allowed SELECT COUNT(*) = 0 FROM t2; -# Not allowed ---error ER_LOCK_DEADLOCK,ER_ERROR_DURING_COMMIT -INSERT INTO t1 VALUES (1); +# Not allowed, this will hang because of ALTER +--send INSERT INTO t1 VALUES (1); + +--connection node_1c +SET SESSION wsrep_sync_wait = 0; SET AUTOCOMMIT=OFF; START TRANSACTION; # Allowed +SELECT COUNT(*) = 0 FROM t1; + +# Allowed +SELECT COUNT(*) = 0 FROM t2; + +# Allowed (until commit) INSERT INTO t2 VALUES (1); # Hangs --send COMMIT; ---sleep 1 --connection node_1b SET SESSION wsrep_sync_wait = 0; # The Commit issued above is still not done -SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE INFO = 'Commit'; +--sleep 1 SELECT COUNT(*) = 0 FROM t2; + +SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE INFO = 'Commit'; + SET DEBUG_SYNC= 'now SIGNAL continue'; --connection node_1a +--error ER_LOCK_DEADLOCK +--reap + +--connection node_1c +# this will succeeed, becaus the query will be replayed --reap --connection node_1 --reap + SELECT COUNT(*) = 0 FROM t1; SELECT COUNT(*) = 1 FROM t2; +SET debug_sync='RESET'; --connection node_2 SELECT COUNT(*) = 0 FROM t1; SELECT COUNT(*) = 1 FROM t2; ---connection node_1 -SET DEBUG_SYNC= 'RESET'; - ---connection node_1b -SET DEBUG_SYNC= 'RESET'; - DROP TABLE t1; DROP TABLE t2; diff --git a/mysql-test/suite/galera/t/galera_transaction_replay.test b/mysql-test/suite/galera/t/galera_transaction_replay.test index 29870829ba3..655714f26c9 100644 --- a/mysql-test/suite/galera/t/galera_transaction_replay.test +++ b/mysql-test/suite/galera/t/galera_transaction_replay.test @@ -1,12 +1,25 @@ # -# This test tests the operation of transaction replay. If a potentially conflicting remote transaction arrives at -# just the right time during the commit of a local transaction, the local transaction will be aborted and replayed. +# This test tests the operation of transaction replay. If a potentially +# conflicting remote transaction arrives at just the right time during +# the commit of a local transaction, the local transaction will be aborted +# and replayed. +# +# Because the write set with higher sequence number cannot BF abort +# the victim with lower sequence number, the conflicting remote transaction +# must be executed first and must be allowed to proceed up to the apply +# monitor before sending the COMMIT for the transaction to be replayed. # --source include/galera_cluster.inc --source include/have_innodb.inc --source include/have_debug_sync.inc ---source suite/galera/include/galera_have_debug_sync.inc +--source include/galera_have_debug_sync.inc + +###################################################################### +# +# Scenario #1, the victim will have higher seqno and will be replayed +# +###################################################################### --let $wsrep_local_replays_old = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_replays'` @@ -21,34 +34,123 @@ START TRANSACTION; UPDATE t1 SET f2 = 'b' WHERE f1 = 1; SELECT * FROM t1 WHERE f1 = 2 FOR UPDATE; -# Block the commit +# Block the applier on node #1 and issue a conflicting update on node #2 --connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1 ---let $galera_sync_point = commit_monitor_enter_sync +SET SESSION wsrep_sync_wait=0; +--let $galera_sync_point = apply_monitor_slave_enter_sync +--source include/galera_set_sync_point.inc + +--connection node_2 +UPDATE t1 SET f2 = 'c' WHERE f1 = 2; + +--connection node_1a +--source include/galera_wait_sync_point.inc +--source include/galera_clear_sync_point.inc + +# Block the commit, send the COMMIT and wait until it gets blocked + +--let $galera_sync_point = commit_monitor_master_enter_sync --source include/galera_set_sync_point.inc --connection node_1 ---send COMMIT; +--send COMMIT -# Wait until commit is blocked --connection node_1a -SET SESSION wsrep_sync_wait = 0; + +--let $galera_sync_point = apply_monitor_slave_enter_sync commit_monitor_master_enter_sync +--source include/galera_wait_sync_point.inc +--source include/galera_clear_sync_point.inc + +# Let the conflicting UPDATE proceed and wait until it hits abort_trx_end. +# The victim transaction still sits in commit_monitor_master_sync_point. + +--let $galera_sync_point = abort_trx_end +--source include/galera_set_sync_point.inc +--let $galera_sync_point = apply_monitor_slave_enter_sync +--source include/galera_signal_sync_point.inc +--let $galera_sync_point = abort_trx_end commit_monitor_master_enter_sync --source include/galera_wait_sync_point.inc -# Issue a conflicting update on node #2 +# Let the transactions proceed +--source include/galera_clear_sync_point.inc +--let $galera_sync_point = abort_trx_end +--source include/galera_signal_sync_point.inc +--let $galera_sync_point = commit_monitor_master_enter_sync +--source include/galera_signal_sync_point.inc + +# Commit succeeds +--connection node_1 +--reap + +SELECT COUNT(*) = 1 FROM t1 WHERE f2 = 'b'; +SELECT COUNT(*) = 1 FROM t1 WHERE f2 = 'c'; + +# wsrep_local_replays has increased by 1 +--let $wsrep_local_replays_new = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_replays'` +--disable_query_log +--eval SELECT $wsrep_local_replays_new - $wsrep_local_replays_old = 1 AS wsrep_local_replays; +--enable_query_log + --connection node_2 -UPDATE t1 SET f2 = 'c' WHERE f1 = 2; +SELECT COUNT(*) = 1 FROM t1 WHERE f2 = 'b'; +SELECT COUNT(*) = 1 FROM t1 WHERE f2 = 'c'; + +DROP TABLE t1; + +######################################################################### +# +# Scenario #2, the victim will have lower seqno and will not be replayed +# +######################################################################### + +--connection node_1 + +--let $wsrep_local_replays_old = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_replays'` + +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY, f2 CHAR(1)); +INSERT INTO t1 VALUES (1, 'a'); +INSERT INTO t1 VALUES (2, 'a'); + +--connection node_1 +SET AUTOCOMMIT=ON; +START TRANSACTION; + +UPDATE t1 SET f2 = 'b' WHERE f1 = 1; +SELECT * FROM t1 WHERE f1 = 2 FOR UPDATE; + +# Block the commit, send the COMMIT and wait until it gets blocked + +--let $galera_sync_point = commit_monitor_master_enter_sync +--source include/galera_set_sync_point.inc + +--connection node_1 +--send COMMIT -# Wait for both transactions to be blocked --connection node_1a ---let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE STATE LIKE 'Update_rows_log_event::find_row%'; ---source include/wait_condition.inc ---let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE STATE = 'init' AND INFO = 'COMMIT'; ---source include/wait_condition.inc +--let $galera_sync_point = commit_monitor_master_enter_sync +--source include/galera_wait_sync_point.inc +--source include/galera_clear_sync_point.inc + + +# Set sync point at the end of BF abort, issue a conflicting update +# and wait for the conflicting update to hit the sync point. +--let $galera_sync_point = abort_trx_end +--source include/galera_set_sync_point.inc + +--connection node_2 +UPDATE t1 SET f2 = 'c' WHERE f1 = 2; -# Unblock the commit --connection node_1a +--let $galera_sync_point = abort_trx_end commit_monitor_master_enter_sync +--source include/galera_wait_sync_point.inc +--source include/galera_clear_sync_point.inc + +# Let the transactions proceed --source include/galera_clear_sync_point.inc +--let $galera_sync_point = abort_trx_end +--source include/galera_signal_sync_point.inc +--let $galera_sync_point = commit_monitor_master_enter_sync --source include/galera_signal_sync_point.inc # Commit succeeds @@ -58,10 +160,10 @@ UPDATE t1 SET f2 = 'c' WHERE f1 = 2; SELECT COUNT(*) = 1 FROM t1 WHERE f2 = 'b'; SELECT COUNT(*) = 1 FROM t1 WHERE f2 = 'c'; -# wsrep_local_replays has increased by 1 +# wsrep_local_replays should have not increased --let $wsrep_local_replays_new = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_replays'` --disable_query_log ---eval SELECT $wsrep_local_replays_new - $wsrep_local_replays_old = 1 AS wsrep_local_replays; +--eval SELECT $wsrep_local_replays_new - $wsrep_local_replays_old = 0 AS wsrep_local_replays; --enable_query_log --connection node_2 @@ -70,55 +172,84 @@ SELECT COUNT(*) = 1 FROM t1 WHERE f2 = 'c'; DROP TABLE t1; -#echo "# test for PS replaying" +######################################## # # test replaying of prepared statements # +######################################## + --connection node_1 + +--let $wsrep_local_replays_old = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_replays'` + CREATE TABLE t1 (i int primary key, j int) ENGINE=INNODB; INSERT INTO t1 VALUES (1, 0), (3, 0); SELECT * FROM t1; - +SET AUTOCOMMIT=ON; PREPARE stmt1 FROM "UPDATE t1 SET j = 1 where i > 0"; -# block the commit of PS + +# Block the applier on node #1 and issue a conflicting update on node #2 --connection node_1a ---let $galera_sync_point = commit_monitor_enter_sync +SET SESSION wsrep_sync_wait=0; +--let $galera_sync_point = apply_monitor_slave_enter_sync --source include/galera_set_sync_point.inc ---connection node_1 ---send EXECUTE stmt1; +--connection node_2 +INSERT INTO t1 VALUES(2,2); -# Wait until commit is blocked --connection node_1a -SET SESSION wsrep_sync_wait = 0; --source include/galera_wait_sync_point.inc +--source include/galera_clear_sync_point.inc -# Issue a conflicting update on node_2 ---connection node_2 -#UPDATE t1 SET j=2; -INSERT INTO t1 VALUES(2,2); +# Block the commit, send the EXECUTE stmt1 and wait until it gets blocked +--let $galera_sync_point = commit_monitor_master_enter_sync +--source include/galera_set_sync_point.inc -# Wait until applying begins in node_1 ---connection node_1a ---let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE STATE LIKE 'Write_rows_log_event::write_row%'; ---source include/wait_condition.inc +--connection node_1 +SET SESSION wsrep_sync_wait=0; +--send EXECUTE stmt1 -# Unblock the PS commit --connection node_1a + +--let $galera_sync_point = apply_monitor_slave_enter_sync commit_monitor_master_enter_sync +--source include/galera_wait_sync_point.inc --source include/galera_clear_sync_point.inc + +# Let the conflicting INSERT proceed and wait until it hits abort_trx_end. +# The victim transaction still sits in commit_monitor_master_sync_point. + +--let $galera_sync_point = abort_trx_end +--source include/galera_set_sync_point.inc +--let $galera_sync_point = apply_monitor_slave_enter_sync +--source include/galera_signal_sync_point.inc +--let $galera_sync_point = abort_trx_end commit_monitor_master_enter_sync +--source include/galera_wait_sync_point.inc + +# Let the transactions proceed +--source include/galera_clear_sync_point.inc +--let $galera_sync_point = abort_trx_end +--source include/galera_signal_sync_point.inc +--let $galera_sync_point = commit_monitor_master_enter_sync --source include/galera_signal_sync_point.inc # Commit succeeds --connection node_1 --reap +SET SESSION wsrep_sync_wait=7; SELECT * FROM t1; --connection node_2 SELECT * FROM t1; --connection node_1 +# wsrep_local_replays has increased by 1 +--let $wsrep_local_replays_new = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_replays'` +--disable_query_log +--eval SELECT $wsrep_local_replays_new - $wsrep_local_replays_old = 1 AS wsrep_local_replays; +--enable_query_log + DEALLOCATE PREPARE stmt1; DROP TABLE t1; diff --git a/mysql-test/suite/galera/t/galera_var_cluster_address.test b/mysql-test/suite/galera/t/galera_var_cluster_address.test index 6d99d35cdac..85ae73ffda4 100644 --- a/mysql-test/suite/galera/t/galera_var_cluster_address.test +++ b/mysql-test/suite/galera/t/galera_var_cluster_address.test @@ -19,8 +19,8 @@ SET GLOBAL wsrep_cluster_address = 'foo://'; # With wsrep_sync_wait, this returns an error -#--error ER_LOCK_WAIT_TIMEOUT -#SHOW STATUS; +--error ER_LOCK_WAIT_TIMEOUT +SHOW STATUS; SET SESSION wsrep_sync_wait=0; @@ -29,7 +29,7 @@ SELECT COUNT(*) > 0 FROM INFORMATION_SCHEMA.GLOBAL_STATUS; # Must return 'OFF' SHOW STATUS LIKE 'wsrep_ready'; -# Must return 'Non-primary' +# Must return 'Disconnected' SHOW STATUS LIKE 'wsrep_cluster_status'; # Must return 0 = 'Initialized' @@ -49,10 +49,9 @@ SELECT VARIABLE_VALUE = 'Primary' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VA --connection node_2 --disable_query_log --eval SET GLOBAL wsrep_cluster_address = '$wsrep_cluster_address_node2'; +--source include/galera_wait_ready.inc --enable_query_log ---source include/wait_until_connected_again.inc - --connection node_1 SELECT VARIABLE_VALUE = 'Primary' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status'; SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'; @@ -63,7 +62,7 @@ CALL mtr.add_suppression("Failed to initialize backend using 'foo"); CALL mtr.add_suppression("Failed to open channel 'my_wsrep_cluster' at 'foo"); CALL mtr.add_suppression("gcs connect failed: Socket type not supported"); CALL mtr.add_suppression("wsrep::connect\\(\\) failed: 7"); -CALL mtr.add_suppression("gcs_caused\\(\\) returned -103 \\(Software caused connection abort\\)"); +CALL mtr.add_suppression("gcs_caused\\(\\) returned -[0-9]+ \\(Software caused connection abort\\)"); CALL mtr.add_suppression("failed to open gcomm backend connection: 110: failed to reach primary view: 110"); CALL mtr.add_suppression("Failed to open backend connection: -110 \\(Connection timed out\\)"); CALL mtr.add_suppression("gcs connect failed: Connection timed out"); diff --git a/mysql-test/suite/galera/t/galera_var_cluster_conf_id.test b/mysql-test/suite/galera/t/galera_var_cluster_conf_id.test new file mode 100644 index 00000000000..668ace297a8 --- /dev/null +++ b/mysql-test/suite/galera/t/galera_var_cluster_conf_id.test @@ -0,0 +1,9 @@ +--source include/galera_cluster.inc + +--connection node_1 +--replace_regex /18446744073709551/ERROR/ /[0-9]+/#/ +show status like 'wsrep_cluster_conf_id'; + +--connection node_2 +--replace_regex /18446744073709551/ERROR/ /[0-9]+/#/ +show status like 'wsrep_cluster_conf_id'; diff --git a/mysql-test/suite/galera/t/galera_var_dirty_reads.test b/mysql-test/suite/galera/t/galera_var_dirty_reads.test index f18069929f9..85f72e633dc 100644 --- a/mysql-test/suite/galera/t/galera_var_dirty_reads.test +++ b/mysql-test/suite/galera/t/galera_var_dirty_reads.test @@ -28,7 +28,7 @@ SET SESSION wsrep_sync_wait=0; # Must return 'OFF' SHOW STATUS LIKE 'wsrep_ready'; -# Must return 'Non-primary' +# Must return 'Disconnected' SHOW STATUS LIKE 'wsrep_cluster_status'; --error ER_UNKNOWN_COM_ERROR,1047 @@ -49,6 +49,7 @@ SET @@session.wsrep_dirty_reads=OFF; --error ER_UNKNOWN_COM_ERROR,1047 SELECT i, variable_name, variable_value FROM t1, information_schema.session_variables WHERE variable_name LIKE "wsrep_dirty_reads" AND i = 1; + SELECT 1; USE information_schema; @@ -61,6 +62,7 @@ SELECT COUNT(*) >= 10 FROM performance_schema.events_statements_history; --eval SET @@global.wsrep_cluster_address = '$wsrep_cluster_address_saved' --enable_query_log --source include/wait_until_connected_again.inc +--source include/galera_wait_ready.inc --connection node_1 USE test; @@ -68,8 +70,7 @@ SELECT * FROM t1; # Cleanup DROP TABLE t1; +# Restore original auto_increment_offset values. --source include/auto_increment_offset_restore.inc --source include/galera_end.inc ---echo # End of test - diff --git a/mysql-test/suite/galera/t/galera_var_gtid_domain_id.test b/mysql-test/suite/galera/t/galera_var_gtid_domain_id.test index 015f25abf2f..eec47507e3a 100644 --- a/mysql-test/suite/galera/t/galera_var_gtid_domain_id.test +++ b/mysql-test/suite/galera/t/galera_var_gtid_domain_id.test @@ -50,10 +50,14 @@ DROP TABLE t1, t2; --echo #cleanup --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; --source include/galera_end.inc --echo # End of test diff --git a/mysql-test/suite/galera/t/galera_var_ignore_apply_errors.test b/mysql-test/suite/galera/t/galera_var_ignore_apply_errors.test new file mode 100644 index 00000000000..5232d4236e6 --- /dev/null +++ b/mysql-test/suite/galera/t/galera_var_ignore_apply_errors.test @@ -0,0 +1,248 @@ +# +# Test option wsrep_ignore_apply_errors +# + +--source include/galera_cluster.inc +--source include/have_innodb.inc + + +# +# Ignore reconciling DDL errors on node_2 +# + +--connection node_2 +SET GLOBAL wsrep_ignore_apply_errors = 1; + +# Drop table that does not exist +--connection node_1 +SET GLOBAL wsrep_on = OFF; +CREATE TABLE t1 (f1 INTEGER); +SET GLOBAL wsrep_on = ON; +--source include/galera_wait_ready.inc +DROP TABLE t1; + +# Drop schema that does not exist +SET GLOBAL wsrep_on = OFF; +CREATE SCHEMA s1; +SET GLOBAL wsrep_on = ON; +--source include/galera_wait_ready.inc +DROP SCHEMA s1; + +# Drop index that does not exist using DROP INDEX +CREATE TABLE t1 (f1 INTEGER); +SET GLOBAL wsrep_on = OFF; +CREATE INDEX idx1 ON t1 (f1); +SET GLOBAL wsrep_on = ON; +--source include/galera_wait_ready.inc +DROP INDEX idx1 ON t1; +DROP TABLE t1; + +# Drop index that does not exist using ALTER TABLE +CREATE TABLE t1 (f1 INTEGER); +SET GLOBAL wsrep_on = OFF; +CREATE INDEX idx1 ON t1 (f1); +SET GLOBAL wsrep_on = ON; +--source include/galera_wait_ready.inc +ALTER TABLE t1 DROP INDEX idx1; +DROP TABLE t1; + +# Drop column that does not exist +CREATE TABLE t1 (f1 INTEGER); +SET GLOBAL wsrep_on = OFF; +ALTER TABLE t1 ADD COLUMN f2 INTEGER; +SET GLOBAL wsrep_on = ON; +--source include/galera_wait_ready.inc +ALTER TABLE t1 DROP COLUMN f2; +DROP TABLE t1; + + +# +# Ignore reconciling DML errors on node_2 +# + +--connection node_2 +SET GLOBAL wsrep_ignore_apply_errors = 2; + +# Delete row that does not exist +--connection node_1 +CREATE TABLE t1 (f1 INTEGER); +SET GLOBAL wsrep_on = OFF; +INSERT INTO t1 VALUES (1); +SET GLOBAL wsrep_on = ON; +--source include/galera_wait_ready.inc +DELETE FROM t1 WHERE f1 = 1; + +--connection node_1 +SELECT COUNT(*) as expect_0 FROM t1; +--connection node_2 +SELECT COUNT(*) as expect_0 FROM t1; + +DROP TABLE t1; + +# Delete row that does not exist in a multi statement transaction +--connection node_1 +CREATE TABLE t1 (f1 INTEGER); +INSERT INTO t1 VALUES (2); +SET GLOBAL wsrep_on = OFF; +INSERT INTO t1 VALUES (1); +SET GLOBAL wsrep_on = ON; +--source include/galera_wait_ready.inc +START TRANSACTION; +INSERT INTO t1 VALUES (3); +DELETE FROM t1 WHERE f1 = 1; +DELETE FROM t1 WHERE f1 = 2; +COMMIT; + +--connection node_1 +SELECT COUNT(*) as expect_1 FROM t1; +--connection node_2 +SELECT COUNT(*) as expect_1 FROM t1; + +DROP TABLE t1; + +# +# Multi-row delete where only one row does not exist +# + +--connection node_1 +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; +INSERT INTO t1 VALUES (1),(2),(3),(4),(5); +--connection node_2 +--let $wait_condition = SELECT COUNT(*) = 5 FROM t1; +--source include/wait_condition.inc + +SET SESSION wsrep_on = OFF; +DELETE FROM t1 WHERE f1 = 3; +SET SESSION wsrep_on = ON; +--source include/galera_wait_ready.inc +--connection node_1 +DELETE FROM t1; + +SELECT COUNT(*) as expect_0 FROM t1; +--connection node_2 +SELECT VARIABLE_VALUE = 'Primary' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status'; +SELECT COUNT(*) as expect_0 FROM t1; +DROP TABLE t1; + +# +# Multi-statement delete where only one row does not exist +# + +--connection node_1 +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; +INSERT INTO t1 VALUES (1),(2),(3),(4),(5); +--connection node_2 +--let $wait_condition = SELECT COUNT(*) = 5 FROM t1; +--source include/wait_condition.inc + +SET SESSION wsrep_on = OFF; +DELETE FROM t1 WHERE f1 = 3; +SET SESSION wsrep_on = ON; +--source include/galera_wait_ready.inc + +--connection node_1 + +SET AUTOCOMMIT=OFF; +START TRANSACTION; +DELETE FROM t1 WHERE f1 = 1; +DELETE FROM t1 WHERE f1 = 2; +DELETE FROM t1 WHERE f1 = 3; +DELETE FROM t1 WHERE f1 = 4; +DELETE FROM t1 WHERE f1 = 5; +COMMIT; +SET AUTOCOMMIT=ON; + +SELECT COUNT(*) as expect_0 FROM t1; +--connection node_2 +SELECT VARIABLE_VALUE = 'Primary' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status'; +SELECT COUNT(*) as expect_0 FROM t1; +DROP TABLE t1; + +# +# Multi-table delete +# + +--connection node_1 +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; +INSERT INTO t1 VALUES (1),(2),(3); +CREATE TABLE t2 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; +INSERT INTO t2 VALUES (1),(2),(3); + +--connection node_2 +--let $wait_condition = SELECT COUNT(*) = 3 FROM t2; +--source include/wait_condition.inc + +SET SESSION wsrep_on = OFF; +DELETE FROM t2 WHERE f1 = 2; +DELETE FROM t1 WHERE f1 = 3; +SET SESSION wsrep_on = ON; +--source include/galera_wait_ready.inc + +--connection node_1 +DELETE t1, t2 FROM t1 JOIN t2 WHERE t1.f1 = t2.f1; +SELECT COUNT(*) as expect_0 FROM t1; + +--connection node_2 +SELECT VARIABLE_VALUE = 'Primary' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status'; +SELECT COUNT(*) as expect_0 FROM t1; +DROP TABLE t1,t2; + +# +# Foreign keys +# + +--connection node_1 +CREATE TABLE parent (id INT NOT NULL, PRIMARY KEY (id)) ENGINE=INNODB; +INSERT INTO parent VALUES (1),(2),(3); +CREATE TABLE child (id INT, parent_id INT, INDEX par_ind (parent_id), FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE CASCADE) ENGINE=INNODB; +INSERT INTO child VALUES (1,1),(2,2),(3,3); + +--connection node_2 +--let $wait_condition = SELECT COUNT(*) = 3 FROM child; +--source include/wait_condition.inc + +SET SESSION wsrep_on = OFF; +DELETE FROM child WHERE parent_id = 2; +SET SESSION wsrep_on = ON; +--source include/galera_wait_ready.inc + +--connection node_1 +DELETE FROM parent; +SELECT COUNT(*) as expect_0 FROM parent; +SELECT COUNT(*) as expect_0 FROM child; + +--connection node_2 +SELECT VARIABLE_VALUE = 'Primary' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status'; +SELECT COUNT(*) as expect_0 FROM parent; +SELECT COUNT(*) as expect_0 FROM child; +DROP TABLE child, parent; + +# +# Ignore all DDL errors on node_2 +# + +--connection node_2 +SET GLOBAL wsrep_ignore_apply_errors = 4; + +# Create a table that already exists +--connection node_2 +SET GLOBAL wsrep_on = OFF; +CREATE TABLE t1 (f1 INTEGER); +SET GLOBAL wsrep_on = ON; +--source include/galera_wait_ready.inc +--connection node_1 +CREATE TABLE t1 (f1 INTEGER, f2 INTEGER); +DROP TABLE t1; + + +--connection node_2 +SET GLOBAL wsrep_ignore_apply_errors = 7; + +CALL mtr.add_suppression("Can't find record in 't.*'"); +CALL mtr.add_suppression("Slave SQL: Could not execute Delete_rows event"); +CALL mtr.add_suppression("Slave SQL: Error 'Unknown table 'test.t1'' on query. Default database: 'test'. Query: 'DROP TABLE t1', Error_code: 1051"); +CALL mtr.add_suppression("Slave SQL: Error 'Can't drop database 's1'; database doesn't exist' on query. Default database: 'test'. Query: 'DROP SCHEMA s1', Error_code: 1008"); +CALL mtr.add_suppression("Slave SQL: Error 'Can't DROP 'idx1'; check that column/key exists' on query. Default database: 'test'. Query: 'DROP INDEX idx1 ON t1', Error_code: 1091"); +CALL mtr.add_suppression("Slave SQL: Error 'Can't DROP 'idx1'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t1 DROP INDEX idx1', Error_code: 1091"); +CALL mtr.add_suppression("Slave SQL: Error 'Can't DROP 'f2'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t1 DROP COLUMN f2', Error_code: 1091"); +CALL mtr.add_suppression("Slave SQL: Error 'Table 't1' already exists' on query."); diff --git a/mysql-test/suite/galera/t/galera_var_innodb_disallow_writes.test b/mysql-test/suite/galera/t/galera_var_innodb_disallow_writes.test index 0d2a6effd92..10f3815e135 100644 --- a/mysql-test/suite/galera/t/galera_var_innodb_disallow_writes.test +++ b/mysql-test/suite/galera/t/galera_var_innodb_disallow_writes.test @@ -12,6 +12,7 @@ --source include/galera_cluster.inc --source include/have_innodb.inc +--source include/have_log_bin.inc --let $datadir= `SELECT @@datadir` diff --git a/mysql-test/suite/galera/t/galera_var_load_data_splitting.test b/mysql-test/suite/galera/t/galera_var_load_data_splitting.test index 38dab0a981b..621cb69fc16 100644 --- a/mysql-test/suite/galera/t/galera_var_load_data_splitting.test +++ b/mysql-test/suite/galera/t/galera_var_load_data_splitting.test @@ -36,4 +36,7 @@ SELECT COUNT(*) = 95000 FROM t1; --connection node_1 --eval SET GLOBAL wsrep_load_data_splitting = $wsrep_load_data_splitting_orig; +--connection node_2 +--eval SET GLOBAL wsrep_load_data_splitting = $wsrep_load_data_splitting_orig; + DROP TABLE t1; diff --git a/mysql-test/suite/galera/t/galera_var_log_bin.cnf b/mysql-test/suite/galera/t/galera_var_log_bin.cnf index f7f17e3720a..30ccee2024e 100644 --- a/mysql-test/suite/galera/t/galera_var_log_bin.cnf +++ b/mysql-test/suite/galera/t/galera_var_log_bin.cnf @@ -3,3 +3,8 @@ [mysqld] log-bin +[mysqld.1] +log-slave-updates + +[mysqld.2] +log-slave-updates diff --git a/mysql-test/suite/galera/t/galera_var_replicate_myisam_on.test b/mysql-test/suite/galera/t/galera_var_replicate_myisam_on.test index 90c786f0af0..adb5cb04273 100644 --- a/mysql-test/suite/galera/t/galera_var_replicate_myisam_on.test +++ b/mysql-test/suite/galera/t/galera_var_replicate_myisam_on.test @@ -142,8 +142,88 @@ INSERT INTO t1 VALUES(1); SELECT * FROM t1; DROP TABLE t1; +# +# Test prepared staments +# +--connection node_1 +CREATE TABLE t1 (id INT NOT NULL PRIMARY KEY, b INT) ENGINE=MyISAM; +INSERT INTO t1 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10); + +PREPARE upd from 'update t1 set b = 100 where id = 5'; +PREPARE ins from 'insert into t1 values (11,11)'; +PREPARE del from 'delete from t1 where id = 4'; +PREPARE rep from 'replace into t1 values (12,12),(6,600)'; + +EXECUTE upd; +EXECUTE ins; +EXECUTE del; +EXECUTE rep; + +SELECT * FROM t1 ORDER BY id; + +--connection node_2 +SELECT * FROM t1 ORDER BY id; + +DROP TABLE t1; + +# +# Test procedure +# +--connection node_1 +CREATE TABLE t1 (id INT NOT NULL PRIMARY KEY, b INT) ENGINE=MyISAM; +INSERT INTO t1 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10); + +DELIMITER |; +CREATE PROCEDURE proc() +BEGIN + UPDATE t1 set b = 100 WHERE id = 5; + INSERT INTO t1 VALUES (11,11); + DELETE FROM t1 WHERE id = 4; + REPLACE INTO t1 VALUES (12,12),(6,600); + COMMIT; +END| +DELIMITER ;| + +CALL proc(); +SELECT * FROM t1 ORDER BY id; + +--connection node_2 +SELECT * FROM t1 ORDER BY id; + +DROP PROCEDURE proc; +DROP TABLE t1; + +# +# Test trigger +# +--connection node_1 +CREATE TABLE t1 (id INT NOT NULL PRIMARY KEY, b INT) ENGINE=MyISAM; +CREATE TABLE t2 (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, b INT) ENGINE=MyISAM; +INSERT INTO t1 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10); +CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW INSERT INTO t2 VALUES (NULL, NEW.b); +CREATE TRIGGER tr2 BEFORE UPDATE ON t1 FOR EACH ROW INSERT INTO t2 VALUES (NULL, OLD.b),(NULL, NEW.b); +CREATE TRIGGER tr3 BEFORE DELETE ON t1 FOR EACH ROW INSERT INTO t2 VALUES (NULL, OLD.b); + +INSERT INTO t1 VALUES (11,11); +UPDATE t1 SET b = 200 WHERE id = 2; +DELETE FROM t1 where id = 5; +SELECT * FROM t1 ORDER BY id; +SELECT * FROM t2 ORDER BY id; + +--connection node_2 +SELECT * FROM t1 ORDER BY id; +SELECT * FROM t2 ORDER BY id; +DROP TRIGGER tr1; +DROP TRIGGER tr2; +DROP TRIGGER tr3; +DROP TABLE t1,t2; + --connection node_1 +--disable_query_log --eval SET GLOBAL wsrep_replicate_myisam = $wsrep_replicate_myisam_orig +--enable_query_log --connection node_2 +--disable_query_log --eval SET GLOBAL wsrep_replicate_myisam = $wsrep_replicate_myisam_orig +--enable_query_log diff --git a/mysql-test/suite/galera/t/galera_var_retry_autocommit.test b/mysql-test/suite/galera/t/galera_var_retry_autocommit.test index d12ae7936cb..6bed1b0120f 100644 --- a/mysql-test/suite/galera/t/galera_var_retry_autocommit.test +++ b/mysql-test/suite/galera/t/galera_var_retry_autocommit.test @@ -18,11 +18,11 @@ CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; SET SESSION wsrep_retry_autocommit = 0; -SET DEBUG_SYNC = 'wsrep_before_replication SIGNAL before_rep WAIT_FOR continue'; +SET DEBUG_SYNC = 'wsrep_before_certification SIGNAL before_cert WAIT_FOR continue'; --send INSERT INTO t1 (f1) VALUES (2) --connection node_1a -SET DEBUG_SYNC = 'now WAIT_FOR before_rep'; +SET DEBUG_SYNC = 'now WAIT_FOR before_cert'; --connection node_2 TRUNCATE TABLE t1; @@ -44,11 +44,11 @@ DROP TABLE t1; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; SET SESSION wsrep_retry_autocommit = 1; -SET DEBUG_SYNC = 'wsrep_before_replication SIGNAL before_rep WAIT_FOR continue'; ---send INSERT INTO t1 (f1) VALUES (2) +SET DEBUG_SYNC = 'wsrep_before_certification SIGNAL before_cert WAIT_FOR continue'; +--send INSERT INTO t1 (f1) VALUES (3) --connection node_1a -SET DEBUG_SYNC = 'now WAIT_FOR before_rep'; +SET DEBUG_SYNC = 'now WAIT_FOR before_cert'; --connection node_2 TRUNCATE TABLE t1; @@ -70,12 +70,12 @@ CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; SET SESSION wsrep_retry_autocommit = 1; SET GLOBAL debug_dbug = '+d,sync.wsrep_retry_autocommit'; -SET DEBUG_SYNC = 'wsrep_before_replication SIGNAL before_rep WAIT_FOR continue EXECUTE 2'; +SET DEBUG_SYNC = 'wsrep_before_certification SIGNAL before_cert WAIT_FOR continue EXECUTE 2'; ---send INSERT INTO t1 VALUES (2); +--send INSERT INTO t1 VALUES (4); --connection node_1a -SET DEBUG_SYNC = 'now WAIT_FOR before_rep'; +SET DEBUG_SYNC = 'now WAIT_FOR before_cert'; --connection node_2 TRUNCATE TABLE t1; @@ -83,7 +83,7 @@ TRUNCATE TABLE t1; --connection node_1a SET DEBUG_SYNC = 'now WAIT_FOR wsrep_retry_autocommit_reached'; SELECT COUNT(*) = 0 FROM t1; -SET DEBUG_SYNC = 'now SIGNAL wsrep_retry_autocommit_continue WAIT_FOR before_rep'; +SET DEBUG_SYNC = 'now SIGNAL wsrep_retry_autocommit_continue WAIT_FOR before_cert'; --connection node_2 TRUNCATE TABLE t1; @@ -109,9 +109,9 @@ CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; SET SESSION wsrep_retry_autocommit = 64; SET GLOBAL debug_dbug = '+d,sync.wsrep_retry_autocommit'; -SET DEBUG_SYNC = 'wsrep_before_replication SIGNAL before_rep WAIT_FOR continue EXECUTE 64'; +SET DEBUG_SYNC = 'wsrep_before_certification SIGNAL before_cert WAIT_FOR continue EXECUTE 64'; ---send INSERT INTO t1 VALUES (2) +--send INSERT INTO t1 VALUES (5) --disable_query_log --disable_result_log @@ -119,7 +119,7 @@ SET DEBUG_SYNC = 'wsrep_before_replication SIGNAL before_rep WAIT_FOR continue E while ($count) { --connection node_1a - SET DEBUG_SYNC = 'now WAIT_FOR before_rep'; + SET DEBUG_SYNC = 'now WAIT_FOR before_cert'; --connection node_2 TRUNCATE TABLE t1; diff --git a/mysql-test/suite/galera/t/galera_var_slave_threads.cnf b/mysql-test/suite/galera/t/galera_var_slave_threads.cnf new file mode 100644 index 00000000000..889c81b4a0a --- /dev/null +++ b/mysql-test/suite/galera/t/galera_var_slave_threads.cnf @@ -0,0 +1,7 @@ +!include ../galera_2nodes.cnf + +[mysqld.1] +auto_increment_offset=1 + +[mysqld.2] +auto_increment_offset=2 diff --git a/mysql-test/suite/galera/t/galera_var_slave_threads.test b/mysql-test/suite/galera/t/galera_var_slave_threads.test index 87e9f6de0ce..4a2dd07098c 100644 --- a/mysql-test/suite/galera/t/galera_var_slave_threads.test +++ b/mysql-test/suite/galera/t/galera_var_slave_threads.test @@ -8,6 +8,11 @@ --source include/have_innodb.inc --source include/force_restart.inc +# Save original auto_increment_offset values. +--let $node_1=node_1 +--let $node_2=node_2 +--source include/auto_increment_offset_save.inc + --connection node_1 --let $wsrep_slave_threads_orig = `SELECT @@wsrep_slave_threads` CREATE TABLE t1 (f1 INT PRIMARY KEY) Engine=InnoDB; @@ -109,3 +114,8 @@ DROP TABLE t1; --source include/wait_condition.inc SELECT NAME FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME LIKE 'test/t%'; + +# Restore original auto_increment_offset values. +--source include/auto_increment_offset_restore.inc + +--echo # End of tests diff --git a/mysql-test/suite/galera/t/galera_var_trx_fragment_size.test b/mysql-test/suite/galera/t/galera_var_trx_fragment_size.test new file mode 100644 index 00000000000..f19152f37f1 --- /dev/null +++ b/mysql-test/suite/galera/t/galera_var_trx_fragment_size.test @@ -0,0 +1,43 @@ +--source include/galera_cluster.inc + +SET SESSION wsrep_trx_fragment_size=DEFAULT; +SHOW SESSION VARIABLES LIKE 'wsrep_trx_fragment_size'; +SHOW GLOBAL VARIABLES LIKE 'wsrep_trx_fragment_size'; +SET SESSION wsrep_trx_fragment_size=0; +SHOW SESSION VARIABLES LIKE 'wsrep_trx_fragment_size'; +SHOW GLOBAL VARIABLES LIKE 'wsrep_trx_fragment_size'; +SET GLOBAL wsrep_trx_fragment_size=DEFAULT; +SHOW SESSION VARIABLES LIKE 'wsrep_trx_fragment_size'; +SHOW GLOBAL VARIABLES LIKE 'wsrep_trx_fragment_size'; +SET GLOBAL wsrep_trx_fragment_size=0; +SHOW SESSION VARIABLES LIKE 'wsrep_trx_fragment_size'; +SHOW GLOBAL VARIABLES LIKE 'wsrep_trx_fragment_size'; +SET GLOBAL wsrep_trx_fragment_size=-1; +SHOW SESSION VARIABLES LIKE 'wsrep_trx_fragment_size'; +SHOW GLOBAL VARIABLES LIKE 'wsrep_trx_fragment_size'; +SET SESSION wsrep_trx_fragment_size=-1; +SHOW SESSION VARIABLES LIKE 'wsrep_trx_fragment_size'; +SHOW GLOBAL VARIABLES LIKE 'wsrep_trx_fragment_size'; +SET GLOBAL wsrep_trx_fragment_size=100; +SHOW SESSION VARIABLES LIKE 'wsrep_trx_fragment_size'; +SHOW GLOBAL VARIABLES LIKE 'wsrep_trx_fragment_size'; +SET SESSION wsrep_trx_fragment_size=100; +SHOW SESSION VARIABLES LIKE 'wsrep_trx_fragment_size'; +SHOW GLOBAL VARIABLES LIKE 'wsrep_trx_fragment_size'; +--error ER_WRONG_TYPE_FOR_VAR +SET GLOBAL wsrep_trx_fragment_size='A'; +SHOW SESSION VARIABLES LIKE 'wsrep_trx_fragment_size'; +SHOW GLOBAL VARIABLES LIKE 'wsrep_trx_fragment_size'; +--error ER_WRONG_TYPE_FOR_VAR +SET SESSION wsrep_trx_fragment_size='A'; +SHOW SESSION VARIABLES LIKE 'wsrep_trx_fragment_size'; +SHOW GLOBAL VARIABLES LIKE 'wsrep_trx_fragment_size'; +--error ER_WRONG_TYPE_FOR_VAR +SET GLOBAL wsrep_trx_fragment_size=NULL; +SHOW SESSION VARIABLES LIKE 'wsrep_trx_fragment_size'; +SHOW GLOBAL VARIABLES LIKE 'wsrep_trx_fragment_size'; +--error ER_WRONG_TYPE_FOR_VAR +SET SESSION wsrep_trx_fragment_size=NULL; +SHOW SESSION VARIABLES LIKE 'wsrep_trx_fragment_size'; +SHOW GLOBAL VARIABLES LIKE 'wsrep_trx_fragment_size'; +SET GLOBAL wsrep_trx_fragment_size=DEFAULT; diff --git a/mysql-test/suite/galera/t/galera_vote_drop_temporary-master.opt b/mysql-test/suite/galera/t/galera_vote_drop_temporary-master.opt new file mode 100644 index 00000000000..beae84b3862 --- /dev/null +++ b/mysql-test/suite/galera/t/galera_vote_drop_temporary-master.opt @@ -0,0 +1 @@ +--log-bin diff --git a/mysql-test/suite/galera/t/galera_wan_restart_sst.test b/mysql-test/suite/galera/t/galera_wan_restart_sst.test index 9b12eeed1ac..24620458570 100644 --- a/mysql-test/suite/galera/t/galera_wan_restart_sst.test +++ b/mysql-test/suite/galera/t/galera_wan_restart_sst.test @@ -37,10 +37,8 @@ INSERT INTO t1 VALUES (4); INSERT INTO t1 VALUES (13); --source include/kill_galera.inc ---sleep 5 --connection node_1 ---source include/wait_until_connected_again.inc INSERT INTO t1 VALUES (11); --connection node_2 @@ -51,8 +49,6 @@ INSERT INTO t1 VALUES (14); --connection node_3 --source include/start_mysqld.inc ---sleep 5 ---source include/wait_until_connected_again.inc INSERT INTO t1 VALUES (131); @@ -64,10 +60,8 @@ INSERT INTO t1 VALUES (131); INSERT INTO t1 VALUES (22); --source include/kill_galera.inc ---sleep 5 --connection node_1 ---source include/wait_until_connected_again.inc INSERT INTO t1 VALUES (21); --connection node_3 @@ -78,8 +72,6 @@ INSERT INTO t1 VALUES (24); --connection node_2 --source include/start_mysqld.inc ---sleep 5 ---source include/wait_until_connected_again.inc INSERT INTO t1 VALUES (221); @@ -91,10 +83,8 @@ INSERT INTO t1 VALUES (221); INSERT INTO t1 VALUES (34); --source include/kill_galera.inc ---sleep 5 --connection node_1 ---source include/wait_until_connected_again.inc INSERT INTO t1 VALUES (31); --connection node_2 @@ -105,8 +95,6 @@ INSERT INTO t1 VALUES (33); --connection node_4 --source include/start_mysqld.inc ---sleep 5 ---source include/wait_until_connected_again.inc INSERT INTO t1 VALUES (341); @@ -119,19 +107,19 @@ INSERT INTO t1 VALUES (341); --let $wait_condition = SELECT VARIABLE_VALUE = 4 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'; --source include/wait_condition.inc -SELECT COUNT(*) = 19 FROM t1; +SELECT COUNT(*) AS EXPECT_19 FROM t1; --connection node_2 SELECT VARIABLE_VALUE = 4 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'; -SELECT COUNT(*) = 19 FROM t1; +SELECT COUNT(*) AS EXPECT_19 FROM t1; --connection node_3 SELECT VARIABLE_VALUE = 4 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'; -SELECT COUNT(*) = 19 FROM t1; +SELECT COUNT(*) AS EXPECT_19 FROM t1; --connection node_4 SELECT VARIABLE_VALUE = 4 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'; -SELECT COUNT(*) = 19 FROM t1; +SELECT COUNT(*) AS EXPECT_19 FROM t1; --connection node_1 DROP TABLE t1; @@ -139,6 +127,7 @@ CALL mtr.add_suppression("There are no nodes in the same segment that will ever CALL mtr.add_suppression("WSREP: gcs_caused\\(\\) returned -1 \\(Operation not permitted\\)"); --connection node_2 +CALL mtr.add_suppression("There are no nodes in the same segment that will ever be able to become donors, yet there is a suitable donor outside"); CALL mtr.add_suppression("Action message in non-primary configuration from member 0"); --connection node_3 @@ -146,4 +135,5 @@ CALL mtr.add_suppression("There are no nodes in the same segment that will ever CALL mtr.add_suppression("Action message in non-primary configuration from member 0"); --connection node_4 +CALL mtr.add_suppression("There are no nodes in the same segment that will ever be able to become donors, yet there is a suitable donor outside"); CALL mtr.add_suppression("Action message in non-primary configuration from member 0"); diff --git a/mysql-test/suite/galera/t/galera_wsrep_new_cluster.test b/mysql-test/suite/galera/t/galera_wsrep_new_cluster.test index 422759ece59..84b6c032fc6 100644 --- a/mysql-test/suite/galera/t/galera_wsrep_new_cluster.test +++ b/mysql-test/suite/galera/t/galera_wsrep_new_cluster.test @@ -5,7 +5,6 @@ # --source include/galera_cluster.inc ---source include/have_innodb.inc --connection node_1 diff --git a/mysql-test/suite/galera/t/mdev_10518.test b/mysql-test/suite/galera/t/mdev_10518.test index 015f25abf2f..eec47507e3a 100644 --- a/mysql-test/suite/galera/t/mdev_10518.test +++ b/mysql-test/suite/galera/t/mdev_10518.test @@ -50,10 +50,14 @@ DROP TABLE t1, t2; --echo #cleanup --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; --source include/galera_end.inc --echo # End of test diff --git a/mysql-test/suite/galera/t/mdev_18730.test b/mysql-test/suite/galera/t/mdev_18730.test new file mode 100644 index 00000000000..e32bae68ce9 --- /dev/null +++ b/mysql-test/suite/galera/t/mdev_18730.test @@ -0,0 +1,71 @@ +# +# Test scenario: +# +# Run an autocommit INSERT and stop the execution after the INSERT +# has released commit order critical section. On another connection, +# run SR transaction which will store one fragment into streaming log. +# If the bug is present, the fragment streaming log commit may +# out of order, and completing INSERT may cause assertion in debug build. +# +# Note that due to nature of this bug, it is may not be possible +# to construct fully deterministic test case which will crash the +# server each time if the bug is present, but will work with fix. +# + +--source include/galera_cluster.inc +--source include/have_log_bin.inc +--source include/have_debug_sync.inc + +CREATE TABLE t1 (f1 INT PRIMARY KEY); + +# Control connection for controlling node_1 debug sync points +--let $galera_connection_name = ctrl +--let $galera_server_number = 1 +--source include/galera_connect.inc + +# Another connection for SR transaction +--let $galera_connection_name = node_1_sr +--let $galera_server_number = 1 +--source include/galera_connect.inc + +# Set up sync point and send INSERT +--connection node_1 +SET DEBUG_SYNC = "wsrep_after_commit_order_leave SIGNAL acol_reached WAIT_FOR acol_continue"; +--send INSERT INTO t1 VALUES (1) + +# Wait until INSERT releases commit order +--connection ctrl +SET DEBUG_SYNC = "now WAIT_FOR acol_reached"; + +# Streaming transaction, will replicate fragment for each row separately. +--connection node_1_sr +SET SESSION wsrep_sync_wait = 0; +SET SESSION wsrep_trx_fragment_unit = 'rows'; +SET SESSION wsrep_trx_fragment_size = 1; + +START TRANSACTION; +--send INSERT INTO t1 VALUES (2) + +--connection ctrl +# Now let the thread node_1 continue after a one second sleep. +# The sleep while not completely deterministic, will allow the SR +# insert to complete the commit out of order in most of the cases if +# the bug is present, leading to assertion in debug build. +--sleep 1 +SET DEBUG_SYNC = "now SIGNAL acol_continue"; + +--connection node_1 +--reap +--connection node_1_sr +--reap +ROLLBACK; + +--connection ctrl +SET DEBUG_SYNC = "RESET"; +--disconnect ctrl +--disconnect node_1_sr + +--connection node_1 +DROP TABLE t1; + +--source include/galera_end.inc diff --git a/mysql-test/suite/galera/t/mdev_21025.test b/mysql-test/suite/galera/t/mdev_21025.test new file mode 100644 index 00000000000..5179b0639ef --- /dev/null +++ b/mysql-test/suite/galera/t/mdev_21025.test @@ -0,0 +1,22 @@ +# +# MDEV-21205 +# +# Start transaction after INSERT IGNORE which had no effect and +# kept the transaction open caused an assertion on the following +# START TRANSACTION because the empty transaction was not properly +# terminated. +# + +--source include/galera_cluster.inc +CREATE TABLE t1 (f1 INTEGER PRIMARY KEY); +START TRANSACTION; +INSERT INTO t1 (f1) VALUES (1); + +START TRANSACTION; +# This INSERT succeeds with duplicate key warning due to IGNORE clause +# and keeps the transaction open. The following START TRANSACTION causes +# an assertion if the bug is present. +INSERT IGNORE INTO t1 (f1) VALUES (1); +START TRANSACTION; + +DROP TABLE t1; diff --git a/mysql-test/suite/galera/t/mdev_21718.cnf b/mysql-test/suite/galera/t/mdev_21718.cnf new file mode 100644 index 00000000000..9e066597a13 --- /dev/null +++ b/mysql-test/suite/galera/t/mdev_21718.cnf @@ -0,0 +1,4 @@ +!include ../galera_2nodes.cnf + +[mysqld] +thread-handling=pool-of-threads diff --git a/mysql-test/suite/galera/t/mdev_21718.test b/mysql-test/suite/galera/t/mdev_21718.test new file mode 100644 index 00000000000..3fbc4e773d5 --- /dev/null +++ b/mysql-test/suite/galera/t/mdev_21718.test @@ -0,0 +1,35 @@ +# +# MDEV-21718 Reproduce a case where BF abort after +# client session acquires the ownership but before calls +# before_command() causes an assertion in wsrep-lib. +# +--source include/galera_cluster.inc +--source include/have_innodb.inc +--source include/have_debug.inc +--source include/have_debug_sync.inc + +CREATE TABLE t1 (f1 INT PRIMARY KEY) ENGINE=InnoDB; + +--let $galera_connection_name = node_1_ctrl +--let $galera_server_number = 1 +--source include/galera_connect.inc + +--connection node_1 +START TRANSACTION; +INSERT INTO t1 VALUES (1); +SET DEBUG_SYNC = "wsrep_before_before_command SIGNAL reached WAIT_FOR continue"; +--send COMMIT + +--connection node_1_ctrl +SET DEBUG_SYNC = "now WAIT_FOR reached"; + +--connection node_2 +INSERT INTO t1 VALUES (1); + +# BF abort wakes up node_1 from sync wait. +--connection node_1 +--error ER_LOCK_DEADLOCK +--reap + +DROP TABLE t1; +SET DEBUG_SYNC = "RESET"; diff --git a/mysql-test/suite/galera/t/mysql-wsrep#198-master.opt b/mysql-test/suite/galera/t/mysql-wsrep#198-master.opt new file mode 100644 index 00000000000..beae84b3862 --- /dev/null +++ b/mysql-test/suite/galera/t/mysql-wsrep#198-master.opt @@ -0,0 +1 @@ +--log-bin diff --git a/mysql-test/suite/galera/t/mysql-wsrep#237.test b/mysql-test/suite/galera/t/mysql-wsrep#237.test index cba8dfeb275..174266bdbc5 100644 --- a/mysql-test/suite/galera/t/mysql-wsrep#237.test +++ b/mysql-test/suite/galera/t/mysql-wsrep#237.test @@ -7,13 +7,13 @@ CREATE TABLE t (f1 INTEGER PRIMARY KEY) Engine=InnoDB; --connection node_1 -SET DEBUG_SYNC = 'wsrep_before_replication WAIT_FOR continue'; +SET DEBUG_SYNC = 'wsrep_before_certification WAIT_FOR continue'; --send INSERT INTO t values (1); --connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1 --connection node_1a SET SESSION wsrep_sync_wait = 0; ---let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE STATE = 'debug sync point: wsrep_before_replication' +--let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE STATE = 'debug sync point: wsrep_before_certification' --source include/wait_condition.inc --connection node_2 diff --git a/mysql-test/suite/galera/t/mysql-wsrep#33.test b/mysql-test/suite/galera/t/mysql-wsrep#33.test index 351e457f165..a67336cc67e 100644 --- a/mysql-test/suite/galera/t/mysql-wsrep#33.test +++ b/mysql-test/suite/galera/t/mysql-wsrep#33.test @@ -6,15 +6,23 @@ --let $node_1=node_1 --let $node_2=node_2 --source suite/galera/include/auto_increment_offset_save.inc + --source suite/galera/include/galera_sst_set_mysqldump.inc --source suite/galera/include/galera_st_disconnect_slave.inc ---source suite/galera/include/galera_sst_restore.inc +--source suite/galera/include/galera_st_shutdown_slave.inc +--source suite/galera/include/galera_st_clean_slave.inc +--source suite/galera/include/galera_st_kill_slave.inc +--source suite/galera/include/galera_st_kill_slave_ddl.inc --connection node_2 ---echo Restarting server ... ---source include/restart_mysqld.inc - --source suite/galera/include/auto_increment_offset_restore.inc +--source suite/galera/include/galera_sst_restore.inc + +# We have to manually restore global_log and slow_query_log due to mysql-wsrep#108 +# Otherwise MTR's check_testcases complains + +SET GLOBAL general_log = ON; +SET GLOBAL slow_query_log = ON; diff --git a/mysql-test/suite/galera/t/mysql-wsrep#332.test b/mysql-test/suite/galera/t/mysql-wsrep#332.test index 2da01ba900e..674a5c3de52 100644 --- a/mysql-test/suite/galera/t/mysql-wsrep#332.test +++ b/mysql-test/suite/galera/t/mysql-wsrep#332.test @@ -1,7 +1,7 @@ --source include/galera_cluster.inc --source include/have_innodb.inc --source include/have_debug_sync.inc ---source suite/galera/include/galera_have_debug_sync.inc +--source include/galera_have_debug_sync.inc # Open connection node_1a here, MW-369.inc will use it later --connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1 diff --git a/mysql-test/suite/galera/t/mysql-wsrep-bugs-607.test b/mysql-test/suite/galera/t/mysql-wsrep-bugs-607.test new file mode 100644 index 00000000000..c24ec7911e2 --- /dev/null +++ b/mysql-test/suite/galera/t/mysql-wsrep-bugs-607.test @@ -0,0 +1,70 @@ +--source include/galera_cluster.inc +--source include/have_debug.inc +--source include/have_debug_sync.inc +--source include/galera_have_debug_sync.inc +--source include/have_log_bin.inc + +# +# Test case to stress the order of wsrep XID checkpointing. +# +# In buggy version, the transaction which failed certification can +# rush to record wsrep XID checkpoint before the offending applier, +# causing assert in innodb sys header update routine +# + +--echo # +--echo # test the order of wsrep XID storage after certifiation failure +--echo # + +--connection node_1 +set session wsrep_sync_wait=0; + +create table t1 (i int primary key, j int); + +insert into t1 values (4, 0); + +--connect node_2b, 127.0.0.1, root, , test, $NODE_MYPORT_2 +--connection node_2b +set session wsrep_sync_wait=0; +# wait for the last insert to be replicated from node 1 +--let $wait_condition = SELECT COUNT(*) = 1 FROM test.t1; +--source include/wait_condition.inc + +# block applier before applying +SET GLOBAL debug_dbug = "d,sync.wsrep_apply_cb"; + +# send update from node 1, it will pause in the sync point +--connection node_1 +UPDATE test.t1 set j=1 where i=4; + +--connection node_2b +# wait until applier has reached the sync point +SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached"; + +# look number of cert failures so far, and expect one more to happen +--let $expected_cert_failures = `SELECT VARIABLE_VALUE+1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_cert_failures'` + +# Inject a conflicting update in node 2, it should fail in certification +--connection node_2 +set session wsrep_sync_wait=0; +set session wsrep_retry_autocommit=0; +--send UPDATE test.t1 SET j=2 WHERE i=4 + +--connection node_2b +# wait until the update has hit certification failure + +--let $wait_condition = SELECT VARIABLE_VALUE = $expected_cert_failures FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_cert_failures' +--source include/wait_condition.inc + +# release the applier +SET DEBUG_SYNC = "now SIGNAL signal.wsrep_apply_cb"; + +SET GLOBAL debug_dbug = ""; +SET DEBUG_SYNC = "RESET"; + +--connection node_2 +--error ER_LOCK_DEADLOCK +--reap +select * from t1; + +DROP TABLE t1; diff --git a/mysql-test/suite/galera/t/partition.test b/mysql-test/suite/galera/t/partition.test index 0159ef8f607..13e09a4e3e6 100644 --- a/mysql-test/suite/galera/t/partition.test +++ b/mysql-test/suite/galera/t/partition.test @@ -134,9 +134,12 @@ CREATE TABLE t1 (pk INT PRIMARY KEY) SELECT COUNT(*) FROM t1; -# LOAD-ing 20002 rows causes 3 commits to be registered +# LOAD-ing 20002 rows causes +# 3 commits to be registered when the Galera library does not support streaming replication and +# 5 commits to be registered when the Galera library supports streaming replication --disable_query_log ---eval SELECT $wsrep_last_committed_after = $wsrep_last_committed_before + 3 AS wsrep_last_committed_diff; +--replace_result 3 AS_EXPECTED_3_or_5 5 AS_EXPECTED_3_or_5 +--eval SELECT $wsrep_last_committed_after - $wsrep_last_committed_before AS wsrep_last_committed_diff; --enable_query_log DROP TABLE t1; @@ -167,7 +170,7 @@ SELECT COUNT(*) FROM t1; # LOAD-ing 101 rows causes 1 commit to be registered --disable_query_log ---eval SELECT $wsrep_last_committed_after = $wsrep_last_committed_before + 1 AS wsrep_last_committed_diff; +--eval SELECT $wsrep_last_committed_after - $wsrep_last_committed_before AS wsrep_last_committed_diff; --enable_query_log DROP TABLE t1; @@ -196,9 +199,12 @@ CREATE TABLE t1 (pk INT PRIMARY KEY) --source include/wait_condition.inc SELECT COUNT(*) FROM t1; -# LOAD-ing 20002 rows causes 1 commit to be registered +# LOAD-ing 20002 rows causes +# 1 commit to be registered when the Galera library does not support streaming replication and +# 2 commits to be registered when the Galera library supports streaming replication --disable_query_log ---eval SELECT $wsrep_last_committed_after = $wsrep_last_committed_before + 1 AS wsrep_last_committed_diff; +--replace_result 1 AS_EXPECTED_1_or_2 2 AS_EXPECTED_1_or_2 +--eval SELECT $wsrep_last_committed_after - $wsrep_last_committed_before AS wsrep_last_committed_diff; --enable_query_log DROP TABLE t1; diff --git a/mysql-test/suite/galera/t/rpl_row_annotate.test b/mysql-test/suite/galera/t/rpl_row_annotate.test index b1cfdb36639..0ec30829982 100644 --- a/mysql-test/suite/galera/t/rpl_row_annotate.test +++ b/mysql-test/suite/galera/t/rpl_row_annotate.test @@ -3,11 +3,15 @@ --echo # On node_2 --connection node_2 +SET GLOBAL wsrep_on=OFF; RESET MASTER; +SET GLOBAL wsrep_on=ON; --echo # On node_1 --connection node_1 +SET GLOBAL wsrep_on=OFF; RESET MASTER; +SET GLOBAL wsrep_on=ON; CREATE TABLE t1(i INT)ENGINE=INNODB; INSERT INTO t1 VALUES(1); DELETE FROM t1 WHERE i = 1; @@ -38,5 +42,4 @@ let $start_pos= `select @binlog_start_pos`; # Cleanup DROP TABLE t1; ---source include/galera_end.inc --echo # End of test diff --git a/mysql-test/suite/galera/t/versioning_trx_id.test b/mysql-test/suite/galera/t/versioning_trx_id.test index 175ead265a5..017379c32c4 100644 --- a/mysql-test/suite/galera/t/versioning_trx_id.test +++ b/mysql-test/suite/galera/t/versioning_trx_id.test @@ -1,5 +1,7 @@ --source include/galera_cluster.inc +call mtr.add_suppression("Sending JOIN failed:.*"); + --connect node_3, 127.0.0.1, root, , test, $NODE_MYPORT_3 --connection node_1 @@ -7,22 +9,34 @@ create table t1 (a int, s bigint unsigned as row start, e bigint unsigned as row insert into t1 (a) values (1),(2); --connection node_2 +set session wsrep_sync_wait=15; insert into t1 (a) values (3),(4); select a from t1; select count(*) from mysql.transaction_registry where begin_timestamp='0-0-0'; +if (`SELECT count(*) from mysql.transaction_registry where begin_timestamp>=commit_timestamp`) { + select * from mysql.transaction_registry; +} select count(*) from mysql.transaction_registry where begin_timestamp>=commit_timestamp; --connection node_3 +set session wsrep_sync_wait=15; insert into t1 (a) values (5),(6); select a from t1; select count(*) from mysql.transaction_registry where begin_timestamp='0-0-0'; +if (`SELECT count(*) from mysql.transaction_registry where begin_timestamp>=commit_timestamp`) { + select * from mysql.transaction_registry; +} select count(*) from mysql.transaction_registry where begin_timestamp>=commit_timestamp; --connection node_1 +set session wsrep_sync_wait=15; select a from t1; select count(*) from mysql.transaction_registry where begin_timestamp='0-0-0'; +if (`SELECT count(*) from mysql.transaction_registry where begin_timestamp>=commit_timestamp`) { + select * from mysql.transaction_registry; +} select count(*) from mysql.transaction_registry where begin_timestamp>=commit_timestamp; drop table t1; ---source include/galera_end.inc +--disconnect node_3 diff --git a/mysql-test/suite/galera/t/wsrep_trx_fragment_size_sr.test b/mysql-test/suite/galera/t/wsrep_trx_fragment_size_sr.test new file mode 100644 index 00000000000..a970cc09afc --- /dev/null +++ b/mysql-test/suite/galera/t/wsrep_trx_fragment_size_sr.test @@ -0,0 +1,22 @@ +-- source include/galera_cluster.inc + +-- let $sr = `SELECT variable_value LIKE '%:STREAMING:%' FROM information_schema.session_status WHERE variable_name = 'wsrep_provider_capabilities'` + +if (!$sr) +{ + -- skip The test requires a wsrep provider that supports streaming replication. +} + +SELECT variable_value FROM information_schema.session_variables +WHERE variable_name = 'wsrep_trx_fragment_size'; + +SET SESSION wsrep_trx_fragment_size = 0; +SET SESSION wsrep_trx_fragment_size = 123; + +SELECT variable_value FROM information_schema.global_variables +WHERE variable_name = 'wsrep_trx_fragment_size'; + +SET GLOBAL wsrep_trx_fragment_size = 0; +SET GLOBAL wsrep_trx_fragment_size = 123; + +SET GLOBAL wsrep_trx_fragment_size = default; |