summaryrefslogtreecommitdiff
path: root/mysql-test/suite/rpl/t
diff options
context:
space:
mode:
authorOleksandr Byelkin <sanja@mariadb.com>2022-10-04 13:55:38 +0200
committerOleksandr Byelkin <sanja@mariadb.com>2022-10-04 13:55:38 +0200
commit9206c1ea9746ab022f531e40eec7d930be137f21 (patch)
tree7fdd6dbee3e1d5df1801edf099d4b417ba5d6db5 /mysql-test/suite/rpl/t
parent8759967d1c53603ee63b7e28bdf6c76b80635073 (diff)
parentbb76dcbec77d31818ec7dfc0d0dc1f4b49185bc5 (diff)
downloadmariadb-git-9206c1ea9746ab022f531e40eec7d930be137f21.tar.gz
Merge branch '10.10' into 10.11
Diffstat (limited to 'mysql-test/suite/rpl/t')
-rw-r--r--mysql-test/suite/rpl/t/rpl_lost_events_on_rotate.test1
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_img_sequence_full.cnf (renamed from mysql-test/suite/rpl/t/rpl_row_img_sequence.cnf)0
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_img_sequence_full.test48
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_img_sequence_min.cnf21
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_img_sequence_min.test (renamed from mysql-test/suite/rpl/t/rpl_row_img_sequence.test)29
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_img_sequence_noblob.cnf21
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_img_sequence_noblob.test51
-rw-r--r--mysql-test/suite/rpl/t/rpl_seconds_behind_master_spike.test1
8 files changed, 151 insertions, 21 deletions
diff --git a/mysql-test/suite/rpl/t/rpl_lost_events_on_rotate.test b/mysql-test/suite/rpl/t/rpl_lost_events_on_rotate.test
index 3a4a24e1762..8c4baafe23d 100644
--- a/mysql-test/suite/rpl/t/rpl_lost_events_on_rotate.test
+++ b/mysql-test/suite/rpl/t/rpl_lost_events_on_rotate.test
@@ -13,6 +13,7 @@
# during this window while forcing a rotation in the binlog.
#
--source include/have_debug.inc
+--source include/have_debug_sync.inc
--source include/master-slave.inc
--connection master
diff --git a/mysql-test/suite/rpl/t/rpl_row_img_sequence.cnf b/mysql-test/suite/rpl/t/rpl_row_img_sequence_full.cnf
index 7104b4e4502..7104b4e4502 100644
--- a/mysql-test/suite/rpl/t/rpl_row_img_sequence.cnf
+++ b/mysql-test/suite/rpl/t/rpl_row_img_sequence_full.cnf
diff --git a/mysql-test/suite/rpl/t/rpl_row_img_sequence_full.test b/mysql-test/suite/rpl/t/rpl_row_img_sequence_full.test
new file mode 100644
index 00000000000..a0c6aa4dc7a
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_row_img_sequence_full.test
@@ -0,0 +1,48 @@
+#
+# Purpose:
+# The rpl_row_img_sequence group of tests verify that sequence MDL updates,
+# i.e. NEXTVAL and SETVAL, respect the binlog_row_image variable value when
+# written into the binary log. In particular, it ensures that only changed
+# columns are written with MINIMAL image mode, and all columns are written
+# otherwise. This test focuses on validating the behavior of
+# binlog_row_img=FULL.
+#
+# Methodology
+# After issuing a sequence update, ensure that both 1) it was replicated
+# correctly, and 2) it was binlogged respective to the binlog_row_image value.
+# The sequence table does not use caching to ensure each update is immediately
+# binlogged. Each command is binlogged into its own unique log file, and the
+# entirety of the file is analyzed for correctness of its sequence event.
+# Specifically, mysqlbinlog is used in verbose mode so it outputs the columns
+# which belong to the event, and the columns are analyzed to ensure the correct
+# ones were logged. rpl_row_img_general_loop.inc is used to test with multiple
+# chained replicas, varying engines between InnoDB and MyISAM.
+#
+# References:
+# MDEV-28487: sequences not respect value of binlog_row_image with select
+# nextval(seq_gen)
+#
+
+--let $rpl_topology= 1->2->3
+--source include/rpl_init.inc
+--source include/have_binlog_format_row.inc
+
+--connection server_1
+--source include/have_innodb.inc
+--connection server_2
+--source include/have_innodb.inc
+--connection server_3
+--source include/have_innodb.inc
+--connection server_1
+
+--echo #
+--echo # binlog_row_image=FULL should write all columns to the binary log
+--echo #
+--let $row_img_set=server_1:FULL:N,server_2:FULL:Y,server_3:FULL:Y
+--source include/rpl_row_img_set.inc
+--let $expected_columns=(1,2,3,4,5,6,7,8)
+--let row_img_test_script= include/rpl_row_img_sequence.inc
+--source include/rpl_row_img_general_loop.inc
+
+--source include/rpl_end.inc
+--echo # End of tests
diff --git a/mysql-test/suite/rpl/t/rpl_row_img_sequence_min.cnf b/mysql-test/suite/rpl/t/rpl_row_img_sequence_min.cnf
new file mode 100644
index 00000000000..7104b4e4502
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_row_img_sequence_min.cnf
@@ -0,0 +1,21 @@
+!include include/default_mysqld.cnf
+
+[mysqld.1]
+log-slave-updates
+innodb
+gtid_domain_id=0
+
+[mysqld.2]
+log-slave-updates
+innodb
+gtid_domain_id=1
+
+[mysqld.3]
+log-slave-updates
+innodb
+gtid_domain_id=2
+
+[ENV]
+SERVER_MYPORT_1= @mysqld.1.port
+SERVER_MYPORT_2= @mysqld.2.port
+SERVER_MYPORT_3= @mysqld.3.port
diff --git a/mysql-test/suite/rpl/t/rpl_row_img_sequence.test b/mysql-test/suite/rpl/t/rpl_row_img_sequence_min.test
index 23860fb2de5..0a3b2827ffa 100644
--- a/mysql-test/suite/rpl/t/rpl_row_img_sequence.test
+++ b/mysql-test/suite/rpl/t/rpl_row_img_sequence_min.test
@@ -1,9 +1,11 @@
#
# Purpose:
-# This test verifies that sequence DML updates, i.e. NEXTVAL and SETVAL,
-# respect the binlog_row_image variable value when written into the binary log.
-# In particular, it ensures that only changed columns are written with MINIMAL
-# image mode, and all columns are written otherwise.
+# The rpl_row_img_sequence group of tests verify that sequence MDL updates,
+# i.e. NEXTVAL and SETVAL, respect the binlog_row_image variable value when
+# written into the binary log. In particular, it ensures that only changed
+# columns are written with MINIMAL image mode, and all columns are written
+# otherwise. This test focuses on validating the behavior of
+# binlog_row_img=MINIMAL.
#
# Methodology
# After issuing a sequence update, ensure that both 1) it was replicated
@@ -34,8 +36,8 @@
--connection server_1
--echo #
---echo # Test Case 1) binlog_row_image=MINIMAL should write only columns
---echo # 1 and 8 to the binary log
+--echo # binlog_row_image=MINIMAL should write only columns 1 and 8 to the
+--echo # binary log
--echo #
--let $row_img_set=server_1:MINIMAL:N,server_2:MINIMAL:Y,server_3:MINIMAL:Y
--source include/rpl_row_img_set.inc
@@ -43,23 +45,8 @@
--let row_img_test_script= include/rpl_row_img_sequence.inc
--source include/rpl_row_img_general_loop.inc
---echo #
---echo # Test Case 2) binlog_row_image=NOBLOB should write all columns to the
---echo # binary log
---echo #
---let $row_img_set=server_1:NOBLOB:N,server_2:NOBLOB:Y,server_3:NOBLOB:Y
---source include/rpl_row_img_set.inc
---let $expected_columns=(1,2,3,4,5,6,7,8)
---source include/rpl_row_img_general_loop.inc
-
---echo #
---echo # Test Case 3) binlog_row_image=NOBLOB should write all columns to the
---echo # binary log
---echo #
--let $row_img_set=server_1:FULL:N,server_2:FULL:Y,server_3:FULL:Y
--source include/rpl_row_img_set.inc
---let $expected_columns=(1,2,3,4,5,6,7,8)
---source include/rpl_row_img_general_loop.inc
--source include/rpl_end.inc
--echo # End of tests
diff --git a/mysql-test/suite/rpl/t/rpl_row_img_sequence_noblob.cnf b/mysql-test/suite/rpl/t/rpl_row_img_sequence_noblob.cnf
new file mode 100644
index 00000000000..7104b4e4502
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_row_img_sequence_noblob.cnf
@@ -0,0 +1,21 @@
+!include include/default_mysqld.cnf
+
+[mysqld.1]
+log-slave-updates
+innodb
+gtid_domain_id=0
+
+[mysqld.2]
+log-slave-updates
+innodb
+gtid_domain_id=1
+
+[mysqld.3]
+log-slave-updates
+innodb
+gtid_domain_id=2
+
+[ENV]
+SERVER_MYPORT_1= @mysqld.1.port
+SERVER_MYPORT_2= @mysqld.2.port
+SERVER_MYPORT_3= @mysqld.3.port
diff --git a/mysql-test/suite/rpl/t/rpl_row_img_sequence_noblob.test b/mysql-test/suite/rpl/t/rpl_row_img_sequence_noblob.test
new file mode 100644
index 00000000000..38ff469f22f
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_row_img_sequence_noblob.test
@@ -0,0 +1,51 @@
+#
+# Purpose:
+# The rpl_row_img_sequence group of tests verify that sequence MDL updates,
+# i.e. NEXTVAL and SETVAL, respect the binlog_row_image variable value when
+# written into the binary log. In particular, it ensures that only changed
+# columns are written with MINIMAL image mode, and all columns are written
+# otherwise. This test focuses on validating the behavior of
+# binlog_row_img=NOBLOB.
+#
+# Methodology
+# After issuing a sequence update, ensure that both 1) it was replicated
+# correctly, and 2) it was binlogged respective to the binlog_row_image value.
+# The sequence table does not use caching to ensure each update is immediately
+# binlogged. Each command is binlogged into its own unique log file, and the
+# entirety of the file is analyzed for correctness of its sequence event.
+# Specifically, mysqlbinlog is used in verbose mode so it outputs the columns
+# which belong to the event, and the columns are analyzed to ensure the correct
+# ones were logged. rpl_row_img_general_loop.inc is used to test with multiple
+# chained replicas, varying engines between InnoDB and MyISAM.
+#
+# References:
+# MDEV-28487: sequences not respect value of binlog_row_image with select
+# nextval(seq_gen)
+#
+
+--let $rpl_topology= 1->2->3
+--source include/rpl_init.inc
+--source include/have_binlog_format_row.inc
+
+--connection server_1
+--source include/have_innodb.inc
+--connection server_2
+--source include/have_innodb.inc
+--connection server_3
+--source include/have_innodb.inc
+--connection server_1
+
+--echo #
+--echo # binlog_row_image=NOBLOB should write all columns to the binary logs
+--echo #
+--let $row_img_set=server_1:NOBLOB:N,server_2:NOBLOB:Y,server_3:NOBLOB:Y
+--source include/rpl_row_img_set.inc
+--let $expected_columns=(1,2,3,4,5,6,7,8)
+--let row_img_test_script= include/rpl_row_img_sequence.inc
+--source include/rpl_row_img_general_loop.inc
+
+--let $row_img_set=server_1:FULL:N,server_2:FULL:Y,server_3:FULL:Y
+--source include/rpl_row_img_set.inc
+
+--source include/rpl_end.inc
+--echo # End of tests
diff --git a/mysql-test/suite/rpl/t/rpl_seconds_behind_master_spike.test b/mysql-test/suite/rpl/t/rpl_seconds_behind_master_spike.test
index e39b7726fe4..600ba9b18d7 100644
--- a/mysql-test/suite/rpl/t/rpl_seconds_behind_master_spike.test
+++ b/mysql-test/suite/rpl/t/rpl_seconds_behind_master_spike.test
@@ -20,6 +20,7 @@
# MDEV-16091: Seconds_Behind_Master spikes to millions of seconds
#
--source include/have_debug.inc
+--source include/have_debug_sync.inc
--source include/have_innodb.inc
--source include/master-slave.inc