1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165
|
################################################################################
# The testcase aims to test possible correct and incorrect settings of the
# following variables together during the start of the server:
# transaction_write_set_extraction (TWSE)
# binlog_transaction_dependency_tracking (BTDT)
#
# Test:
# 0. This test requires one server.
# 1. Try starting server with:
# a. TWSE=OFF and BTDT=COMMIT_ORDER. Expect SUCCESS.
# b. TWSE=OFF and BTDT=WRITESET. Expect FAILURE.
# c. TWSE=OFF and BTDT=WRITESET_SESSION. Expect FAILURE.
# d. TWSE=MURMUR32 and BTDT=COMMIT_ORDER. Expect SUCCESS.
# e. TWSE=MURMUR32 and BTDT=WRITESET. Expect SUCCESS.
# f. TWSE=MURMUR32 and BTDT=WRITESET_SESSION. Expect SUCCESS.
# g. TWSE=XXHASH64 and BTDT=COMMIT_ORDER. Expect SUCCESS.
# h. TWSE=XXHASH64 and BTDT=WRITESET. Expect SUCCESS
# i. TWSE=XXHASH64 and BTDT=WRITESET_SESSION. Expect SUCCESS.
#
# ==== References ====
# WL#9556: Writeset-based MTS dependency tracking on master
################################################################################
--source include/big_test.inc
--source include/have_binlog_format_row.inc
--let $saved_binlog_transaction_dependency_tracking= `SELECT @@GLOBAL.binlog_transaction_dependency_tracking`
--let $saved_transaction_write_set_extraction= `SELECT @@GLOBAL.transaction_write_set_extraction`
--echo #
--echo # Test 1.a: Try starting server with TWSE=OFF and BTDT=COMMIT_ORDER. Expect SUCCESS.
--echo #
--let $restart_parameters="restart: --transaction_write_set_extraction=OFF --binlog_transaction_dependency_tracking=COMMIT_ORDER"
--source include/restart_mysqld.inc
--source include/wait_until_connected_again.inc
--let $assert_text= transaction_write_set_extraction should be OFF
--let $assert_cond= "[SELECT @@GLOBAL.transaction_write_set_extraction]" = "OFF"
--source include/assert.inc
--let $assert_text= binlog_transaction_dependency_tracking should be COMMIT_ORDER
--let $assert_cond= "[SELECT @@GLOBAL.binlog_transaction_dependency_tracking]" = "COMMIT_ORDER"
--source include/assert.inc
--echo #
--echo # Test 1.b: Try starting server with TWSE=OFF and BTDT=WRITESET. Expect FAILURE.
--echo #
# Let server restart attempts write to the file $error_log.
--let $error_log= $MYSQLTEST_VARDIR/tmp/binlog_transaction_dependency_tracking.err
--source include/shutdown_mysqld.inc
let $mysqld=$MYSQLD_CMD --core-file --console > $error_log 2>&1 --transaction_write_set_extraction=OFF --binlog_transaction_dependency_tracking=WRITESET;
--error 1
--exec $mysqld
--let $grep_file=$error_log
--let $grep_pattern=The transaction_write_set_extraction must be set to XXHASH64 or MURMUR32 when binlog_transaction_dependency_tracking is WRITESET or WRITESET_SESSION.
--let $grep_output= print_count
--source include/grep_pattern.inc
# The server restart aborts
--let $grep_pattern= \[ERROR\] \[[^]]*\] \[[^]]*\] Aborting
--let $grep_output= print_count
--source include/grep_pattern.inc
--echo #
--echo # Test 1.c: Try starting server with TWSE=OFF and BTDT=WRITESET_SESSION. Expect FAILURE.
--echo #
let $mysqld=$MYSQLD_CMD --core-file --console > $error_log 2>&1 --transaction_write_set_extraction=OFF --binlog_transaction_dependency_tracking=WRITESET_SESSION;
--error 1
--exec $mysqld
--let $grep_file=$error_log
--let $grep_pattern=The transaction_write_set_extraction must be set to XXHASH64 or MURMUR32 when binlog_transaction_dependency_tracking is WRITESET or WRITESET_SESSION.
--let $grep_output= print_count
--source include/grep_pattern.inc
# The server restart aborts
--let $grep_pattern= \[ERROR\] \[[^]]*\] \[[^]]*\] Aborting
--let $grep_output= print_count
--source include/grep_pattern.inc
--echo #
--echo # Test 1.d: Try starting server with TWSE=MURMUR32 and BTDT=COMMIT_ORDER. Expect SUCCESS.
--echo #
--let $restart_parameters="restart: --transaction_write_set_extraction=MURMUR32 --binlog_transaction_dependency_tracking=COMMIT_ORDER"
--source include/start_mysqld.inc
--source include/wait_until_connected_again.inc
--let $assert_text= transaction_write_set_extraction should be MURMUR32
--let $assert_cond= "[SELECT @@GLOBAL.transaction_write_set_extraction]" = "MURMUR32"
--source include/assert.inc
--let $assert_text= binlog_transaction_dependency_tracking should be COMMIT_ORDER
--let $assert_cond= "[SELECT @@GLOBAL.binlog_transaction_dependency_tracking]" = "COMMIT_ORDER"
--source include/assert.inc
--echo #
--echo # Test 1.e: Try starting server with TWSE=MURMUR32 and BTDT=WRITESET. Expect SUCCESS.
--echo #
--let $restart_parameters="restart: --transaction_write_set_extraction=MURMUR32 --binlog_transaction_dependency_tracking=WRITESET"
--source include/restart_mysqld.inc
--source include/wait_until_connected_again.inc
--let $assert_text= transaction_write_set_extraction should be MURMUR32
--let $assert_cond= "[SELECT @@GLOBAL.transaction_write_set_extraction]" = "MURMUR32"
--source include/assert.inc
--let $assert_text= binlog_transaction_dependency_tracking should be WRITESET
--let $assert_cond= "[SELECT @@GLOBAL.binlog_transaction_dependency_tracking]" = "WRITESET"
--source include/assert.inc
--echo #
--echo # Test 1.f: Try starting server with TWSE=MURMUR32 and BTDT=WRITESET_SESSION. Expect SUCCESS.
--echo #
--let $restart_parameters="restart: --transaction_write_set_extraction=MURMUR32 --binlog_transaction_dependency_tracking=WRITESET_SESSION"
--source include/restart_mysqld.inc
--source include/wait_until_connected_again.inc
--let $assert_text= transaction_write_set_extraction should be MURMUR32
--let $assert_cond= "[SELECT @@GLOBAL.transaction_write_set_extraction]" = "MURMUR32"
--source include/assert.inc
--let $assert_text= binlog_transaction_dependency_tracking should be WRITESET_SESSION
--let $assert_cond= "[SELECT @@GLOBAL.binlog_transaction_dependency_tracking]" = "WRITESET_SESSION"
--source include/assert.inc
--echo #
--echo # Test 1.g: Try starting server with TWSE=XXHASH64 and BTDT=COMMIT_ORDER. Expect SUCCESS.
--echo #
--let $restart_parameters="restart: --transaction_write_set_extraction=XXHASH64 --binlog_transaction_dependency_tracking=COMMIT_ORDER"
--source include/restart_mysqld.inc
--source include/wait_until_connected_again.inc
--let $assert_text= transaction_write_set_extraction should be XXHASH64
--let $assert_cond= "[SELECT @@GLOBAL.transaction_write_set_extraction]" = "XXHASH64"
--source include/assert.inc
--let $assert_text= binlog_transaction_dependency_tracking should be COMMIT_ORDER
--let $assert_cond= "[SELECT @@GLOBAL.binlog_transaction_dependency_tracking]" = "COMMIT_ORDER"
--source include/assert.inc
--echo #
--echo # Test 1.h: Try starting server with TWSE=XXHASH64 and BTDT=WRITESET. Expect SUCCESS
--echo #
--let $restart_parameters="restart: --transaction_write_set_extraction=XXHASH64 --binlog_transaction_dependency_tracking=WRITESET"
--source include/restart_mysqld.inc
--source include/wait_until_connected_again.inc
--let $assert_text= transaction_write_set_extraction should be XXHASH64
--let $assert_cond= "[SELECT @@GLOBAL.transaction_write_set_extraction]" = "XXHASH64"
--source include/assert.inc
--let $assert_text= binlog_transaction_dependency_tracking should be WRITESET
--let $assert_cond= "[SELECT @@GLOBAL.binlog_transaction_dependency_tracking]" = "WRITESET"
--source include/assert.inc
--echo #
--echo # Test 1.i: Try starting server with TWSE=XXHASH64 and BTDT=WRITESET_SESSION. Expect SUCCESS.
--echo #
--let $restart_parameters="restart: --transaction_write_set_extraction=XXHASH64 --binlog_transaction_dependency_tracking=WRITESET_SESSION"
--source include/restart_mysqld.inc
--source include/wait_until_connected_again.inc
--let $assert_text= transaction_write_set_extraction should be XXHASH64
--let $assert_cond= "[SELECT @@GLOBAL.transaction_write_set_extraction]" = "XXHASH64"
--source include/assert.inc
--let $assert_text= binlog_transaction_dependency_tracking should be WRITESET_SESSION
--let $assert_cond= "[SELECT @@GLOBAL.binlog_transaction_dependency_tracking]" = "WRITESET_SESSION"
--source include/assert.inc
# Clean up
--let $restart_parameters=
--let $error_log=
--remove_file $MYSQLTEST_VARDIR/tmp/binlog_transaction_dependency_tracking.err
--eval SET GLOBAL binlog_transaction_dependency_tracking= COMMIT_ORDER
--replace_result $saved_transaction_write_set_extraction SAVED_TWSE
--eval SET GLOBAL transaction_write_set_extraction= $saved_transaction_write_set_extraction
--eval SET GLOBAL binlog_transaction_dependency_tracking= $saved_binlog_transaction_dependency_tracking
|