# ==== Purpose ==== # # This test is executed twice for each test case. Before every # testcase it is run with mysqltest in record mode and will thus # produce an output file that can be compared to output from after the # tescase. In that way, it is possible to check that a testcase does # not have any unwanted side affects. --disable_query_log # We want to ensure all slave configuration is restored. But SHOW # SLAVE STATUS returns nothing for servers not configured as slaves, # and (after BUG#28796 was fixed) there is no way to de-configure a # slave. Hence, it's impossible to clean up the replication state at # the end. But we want to check that the slave is stopped, there is # no error, and a few other invariants. So we issue SHOW SLAVE # STATUS, and if it returns no rows we fake the result. --let $tmp= query_get_value(SHOW SLAVE STATUS, Slave_IO_Running, 1) --let $tmp= `SELECT '$tmp' = 'No such row'` if ($tmp) { # Note: after WL#5177, fields 13-18 shall not be filtered-out. --echo Slave_IO_State --echo Master_Host 127.0.0.1 --echo Master_User root --echo Master_Port # --echo Connect_Retry # --echo Master_Log_File # --echo Read_Master_Log_Pos # --echo Relay_Log_File # --echo Relay_Log_Pos # --echo Relay_Master_Log_File # --echo Slave_IO_Running No --echo Slave_SQL_Running No --echo Replicate_Rewrite_DB # --echo Replicate_Do_DB # --echo Replicate_Ignore_DB # --echo Replicate_Do_Table # --echo Replicate_Ignore_Table # --echo Replicate_Wild_Do_Table # --echo Replicate_Wild_Ignore_Table # --echo Last_Errno 0 --echo Last_Error --echo Skip_Counter 0 --echo Exec_Master_Log_Pos # --echo Relay_Log_Space # --echo Until_Condition # --echo Until_Log_File # --echo Until_Log_Pos # --echo Master_SSL_Allowed No --echo Master_SSL_CA_File --echo Master_SSL_CA_Path --echo Master_SSL_Cert --echo Master_SSL_Cipher --echo Master_SSL_Key --echo Seconds_Behind_Master NULL --echo Master_SSL_Verify_Server_Cert No --echo Last_IO_Errno 0 --echo Last_IO_Error --echo Last_SQL_Errno 0 --echo Last_SQL_Error --echo Replicate_Ignore_Server_Ids --echo Master_Server_Id # --echo Master_SSL_Crl # --echo Master_SSL_Crlpath # --echo Using_Gtid Slave_Pos --echo Gtid_IO_Pos # --echo Replicate_Do_Domain_Ids --echo Replicate_Ignore_Domain_Ids --echo Parallel_Mode optimistic --echo SQL_Delay 0 --echo SQL_Remaining_Delay NULL --echo Slave_SQL_Running_State --echo Slave_DDL_Groups # --echo Slave_Non_Transactional_Groups # --echo Slave_Transactional_Groups # } if (!$tmp) { # Note: after WL#5177, fields 13-18 shall not be filtered-out. --replace_column 4 # 5 # 6 # 7 # 8 # 9 # 10 # 13 # 14 # 15 # 16 # 17 # 18 # 19 # 23 # 24 # 25 # 26 # 27 # 41 # 42 # 43 # 45 # 52 # 53 # 54 # query_vertical SHOW SLAVE STATUS; } # # Ensure that we don't get warnings from mysql.proc (used by check_mysqld) # --disable_query_log --disable_warnings --disable_result_log select count(*) from mysql.proc; --enable_result_log --enable_warnings --enable_query_log call mtr.check_testcase(); let $datadir=`select @@datadir`; list_files $datadir mysql_upgrade_info; list_files $datadir/test #sql*; list_files $datadir/mysql #sql*; # # Check that SHOW ENGINE INNODB STATUS does not show any active transactions # We do this only if wsrep provider is loaded, to avoid disturbing any non-Galera MTR tests # if (`SELECT COUNT(*)=1 FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME = 'wsrep' AND PLUGIN_STATUS='ACTIVE'`) { if (`SELECT @@wsrep_on`) { if (`SELECT COUNT(*) FROM information_schema.innodb_trx WHERE trx_mysql_thread_id != 0`) { if ($before) { --echo Before test start. } if (!$before) { --echo After test end. } --echo There is one or more active InnoDB transaction(s) when there should be none. Dumping some diagnostics. --let $status_locks = `SELECT @@innodb_status_output_locks` --let $status_output = `SELECT @@innodb_status_output` --enable_query_log SET GLOBAL innodb_status_output_locks=ON; SHOW ENGINE INNODB STATUS; --disable_query_log --eval SET GLOBAL innodb_status_output_locks=$status_locks; --eval SET GLOBAL innodb_status_output=$status_output; --enable_query_log --vertical_results if ($before) { --replace_regex /$/ / } SELECT * FROM information_schema.processlist; if ($before) { --replace_regex /$/ / } SELECT * FROM information_schema.innodb_trx; if ($before) { --replace_regex /$/ / } SELECT * FROM information_schema.innodb_locks; if ($before) { --replace_regex /$/ / } SELECT * FROM information_schema.innodb_lock_waits; --horizontal_results --disable_query_log } } } --enable_query_log