summaryrefslogtreecommitdiff
path: root/mysql-test/suite/binlog
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2019-07-18 13:10:09 +0300
committerMarko Mäkelä <marko.makela@mariadb.com>2019-07-18 13:10:09 +0300
commit69628551858825bebc3f1653882920e4f6555cbb (patch)
treed744f4354c81c93ac76bf6530eefde17eb093177 /mysql-test/suite/binlog
parent26b594e4110b4f7e6f2bcfbdb4c87aef65652bc0 (diff)
parent10ebdb7f1d7a3f6aa6a91b40a9d90f482da08e58 (diff)
downloadmariadb-git-69628551858825bebc3f1653882920e4f6555cbb.tar.gz
Merge 10.1 into 10.2
Diffstat (limited to 'mysql-test/suite/binlog')
-rw-r--r--mysql-test/suite/binlog/r/binlog_mysqlbinlog_stop_never.result16
-rw-r--r--mysql-test/suite/binlog/t/binlog_mysqlbinlog_stop_never.test66
2 files changed, 82 insertions, 0 deletions
diff --git a/mysql-test/suite/binlog/r/binlog_mysqlbinlog_stop_never.result b/mysql-test/suite/binlog/r/binlog_mysqlbinlog_stop_never.result
new file mode 100644
index 00000000000..e94f17b9489
--- /dev/null
+++ b/mysql-test/suite/binlog/r/binlog_mysqlbinlog_stop_never.result
@@ -0,0 +1,16 @@
+RESET MASTER;
+include/stop_dump_threads.inc
+# Step-1: Execute some dummy statements.
+CREATE TABLE t1(i int);
+INSERT INTO t1 values (1);
+# Step-2: Disable binary log temporarily and drop the table 't1'.
+set @@SESSION.SQL_LOG_BIN = 0;
+DROP TABLE t1;
+set @@SESSION.SQL_LOG_BIN = 1;
+# Step-3: Execute MYSQL_BINLOG with --stop-never and source it to mysql client.
+# Step-4: Wait till dump thread transfer is completed.
+# Step-5: Check that the data is there.
+# Step-6: Cleanup
+# kill the dump thread serving the mysqlbinlog --stop-never process
+include/stop_dump_threads.inc
+DROP TABLE t1;
diff --git a/mysql-test/suite/binlog/t/binlog_mysqlbinlog_stop_never.test b/mysql-test/suite/binlog/t/binlog_mysqlbinlog_stop_never.test
new file mode 100644
index 00000000000..d73e453ce96
--- /dev/null
+++ b/mysql-test/suite/binlog/t/binlog_mysqlbinlog_stop_never.test
@@ -0,0 +1,66 @@
+# ==== Purpose ====
+#
+# Test verifies that continuous streaming of binary log content using the
+# "mysqlbinlog --stop-never" option and sourcing it to mysql client works
+# fine.
+#
+# ==== Implementation ====
+#
+# Steps:
+# 1 - Create a table on a server on which binary log is enabled and insert
+# a row.
+# 2 - Disable the binary log on the server and drop the table.
+# 3 - Capture the binary log output using "mysqlbinlog --stop_never" option
+# and source it to mysql client.
+# 4 - Query the PROCESSLIST table to ensure that the dump thread which is
+# serving "stop_never" option has read entire binlog.
+# 5 - Verify that the table is populated on the server.
+# 6 - Cleanup.
+#
+# ==== References ====
+#
+# MDEV-11154: Write_on_release_cache(log_event.cc) function will not write
+# "COMMIT", if use "mysqlbinlog ... | mysql ..."
+
+--source include/not_windows.inc
+
+# Test is not specific to any binlog format. Hence Running only for 'row'.
+--source include/have_binlog_format_row.inc
+
+# binlog file name is needed in the test. To use master-bin.000001,
+# RESET MASTER is needed.
+RESET MASTER;
+# kill the dump threads if there any dump threads (may be from previous test)
+--source include/stop_dump_threads.inc
+
+--echo # Step-1: Execute some dummy statements.
+CREATE TABLE t1(i int);
+INSERT INTO t1 values (1);
+
+--echo # Step-2: Disable binary log temporarily and drop the table 't1'.
+set @@SESSION.SQL_LOG_BIN = 0;
+DROP TABLE t1;
+set @@SESSION.SQL_LOG_BIN = 1;
+
+--echo # Step-3: Execute MYSQL_BINLOG with --stop-never and source it to mysql client.
+--write_file $MYSQL_TMP_DIR/mysqlbinlog_stop_never.sh
+(`$MYSQL_BINLOG --read-from-remote-server --stop-never --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001 | $MYSQL --user=root --protocol=tcp --host=127.0.0.1 --port=$MASTER_MYPORT`) < /dev/null > /dev/null 2>&1 &
+EOF
+--exec /bin/bash $MYSQL_TMP_DIR/mysqlbinlog_stop_never.sh
+
+--echo # Step-4: Wait till dump thread transfer is completed.
+let $wait_condition= SELECT id from information_schema.processlist where processlist.command like '%Binlog%' and state like '%Master has sent%';
+--source include/wait_condition.inc
+
+--echo # Step-5: Check that the data is there.
+let $count= 1;
+let $table= test.t1;
+source include/wait_until_rows_count.inc;
+
+--echo # Step-6: Cleanup
+--echo # kill the dump thread serving the mysqlbinlog --stop-never process
+--source include/stop_dump_threads.inc
+
+DROP TABLE t1;
+--remove_file $MYSQL_TMP_DIR/mysqlbinlog_stop_never.sh
+