-
Sven Sandberg authored
WL#7592 step 10. GTIDs: Generate Gtid_log_event and Previous_gtids_log_event always. Fix failing tests. This patch fixes all test cases that fails due to the previous two patches. In addition it fixes two code bugs that were exposed/introduced due to the previous two patches, and which caused some of the test failures. - Fix bug in START SLAVE UNTIL MASTER_LOG_POS logic. The problem was: some Rotate_log_events in the relay log are generated on the slave, not on the master. Thus, their end_log_pos field is relative to the slave relay log. Since MASTER_LOS_POS is relative to the master binary log, we must not evaluate the MASTER_LOS_POS condition for such slave-generated Rotate_log_events. But the logic to skip the until check for slave-generated events was missing, and this caused tests to fail. The fix is to avoid evaluating the until condition for slave-generated events. This is easy because such events are easily distinguishable since their server_id is zero. So we check if the server_id==0, and in that case we don't evaluate the until condition. This did not cause any tests to fail before this worklog, because the events appeared so early in the relay log that their positions would be smaller than the position specified by MASTER_LOG_POS. However, after this patch, the events appear after Previous_gtids_log_event, which moves the position forward so much that it causes the slave thread to stop before the rotate event, which causes the test to fail. This was also not triggered by running the suite with gtid_mode=on, because the test was using include/not_gtid_enabled.inc. - Fix bug in sql_slave_skip_counter with GTIDs. sql_slave_skip_counter did not compute transaction boundaries correctly in the presence of Gtid_log_events. This did not cause any problems before this patch since sql_slave_skip_counter is not allowed when gtid_mode=on. sql_slave_skip_counter is supposed to decrease for every event processed, except it should not decrease down to 0 in the middle of a group. This ensures that the applier thread does not stop in the middle of a transaction. However, the applier thread did not consider Gtid_log_event to be part of a group, and therefore it could stop after the Gtid_log_event. The problem was that Gtid_log_event implemented a specialized do_shall_skip function. This caused it to decrease the counter down to zero. The fix is to implement Gtid_log_event::do_shall_skip and make it call continue_group. - Fix simplified-binlog-recovery. Writing Previous_gtids_log_event always broke the logic for simplified-binlog-recovery. Background: Before this patch, simplified-binlog-recovery would avoid iterating over multiple binary logs only in the case that the binlog lacks a Previous_gtids_log_event. Problem: Since we now generate Previous_gtids_log_event always, recovery would iterate over all binary logs even when simplified-binlog-recovery was enabled. Fix: Make it so that simplified-binlog-recovery skips the rest of the binary logs also in the case that the first binary log contains a Previous_gtids_log_event and no Gtid_log_event. @mysql-test/extra/binlog_tests/binlog.test - Use show_binlog_events.inc instead of SHOW BINLOG EVENTS, so that Gtid/Anonymous events gets masked appropriately. - This particular test requires that columns 1, 2, and 5 are masked out (so that server_id is not masked out). However, show_binlog_events.inc only masks columns 2, 4, 5. Changed show_binlog_events.inc so that it allows user to specify the set of columns to be masked. @mysql-test/extra/binlog_tests/binlog_mysqlbinlog_row.inc - Use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG', to filter out GTIDs and other nondeterministic output. @mysql-test/extra/binlog_tests/ctype_ucs_binlog.test - Use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG', to filter out GTIDs and other nondeterministic output. @mysql-test/extra/binlog_tests/drop_tables_logical_timestamp.inc - Update test because grep_pattern.inc was altered. @mysql-test/extra/binlog_tests/logical_timestamping.inc - Update test because grep_pattern.inc was moved and altered. @mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test - Test was failing because it was expecting an exact number of events in the binlog. Fixed by adding an auxiliary test script include/get_row_count.inc that computes the number of events in the binlog. - While I was here, also changed to use assertion. @mysql-test/extra/binlog_tests/mysqlbinlog_row_engine.inc - Use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG', to filter out GTIDs and other nondeterministic output. @mysql-test/extra/binlog_tests/mysqlbinlog_start_stop_2.inc - Use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG', to filter out GTIDs and other nondeterministic output. @mysql-test/extra/rpl_tests/check_type.inc - Provide more debug info if $rpl_debug is set. @mysql-test/extra/rpl_tests/create_recursive_construct.inc - The test expected that an empty binlog would contain 2 events. Changed this to 3. - The test expected that the third event of a binlog containing only one DML transaction in row format would be a Table_map. Changed third to fifth. - Simplify code to use assertions, to make it more readable and produce more debug output on failure. @mysql-test/extra/rpl_tests/rpl_implicit_commit_binlog.test - Fix test failure: This test executed some statements and then asserted that there was a COMMIT after a specific number of events in the binary log. Since we now write more events to the binary log, we have to increase this number in order for the test to succeed. - Use assert.inc instead of manual 'if' statements. - Rename variable $ok to $check_position_of_commit_event, since that explains better what the variable does. - Clarify purpose of the test. @mysql-test/extra/rpl_tests/rpl_insert_ignore.test - Test failure fix: The test asserted that there was a query_log_event after a specific number of events in the binary log. Since the number of events has changed, this number has to be updated. - The test case used to have a special case for gtid_mode=on, handled by extra/rpl_tests/rpl_insert_ignore_gtid_on.inc Since there is now no difference in event count between gtid_mode=on and gtid_mode=off, we can hardcode the number again and do not need the include file. Removed the include file. @mysql-test/extra/rpl_tests/rpl_insert_ignore_gtid_on.inc - Remove this file as it is not needed any more. See changeset comment for mysql-test/extra/rpl_tests/rpl_insert_ignore.test @mysql-test/extra/rpl_tests/rpl_log.test - Update the LIMIT clause for SHOW BINLOG EVENTS because the number of events in the binlog has changed. Now we can unify this instead of having different cases for GTID_MODE=ON and GTID_MODE=OFF. @mysql-test/extra/rpl_tests/rpl_row_show_relaylog_events.inc - Delete this file. See changeset comment for the file that is being renamed from mysql-test/extra/rpl_tests/rpl_show_relaylog_events.inc to mysql-test/suite/rpl/t/rpl_show_relaylog_events.test @mysql-test/extra/rpl_tests/rpl_show_binlog_events.inc - Delete this file. See changeset comment for the file that is being renamed from mysql-test/extra/rpl_tests/rpl_show_relaylog_events.inc to mysql-test/suite/rpl/t/rpl_show_relaylog_events.test @mysql-test/extra/rpl_tests/rpl_show_log_events_with_varying_options.inc - Delete this file. See changeset comment for the file that is being renamed from mysql-test/extra/rpl_tests/rpl_show_relaylog_events.inc to mysql-test/suite/rpl/t/rpl_show_relaylog_events.test @mysql-test/extra/rpl_tests/rpl_sp.test - Use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG', to filter out GTIDs and other nondeterministic output. @mysql-test/extra/rpl_tests/rpl_start_stop_slave.test - Disable a part of the test that crashes MTS, which will be fixed in a separate bug. @mysql-test/extra/rpl_tests/rpl_stm_mix_show_relaylog_events.inc - Delete this file. See changeset comment for the file that is being renamed from mysql-test/extra/rpl_tests/rpl_show_relaylog_events.inc to mysql-test/suite/rpl/t/rpl_show_relaylog_events.test @mysql-test/extra/rpl_tests/type_conversions.test - Provide more debug info if $rpl_debug is set, but do not output lots of junk to the result file if $rpl_debug is unset. @mysql-test/include/assert_grep.inc - New auxiliary test script to be used instead of include/grep_pattern.inc @mysql-test/include/assert_gtid_mode_on.inc - New auxiliary file that causes the test to fail if gtid_mode is not ON. This was added to avoid similar bugs to the one found in rpl_incompatible_gtids_in_relay_log.test (see commit comments for that file for details). This file is sourced from the auxiliary files include/sync_*.inc @mysql-test/include/filter_file.inc - Add parameter to allow masking a given set of columns. This is needed to implement the new $show_binlog_events_mask_columns parameter of show_binlog_events.inc. @mysql-test/include/get_row_count.inc - New auxiliary file used by mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test. @mysql-test/include/grep_pattern.inc - Add $grep_output parameter, to allow different modes of output. This was needed in order to fix a bug in mysql-test/extra/rpl_test/rpl_large_serverid.inc (see changeset comment for that file for details). - Move the file to mysql-test/include. This is a generic utility, and as such it belongs to mysql-test/include. mysql-test/extra/... is generally used for test-specific includes. - Use mtr variables instead of environment variables for parameters. - Remove extra newline that was printed after each output row. - Improve the output: s/Occurrences of the $pattern/Occurrences of '$pattern'/ - Suggest using include/assert_grep.inc @mysql-test/include/mysqlbinlog.inc - New test framework file to filter out nondeterministic output. (Before, similar filter regexes were repeated in lots of places all over the test suite.) @mysql-test/include/rpl_change_topology_helper.inc - Assert that gtid_mode=on if $use_gtids is set (see motivation in changeset comment for assert_gtid_mode_on.inc). - Provide more debug info. @mysql-test/include/rpl_init.inc - Allow user to override $use_gtids=1 when gtid_mode=on. @mysql-test/include/save_io_thread_pos.inc - Assert that gtid_mode=on if $use_gtids is set (see motivation in changeset comment for assert_gtid_mode_on.inc). @mysql-test/include/save_master_pos.inc - Assert that gtid_mode=on if $use_gtids is set (see motivation in changeset comment for assert_gtid_mode_on.inc). @mysql-test/include/show_binlog_events.inc - Add missing documentation for existing parameter $mask_binlog_commit_events. - Add documentation for new parameters $show_binlog_events_verbose and $show_binlog_events_mask_columns (see show_events.inc for details). @mysql-test/include/show_events.inc - Change SQL commands to UPPERCASE. - Add $show_binlog_events_verbose parameter that will print statement with positions and filenames masked. - Add output of full statement if $rpl_debug is set. - Add parameter to allow masking out a given set of columns. This is needed in order to fix and simplify mysql-test/extra/binlog_tests/binlog.test - Mask out Anonymous_Gtid so that output is the same whether GTID_MODE is ON or OFF. - Correct a variable name, s/sidno/gno/. @mysql-test/include/show_rpl_debug_info.inc - Select from P_S tables. - Add $rpl_topology to output. @mysql-test/include/sync_slave_io.inc - Assert that gtid_mode=on if $use_gtids is set (see motivation in changeset comment for assert_gtid_mode_on.inc). @mysql-test/include/sync_slave_sql.inc - Assert that gtid_mode=on if $use_gtids is set (see motivation in changeset comment for assert_gtid_mode_on.inc). - Fix typo to produce correct output on timeout. @mysql-test/include/wait_for_query_to_succeed.inc - Document the file. - Write debug info when it fails. @mysql-test/include/write_result_to_file.inc - Print perl's error text ($!) on error. - Print $stmt on error. @mysql-test/r/flush_block_commit_notembedded.result - Update result file because output from SHOW BINLOG EVENTS has changed. Before, the result set was empty. Now, it contains one row with a Previous_gtids_log_event. But the row is filtered out by show_binlog_events.inc. The end result is that the column headers are added. @mysql-test/r/mysqlbinlog.result - Update result file because output of mysqlbinlog has changed and we now use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG'. @mysql-test/r/user_var-binlog.result - Update result file because output of mysqlbinlog has changed and we now use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG'. @mysql-test/suite/binlog/r/binlog_gtid_mysqlbinlog_row.result - Update result file because test now uses include/mysqlbinlog.inc. @mysql-test/suite/binlog/r/binlog_gtid_mysqlbinlog_row_innodb.result - Update result file because test now uses include/mysqlbinlog.inc. @mysql-test/suite/binlog/r/binlog_gtid_mysqlbinlog_row_myisam.result - Update result file because test now uses include/mysqlbinlog.inc. @mysql-test/suite/binlog/r/binlog_gtid_mysqlbinlog_start_stop.result - Update result file because test now uses include/mysqlbinlog.inc. @mysql-test/suite/binlog/r/binlog_gtid_row_ctype_ucs.result - Update result file because test now uses include/mysqlbinlog.inc. @mysql-test/suite/binlog/r/binlog_gtid_stm_ctype_ucs.result - Update result file because test now uses include/mysqlbinlog.inc. @mysql-test/suite/binlog/r/binlog_hexdump.result - Update result file because output of mysqlbinlog has changed. @mysql-test/suite/binlog/r/binlog_implicit_commit.result - Update result file because output from SHOW BINLOG EVENTS has changed. Before, the result set was empty. Now, it contains one row with a Previous_gtids_log_event. But the row is filtered out by show_binlog_events.inc. The end result is that the column headers are added. @mysql-test/suite/binlog/r/binlog_innodb.result - Update result file because output from SHOW BINLOG EVENTS has changed. Before, the result set was empty. Now, it contains one row with a Previous_gtids_log_event. But the row is filtered out by show_binlog_events.inc. The end result is that the column headers are added. @mysql-test/suite/binlog/r/binlog_mts_logical_clock.result - Update result because grep_pattern.inc output was changed. @mysql-test/suite/binlog/r/binlog_mts_logical_clock_gtid.result - Update result because grep_pattern.inc output was changed. @mysql-test/suite/binlog/r/binlog_mysqlbinlog_row.result - Update result file because output of mysqlbinlog has changed and we now use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG'. @mysql-test/suite/binlog/r/binlog_mysqlbinlog_row_innodb.result - Update result file because output of mysqlbinlog has changed and we now use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG'. @mysql-test/suite/binlog/r/binlog_mysqlbinlog_row_myisam.result - Update result file because output of mysqlbinlog has changed and we now use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG'. @mysql-test/suite/binlog/r/binlog_mysqlbinlog_row_trans.result - Update result file because output of mysqlbinlog has changed and we now use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG'. @mysql-test/suite/binlog/r/binlog_mysqlbinlog_start_stop.result - Update result file because output of mysqlbinlog has changed and we now use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG'. @mysql- test/suite/binlog/r/binlog_mysqlbinlog_start_stop_slave_server_id.result - Update result file since the test uses include/mysqlbinlog.inc instead of $MYSQL_BINLOG. @mysql-test/suite/binlog/r/binlog_rewrite_suppress_use.result - Update result because grep_pattern.inc output was changed. @mysql-test/suite/binlog/r/binlog_row_binlog.result - Update result file since we now use show_binlog_events.inc instead of SHOW BINLOG EVENTS. show_binlog_events.inc filters out Format_description_log_events. @mysql-test/suite/binlog/r/binlog_row_ctype_ucs.result - Update result file because output of mysqlbinlog has changed and we now use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG'. @mysql-test/suite/binlog/r/binlog_row_insert_select.result - Update result file because output from SHOW BINLOG EVENTS has changed. Before, the result set was empty. Now, it contains one row with a Previous_gtids_log_event. But the row is filtered out by show_binlog_events.inc. The end result is that the column headers are added. @mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result - Update result file because output from SHOW BINLOG EVENTS has changed. Before, the result set was empty. Now, it contains one row with a Previous_gtids_log_event. But the row is filtered out by show_binlog_events.inc. The end result is that the column headers are added. @mysql-test/suite/binlog/r/binlog_stm_binlog.result - Update result file because of changes in test. @mysql-test/suite/binlog/r/binlog_stm_ctype_ucs.result - Update result file because output of mysqlbinlog has changed and we now use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG'. @mysql-test/suite/binlog/r/binlog_stm_insert_select.result - Update result file because output from SHOW BINLOG EVENTS has changed. Before, the result set was empty. Now, it contains one row with a Previous_gtids_log_event. But the row is filtered out by show_binlog_events.inc. The end result is that the column headers are added. @mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result - Update result file because output from SHOW BINLOG EVENTS has changed. Before, the result set was empty. Now, it contains one row with a Previous_gtids_log_event. But the row is filtered out by show_binlog_events.inc. The end result is that the column headers are added. - Also an assert was added. @mysql-test/suite/binlog/r/binlog_unsafe.result - Update result file because assert was added. @mysql-test/suite/binlog/t/binlog_killed.test - The code assumed a specific number of events in the binlog, and had a case distinction between GTID_MODE=ON or OFF. Simplified this since we now expect the same number of events always. - Removed useless replace_result. @mysql-test/suite/binlog/t/binlog_mts_logical_clock.test - Update test since grep_pattern.inc has moved and changed. @mysql-test/suite/binlog/t/binlog_mts_logical_clock_gtid.test - Update test since grep_pattern.inc has moved and changed. @mysql-test/suite/binlog/t/binlog_mysqlbinlog_concat.test - This test started failing because of this worklog. The test generates three binary logs: one with GTID_MODE=ON, one with GTID_MODE=OFF, and one with GTID_MODE=ON. Then it runs mysqlbinlog and executes the output from mysqlbinlog on a server that uses GTID_MODE=ON. Before this worklog, this did not cause any problems, because the binary log generated with GTID_MODE=OFF did not contain any GTIDs. Now, it contains Anonymous_gtid_log_event, which is not allowed when GTID_MODE=ON. To fix this, we use the --skip-gtids with mysqlbinlog when processing the second binary log file. @mysql-test/suite/binlog/t/binlog_mysqlbinlog_row_trans.test - Use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG', to filter out GTIDs and other nondeterministic output. @mysql-test/suite/binlog/t/binlog_rewrite_suppress_use.test - Update test since grep_pattern.inc has moved and changed. @mysql-test/suite/binlog/t/binlog_row_query_log_events.test - The code assumed a specific number of events in the binlog, and had a case distinction between GTID_MODE=ON or OFF. Simplified this since we now expect the same number of events always. @mysql-test/suite/binlog/t/binlog_server_id.test - The code assumed a specific number of events in the binlog, and had a case distinction between GTID_MODE=ON or OFF. Simplified this since we now expect the same number of events always. @mysql-test/suite/rpl/r/rpl_begin_commit_rollback.result - Updated result file because of changes in test file. @mysql-test/suite/rpl/r/rpl_do_db_filter.result - Update result file because output from SHOW BINLOG EVENTS has changed. Before, the result set was empty. Now, it contains one row with a Previous_gtids_log_event. But the row is filtered out by show_binlog_events.inc. The end result is that the column headers are added. @mysql-test/suite/rpl/r/rpl_filter_warnings.result - Update result because output from grep_pattern.inc has changed. @mysql-test/suite/rpl/r/rpl_gtid_binlog_errors.result.THIS - Now, rpl_binlog_errors.test and rpl_gtid_binlog_errors.test have identical result files. Having different result files was the only reason for separating them into different tests. Thus, reconciled them into one test by removing the .test files (which were just wrappers), replacing them by the .inc file, and removing all the rpl_gtid_binlog_error* files. @mysql-test/suite/rpl/r/rpl_gtid_mode.result - Update result file because of changes in test file and in output from SHOW BINLOG EVENTS. @mysql-test/suite/rpl/r/rpl_gtid_row_show_relaylog_events.result - Delete this file. See changeset comment for the file that is being renamed from mysql-test/extra/rpl_tests/rpl_show_relaylog_events.inc to mysql-test/suite/rpl/t/rpl_show_relaylog_events.test @mysql-test/suite/rpl/r/rpl_gtid_stm_mix_show_relaylog_events.result - Delete this file. See changeset comment for the file that is being renamed from mysql-test/extra/rpl_tests/rpl_show_relaylog_events.inc to mysql-test/suite/rpl/t/rpl_show_relaylog_events.test @mysql-test/suite/rpl/r/rpl_ignore_db_filter.result - Update result file because output from SHOW BINLOG EVENTS has changed. Before, the result set was empty. Now, it contains one row with a Previous_gtids_log_event. But the row is filtered out by show_binlog_events.inc. The end result is that the column headers are added. @mysql-test/suite/rpl/r/rpl_loaddata_s.result - Update result file because output from SHOW BINLOG EVENTS has changed. Before, the result set was empty. Now, it contains one row with a Previous_gtids_log_event. But the row is filtered out by show_binlog_events.inc. The end result is that the column headers are added. @mysql-test/suite/rpl/r/rpl_mixed_implicit_commit_binlog.result - Update result file. @mysql-test/suite/rpl/r/rpl_mts_logical_clock_timestamping.result - Update result since output from grep_pattern.inc has changed. @mysql-test/suite/rpl/r/rpl_mts_logical_clock_wrong_start_pos.result - Update result because of change in test. @mysql-test/suite/rpl/r/rpl_mysqlbinlog_gtid_on.result - Update result. @mysql-test/suite/rpl/t/rpl_recovery_replicate_same_server_id.result - Update result file because of clarifications in the main test file. @mysql-test/suite/rpl/r/rpl_replicate_same_server_id.result - Update result file because of clarifications in the main test file. - Rename the file since this really tests replicate-same-server-id. @mysql-test/suite/rpl/r/rpl_replication_observers_example_plugin.result - Update result because grep_pattern.inc output was changed. @mysql- test/suite/rpl/r/rpl_replication_observers_example_plugin_io.result - Update result because grep_pattern.inc output was changed. @mysql-test/suite/rpl/r/rpl_row_event_max_size.result - Update result file because binlog now contains Anonymous_gtids_log_event. @mysql-test/suite/rpl/r/rpl_row_ignorable_event.result - Update result file because output of mysqlbinlog has changed and we now use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG'. @mysql-test/suite/rpl/r/rpl_row_implicit_commit_binlog.result - Update result file because assert was added. @mysql-test/suite/rpl/r/rpl_row_mts_show_relaylog_events.result - Delete this file. See changeset comment for the file that is being renamed from mysql-test/extra/rpl_tests/rpl_show_relaylog_events.inc to mysql-test/suite/rpl/t/rpl_show_relaylog_events.test @mysql-test/suite/rpl/r/rpl_row_mysqlbinlog.result - Update result because test uses the new mysqlbinlog.inc file. @mysql-test/suite/rpl/r/rpl_row_show_relaylog_events.result - Delete this file. See changeset comment for the file that is being renamed from mysql-test/extra/rpl_tests/rpl_show_relaylog_events.inc to mysql-test/suite/rpl/t/rpl_show_relaylog_events.test @mysql-test/suite/rpl/r/rpl_row_until.result - Update result file because of simplification in main file. @mysql-test/suite/rpl/r/rpl_server_id.result - Renamed this file. No need to have a numeric suffix. @mysql-test/suite/rpl/r/rpl_server_uuid.result - Update result file because test file was changed. @mysql-test/suite/rpl/r/rpl_show_relaylog_events.result - Result file for new test. @mysql-test/suite/rpl/r/rpl_skip_slave_err_warnings.result - Update result since output from grep_pattern.inc has changed. @mysql-test/suite/rpl/r/rpl_sp_innodb.result - Update result file because output of mysqlbinlog has changed and we now use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG'. @mysql-test/suite/rpl/r/rpl_sp_myisam.result - Update result file because output of mysqlbinlog has changed and we now use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG'. @mysql-test/suite/rpl/r/rpl_stm_implicit_commit_binlog.result - Update result file because assert was added in the test file. @mysql-test/suite/rpl/r/rpl_stm_mix_mts_show_relaylog_events.result - Delete this file. See changeset comment for the file that is being renamed from mysql-test/extra/rpl_tests/rpl_show_relaylog_events.inc to mysql-test/suite/rpl/t/rpl_show_relaylog_events.test @mysql-test/suite/rpl/r/rpl_stm_mix_show_relaylog_events.result - Delete this file. See changeset comment for the file that is being renamed from mysql-test/extra/rpl_tests/rpl_show_relaylog_events.inc to mysql-test/suite/rpl/t/rpl_show_relaylog_events.test @mysql-test/suite/rpl/r/rpl_typeconv.result - Update result file because the test file was simplified. @mysql-test/suite/rpl/t/rpl_begin_commit_rollback-master.opt - Rename database to make test more readable. @mysql-test/suite/rpl/t/rpl_begin_commit_rollback-slave.opt - Rename database to make test more readable. @mysql-test/suite/rpl/t/rpl_begin_commit_rollback.test - Test failure fix: The test did a START SLAVE UNTIL MASTER_LOG_POS, where MASTER_LOG_POS was one byte into a transaction. With no Gtid_log_event, that will round the position up so that the entire transaction is exeucted on slave. However, if the position is one byte into a Gtid_log_event, it will instead stop before the transaction has been committed. This caused the test to fail. The fix is to set MASTER_LOG_POS to one byte into the BEGIN query_log_event instead. - Cosmetic fix: added comments to explain what the test does - Improve debugging: use assertions instead of 'eval SELECT $result as 'Must be 0' - Cleanup: The test did: echo [on master] SET SESSION AUTOCOMMIT=0; Since there was no semicolon after the echo, the SET statement was never executed, only echoed. This was very confusing, and the test would fail if we actually set autocommit=0 here. So removed this. - Cosmetic fix: removed redundant DROP DATABASE IF EXISTS at the beginning of the test - Cosmetic fix: renamed databases to make test more readable: db1 -> replicate_do_db db2 -> binlog_ignore_db - Cosmetic fix: replaced connection master; echo [on master]; by --source include/rpl_connection_master.inc - Cosmetic fix: use uppercase for SQL in some cases @mysql-test/suite/rpl/t/rpl_binlog_errors.test - Change LIMIT clause of SHOW BINLOG EVENTS to compensate for adding two more events. - Now, rpl_binlog_errors.test and rpl_gtid_binlog_errors.test have identical result files. Having different result files was the only reason for separating them into different tests. Thus, reconciled them into one test by removing the .test files (which were just wrappers), replacing them by the .inc file, and removing all the rpl_gtid_binlog_error* files. @mysql-test/suite/rpl/t/rpl_binlog_errors.test - Now, rpl_binlog_errors.test and rpl_gtid_binlog_errors.test have identical result files. Having different result files was the only reason for separating them into different tests. Thus, reconciled them into one test by removing the .test files (which were just wrappers), replacing them by the .inc file, and removing all the rpl_gtid_binlog_error* files. @mysql-test/suite/rpl/t/rpl_dual_pos_advance.test - Fix failing test: because the number of events has changed, we change the LIMIT options for SHOW BINLOG EVENTS. @mysql-test/suite/rpl/t/rpl_filter_warnings.test - Update test because grep_pattern.inc was moved and altered. @mysql-test/suite/rpl/t/rpl_grant_plugin.test - The code assumed a specific number of events in the binlog, and had a case distinction between GTID_MODE=ON or OFF. Simplified this since we now expect the same number of events always. @mysql-test/suite/rpl/t/rpl_gtid_binlog_errors-master.opt - Now, rpl_binlog_errors.test and rpl_gtid_binlog_errors.test have identical result files. Having different result files was the only reason for separating them into different tests. Thus, reconciled them into one test by removing the .test files (which were just wrappers), replacing them by the .inc file, and removing all the rpl_gtid_binlog_error* files. @mysql-test/suite/rpl/t/rpl_gtid_binlog_errors.test - Now, rpl_binlog_errors.test and rpl_gtid_binlog_errors.test have identical result files. Having different result files was the only reason for separating them into different tests. Thus, reconciled them into one test by removing the .test files (which were just wrappers), replacing them by the .inc file, and removing all the rpl_gtid_binlog_error* files. @mysql-test/suite/rpl/t/rpl_gtid_drop_table.test - Fix typos in comment. - Simplify test assertion. @mysql-test/suite/rpl/t/rpl_gtid_mode.test - Fix failing test: because the number of events has changed, we change the LIMIT options for SHOW BINLOG EVENTS. @mysql-test/suite/rpl/t/rpl_gtid_row_show_relaylog_events.test - Delete this file. See changeset comment for the file that is being renamed from mysql-test/extra/rpl_tests/rpl_show_relaylog_events.inc to mysql-test/suite/rpl/t/rpl_show_relaylog_events.test @mysql-test/suite/rpl/t/rpl_gtid_stm_mix_show_relaylog_events.test - Delete this file. See changeset comment for the file that is being renamed from mysql-test/extra/rpl_tests/rpl_show_relaylog_events.inc to mysql-test/suite/rpl/t/rpl_show_relaylog_events.test @mysql-test/suite/rpl/t/rpl_mts_logical_clock_timestamping.test - Update test because grep_pattern.inc was moved and altered. @mysql-test/suite/rpl/t/rpl_mts_logical_clock_wrong_start_pos.test - Mask out positions from result file. @mysql-test/suite/rpl/t/rpl_mysqlbinlog_gtid_on.test - Add comments explaining the purpose of the test. - Remove last part of the test. The tested behavior is not intended, and this part of the test failed. @mysql-test/suite/rpl/t/rpl_recovery_replicate_same_server_id.test - Use include/assert_grep.inc instead of grep_pattern.inc since grep_pattern.inc has changed. @mysql-test/suite/rpl/t/rpl_replicate_same_server_id-master.opt - Rename this file to better reflect what is being tested. @mysql-test/suite/rpl/t/rpl_replicate_same_server_id-slave.opt - Rename this file to better reflect what is being tested. @mysql-test/suite/rpl/t/rpl_replicate_same_server_id.test - Rename this file to better reflect what is being tested. - Add comments to explain what is being tested. - Upgrade to our current coding standards. - Remove a possible race. @mysql-test/suite/rpl/t/rpl_replication_observers_example_plugin.test - Update test since grep_pattern.inc has moved and changed. @mysql-test/suite/rpl/t/rpl_replication_observers_example_plugin_io.test - Update test since grep_pattern.inc has moved and changed. @mysql-test/suite/rpl/t/rpl_row_ignorable_event.test - Use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG', to filter out GTIDs and other nondeterministic output. @mysql-test/suite/rpl/t/rpl_row_mts_show_relaylog_events.test - Delete this file. See changeset comment for the file that is being renamed from mysql-test/extra/rpl_tests/rpl_show_relaylog_events.inc to mysql-test/suite/rpl/t/rpl_show_relaylog_events.test @mysql-test/suite/rpl/t/rpl_row_mysqlbinlog.test - Use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG', to filter out GTIDs and other nondeterministic output. @mysql-test/suite/rpl/t/rpl_row_show_relaylog_events.test - Delete this file. See changeset comment for the file that is being renamed from mysql-test/extra/rpl_tests/rpl_show_relaylog_events.inc to mysql-test/suite/rpl/t/rpl_show_relaylog_events.test @mysql-test/suite/rpl/t/rpl_row_until.test - Read master position using SHOW MASTER STATUS instead of SHOW BINLOG EVENTS, because SHOW BINLOG EVENTS requires that you give the exact number of events. - Use replace_result to filter out exact positions, instead of echoing the filtered statement and disabling the query log while executing the statement. @mysql-test/suite/rpl/t/rpl_server_id.test - Improve and clarify the comment. - Change the name of the test. @mysql-test/suite/rpl/t/rpl_server_uuid.test - Improvements in readability, used when debugging the test. (Eventually the fix was elsewhere but we may as well keep the improvements.) @mysql-test/suite/rpl/t/rpl_show_relaylog_events.test - Simplify the test suite: This family of tests contained a lot of duplications and confusions: - The following tests existed in the suite: rpl.rpl_stm_mix_show_relaylog_events rpl.rpl_stm_mix_gtid_show_relaylog_events rpl.rpl_stm_mix_mts_show_relaylog_events rpl.rpl_row_show_relaylog_events rpl.rpl_row_gtid_show_relaylog_events rpl.rpl_row_mts_show_relaylog_events - The *_mts_* tests were not specific to mts, they were specific to innodb. The only difference was that their result files differed on the commit events, which were Xid_log_events for MTS and query_log_event(COMMIT) events for non-MTS. There is a flag in show_binlog_events.inc to mask Xid events so that they look like query_log_events, so we can merge them to one file. - The *_gtid_* tests were only different because there was a Gtid_log_event when GTID_MODE=ON and no event when GTID_MODE=OFF. Now we always have an event, so we can merge the files together. - The *_stm_mix_* and *_row_* tests were only different because there was DML in the binlogs. There is no need for DML in this test case, it's enough to test with DDL, so we can merge these files together too. - So now that the output has been unified, we only need one test file and one result file. - The test used four levels of include files. This was redundant and made it very difficult to follow the logic. The test now invokes include/show_relaylog_events.inc directly, which makes it easier to understand what is going on. - The test used show_binlog_events.inc. This was unnecesary since the purpose is to test SHOW RELAYLOG EVENTS. Other tests test SHOW BINLOG EVENTS. So I have removed SHOW BINLOG EVENTS. - Fix test failure: The tests were failing because the output of SHOW RELAYLOG EVENTS has changed because Gtid_log_event is now generated. @mysql-test/suite/rpl/t/rpl_skip_slave_err_warnings.test - Update test because grep_pattern.inc was moved and altered. @mysql-test/suite/rpl/t/rpl_stm_mix_mts_show_relaylog_events.test - Delete this file. See changeset comment for the file that is being renamed from mysql-test/extra/rpl_tests/rpl_show_relaylog_events.inc to mysql-test/suite/rpl/t/rpl_show_relaylog_events.test @mysql-test/suite/rpl/t/rpl_stm_mix_show_relaylog_events.test - Delete this file. See changeset comment for the file that is being renamed from mysql-test/extra/rpl_tests/rpl_show_relaylog_events.inc to mysql-test/suite/rpl/t/rpl_show_relaylog_events.test @mysql-test/t/mysqlbinlog.test - Use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG', to filter out GTIDs and other nondeterministic output. @mysql-test/t/sp_trans_log.test - Change LIMIT clause of SHOW BINLOG EVENTS since binlog now contains two new events. @mysql-test/t/user_var-binlog.test - Use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG', to filter out GTIDs and other nondeterministic output. @sql/binlog.cc - Make simplified-gtid-recovery stop iteration over binary logs in the case that the first binary log contains a Previous_gtids_log_event. - Improve English in a comment. @sql/log_event.cc - Document logic for sql_slave_skip_counter. - Remove printing of logical timestamps from Query_log_event. The code for these timestamps will be removed in the next patch, but we remove the output already in this patch so that the necessary upates of tests get included in this patch. - Fix bug in Gtid_log_event for sql_slave_skip_counter, by implementing Gtid_log_event::do_shall_skip and make it call continue_group. @sql/log_event.h - Implement Gtid_log_event::do_shall_skip. @sql/rpl_rli.cc - Fix bug in START SLAVE UNTIL MASTER_LOG_POS. @sql/rpl_rli.h - Document logic and purpose of is_in_group. @mysql-test/suite/engines/funcs/t/disabled.def - Disable rpl_row_until due to BUG#20365935 (which is unrelated to this worklog).
Sven Sandberg authoredWL#7592 step 10. GTIDs: Generate Gtid_log_event and Previous_gtids_log_event always. Fix failing tests. This patch fixes all test cases that fails due to the previous two patches. In addition it fixes two code bugs that were exposed/introduced due to the previous two patches, and which caused some of the test failures. - Fix bug in START SLAVE UNTIL MASTER_LOG_POS logic. The problem was: some Rotate_log_events in the relay log are generated on the slave, not on the master. Thus, their end_log_pos field is relative to the slave relay log. Since MASTER_LOS_POS is relative to the master binary log, we must not evaluate the MASTER_LOS_POS condition for such slave-generated Rotate_log_events. But the logic to skip the until check for slave-generated events was missing, and this caused tests to fail. The fix is to avoid evaluating the until condition for slave-generated events. This is easy because such events are easily distinguishable since their server_id is zero. So we check if the server_id==0, and in that case we don't evaluate the until condition. This did not cause any tests to fail before this worklog, because the events appeared so early in the relay log that their positions would be smaller than the position specified by MASTER_LOG_POS. However, after this patch, the events appear after Previous_gtids_log_event, which moves the position forward so much that it causes the slave thread to stop before the rotate event, which causes the test to fail. This was also not triggered by running the suite with gtid_mode=on, because the test was using include/not_gtid_enabled.inc. - Fix bug in sql_slave_skip_counter with GTIDs. sql_slave_skip_counter did not compute transaction boundaries correctly in the presence of Gtid_log_events. This did not cause any problems before this patch since sql_slave_skip_counter is not allowed when gtid_mode=on. sql_slave_skip_counter is supposed to decrease for every event processed, except it should not decrease down to 0 in the middle of a group. This ensures that the applier thread does not stop in the middle of a transaction. However, the applier thread did not consider Gtid_log_event to be part of a group, and therefore it could stop after the Gtid_log_event. The problem was that Gtid_log_event implemented a specialized do_shall_skip function. This caused it to decrease the counter down to zero. The fix is to implement Gtid_log_event::do_shall_skip and make it call continue_group. - Fix simplified-binlog-recovery. Writing Previous_gtids_log_event always broke the logic for simplified-binlog-recovery. Background: Before this patch, simplified-binlog-recovery would avoid iterating over multiple binary logs only in the case that the binlog lacks a Previous_gtids_log_event. Problem: Since we now generate Previous_gtids_log_event always, recovery would iterate over all binary logs even when simplified-binlog-recovery was enabled. Fix: Make it so that simplified-binlog-recovery skips the rest of the binary logs also in the case that the first binary log contains a Previous_gtids_log_event and no Gtid_log_event. @mysql-test/extra/binlog_tests/binlog.test - Use show_binlog_events.inc instead of SHOW BINLOG EVENTS, so that Gtid/Anonymous events gets masked appropriately. - This particular test requires that columns 1, 2, and 5 are masked out (so that server_id is not masked out). However, show_binlog_events.inc only masks columns 2, 4, 5. Changed show_binlog_events.inc so that it allows user to specify the set of columns to be masked. @mysql-test/extra/binlog_tests/binlog_mysqlbinlog_row.inc - Use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG', to filter out GTIDs and other nondeterministic output. @mysql-test/extra/binlog_tests/ctype_ucs_binlog.test - Use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG', to filter out GTIDs and other nondeterministic output. @mysql-test/extra/binlog_tests/drop_tables_logical_timestamp.inc - Update test because grep_pattern.inc was altered. @mysql-test/extra/binlog_tests/logical_timestamping.inc - Update test because grep_pattern.inc was moved and altered. @mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test - Test was failing because it was expecting an exact number of events in the binlog. Fixed by adding an auxiliary test script include/get_row_count.inc that computes the number of events in the binlog. - While I was here, also changed to use assertion. @mysql-test/extra/binlog_tests/mysqlbinlog_row_engine.inc - Use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG', to filter out GTIDs and other nondeterministic output. @mysql-test/extra/binlog_tests/mysqlbinlog_start_stop_2.inc - Use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG', to filter out GTIDs and other nondeterministic output. @mysql-test/extra/rpl_tests/check_type.inc - Provide more debug info if $rpl_debug is set. @mysql-test/extra/rpl_tests/create_recursive_construct.inc - The test expected that an empty binlog would contain 2 events. Changed this to 3. - The test expected that the third event of a binlog containing only one DML transaction in row format would be a Table_map. Changed third to fifth. - Simplify code to use assertions, to make it more readable and produce more debug output on failure. @mysql-test/extra/rpl_tests/rpl_implicit_commit_binlog.test - Fix test failure: This test executed some statements and then asserted that there was a COMMIT after a specific number of events in the binary log. Since we now write more events to the binary log, we have to increase this number in order for the test to succeed. - Use assert.inc instead of manual 'if' statements. - Rename variable $ok to $check_position_of_commit_event, since that explains better what the variable does. - Clarify purpose of the test. @mysql-test/extra/rpl_tests/rpl_insert_ignore.test - Test failure fix: The test asserted that there was a query_log_event after a specific number of events in the binary log. Since the number of events has changed, this number has to be updated. - The test case used to have a special case for gtid_mode=on, handled by extra/rpl_tests/rpl_insert_ignore_gtid_on.inc Since there is now no difference in event count between gtid_mode=on and gtid_mode=off, we can hardcode the number again and do not need the include file. Removed the include file. @mysql-test/extra/rpl_tests/rpl_insert_ignore_gtid_on.inc - Remove this file as it is not needed any more. See changeset comment for mysql-test/extra/rpl_tests/rpl_insert_ignore.test @mysql-test/extra/rpl_tests/rpl_log.test - Update the LIMIT clause for SHOW BINLOG EVENTS because the number of events in the binlog has changed. Now we can unify this instead of having different cases for GTID_MODE=ON and GTID_MODE=OFF. @mysql-test/extra/rpl_tests/rpl_row_show_relaylog_events.inc - Delete this file. See changeset comment for the file that is being renamed from mysql-test/extra/rpl_tests/rpl_show_relaylog_events.inc to mysql-test/suite/rpl/t/rpl_show_relaylog_events.test @mysql-test/extra/rpl_tests/rpl_show_binlog_events.inc - Delete this file. See changeset comment for the file that is being renamed from mysql-test/extra/rpl_tests/rpl_show_relaylog_events.inc to mysql-test/suite/rpl/t/rpl_show_relaylog_events.test @mysql-test/extra/rpl_tests/rpl_show_log_events_with_varying_options.inc - Delete this file. See changeset comment for the file that is being renamed from mysql-test/extra/rpl_tests/rpl_show_relaylog_events.inc to mysql-test/suite/rpl/t/rpl_show_relaylog_events.test @mysql-test/extra/rpl_tests/rpl_sp.test - Use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG', to filter out GTIDs and other nondeterministic output. @mysql-test/extra/rpl_tests/rpl_start_stop_slave.test - Disable a part of the test that crashes MTS, which will be fixed in a separate bug. @mysql-test/extra/rpl_tests/rpl_stm_mix_show_relaylog_events.inc - Delete this file. See changeset comment for the file that is being renamed from mysql-test/extra/rpl_tests/rpl_show_relaylog_events.inc to mysql-test/suite/rpl/t/rpl_show_relaylog_events.test @mysql-test/extra/rpl_tests/type_conversions.test - Provide more debug info if $rpl_debug is set, but do not output lots of junk to the result file if $rpl_debug is unset. @mysql-test/include/assert_grep.inc - New auxiliary test script to be used instead of include/grep_pattern.inc @mysql-test/include/assert_gtid_mode_on.inc - New auxiliary file that causes the test to fail if gtid_mode is not ON. This was added to avoid similar bugs to the one found in rpl_incompatible_gtids_in_relay_log.test (see commit comments for that file for details). This file is sourced from the auxiliary files include/sync_*.inc @mysql-test/include/filter_file.inc - Add parameter to allow masking a given set of columns. This is needed to implement the new $show_binlog_events_mask_columns parameter of show_binlog_events.inc. @mysql-test/include/get_row_count.inc - New auxiliary file used by mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test. @mysql-test/include/grep_pattern.inc - Add $grep_output parameter, to allow different modes of output. This was needed in order to fix a bug in mysql-test/extra/rpl_test/rpl_large_serverid.inc (see changeset comment for that file for details). - Move the file to mysql-test/include. This is a generic utility, and as such it belongs to mysql-test/include. mysql-test/extra/... is generally used for test-specific includes. - Use mtr variables instead of environment variables for parameters. - Remove extra newline that was printed after each output row. - Improve the output: s/Occurrences of the $pattern/Occurrences of '$pattern'/ - Suggest using include/assert_grep.inc @mysql-test/include/mysqlbinlog.inc - New test framework file to filter out nondeterministic output. (Before, similar filter regexes were repeated in lots of places all over the test suite.) @mysql-test/include/rpl_change_topology_helper.inc - Assert that gtid_mode=on if $use_gtids is set (see motivation in changeset comment for assert_gtid_mode_on.inc). - Provide more debug info. @mysql-test/include/rpl_init.inc - Allow user to override $use_gtids=1 when gtid_mode=on. @mysql-test/include/save_io_thread_pos.inc - Assert that gtid_mode=on if $use_gtids is set (see motivation in changeset comment for assert_gtid_mode_on.inc). @mysql-test/include/save_master_pos.inc - Assert that gtid_mode=on if $use_gtids is set (see motivation in changeset comment for assert_gtid_mode_on.inc). @mysql-test/include/show_binlog_events.inc - Add missing documentation for existing parameter $mask_binlog_commit_events. - Add documentation for new parameters $show_binlog_events_verbose and $show_binlog_events_mask_columns (see show_events.inc for details). @mysql-test/include/show_events.inc - Change SQL commands to UPPERCASE. - Add $show_binlog_events_verbose parameter that will print statement with positions and filenames masked. - Add output of full statement if $rpl_debug is set. - Add parameter to allow masking out a given set of columns. This is needed in order to fix and simplify mysql-test/extra/binlog_tests/binlog.test - Mask out Anonymous_Gtid so that output is the same whether GTID_MODE is ON or OFF. - Correct a variable name, s/sidno/gno/. @mysql-test/include/show_rpl_debug_info.inc - Select from P_S tables. - Add $rpl_topology to output. @mysql-test/include/sync_slave_io.inc - Assert that gtid_mode=on if $use_gtids is set (see motivation in changeset comment for assert_gtid_mode_on.inc). @mysql-test/include/sync_slave_sql.inc - Assert that gtid_mode=on if $use_gtids is set (see motivation in changeset comment for assert_gtid_mode_on.inc). - Fix typo to produce correct output on timeout. @mysql-test/include/wait_for_query_to_succeed.inc - Document the file. - Write debug info when it fails. @mysql-test/include/write_result_to_file.inc - Print perl's error text ($!) on error. - Print $stmt on error. @mysql-test/r/flush_block_commit_notembedded.result - Update result file because output from SHOW BINLOG EVENTS has changed. Before, the result set was empty. Now, it contains one row with a Previous_gtids_log_event. But the row is filtered out by show_binlog_events.inc. The end result is that the column headers are added. @mysql-test/r/mysqlbinlog.result - Update result file because output of mysqlbinlog has changed and we now use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG'. @mysql-test/r/user_var-binlog.result - Update result file because output of mysqlbinlog has changed and we now use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG'. @mysql-test/suite/binlog/r/binlog_gtid_mysqlbinlog_row.result - Update result file because test now uses include/mysqlbinlog.inc. @mysql-test/suite/binlog/r/binlog_gtid_mysqlbinlog_row_innodb.result - Update result file because test now uses include/mysqlbinlog.inc. @mysql-test/suite/binlog/r/binlog_gtid_mysqlbinlog_row_myisam.result - Update result file because test now uses include/mysqlbinlog.inc. @mysql-test/suite/binlog/r/binlog_gtid_mysqlbinlog_start_stop.result - Update result file because test now uses include/mysqlbinlog.inc. @mysql-test/suite/binlog/r/binlog_gtid_row_ctype_ucs.result - Update result file because test now uses include/mysqlbinlog.inc. @mysql-test/suite/binlog/r/binlog_gtid_stm_ctype_ucs.result - Update result file because test now uses include/mysqlbinlog.inc. @mysql-test/suite/binlog/r/binlog_hexdump.result - Update result file because output of mysqlbinlog has changed. @mysql-test/suite/binlog/r/binlog_implicit_commit.result - Update result file because output from SHOW BINLOG EVENTS has changed. Before, the result set was empty. Now, it contains one row with a Previous_gtids_log_event. But the row is filtered out by show_binlog_events.inc. The end result is that the column headers are added. @mysql-test/suite/binlog/r/binlog_innodb.result - Update result file because output from SHOW BINLOG EVENTS has changed. Before, the result set was empty. Now, it contains one row with a Previous_gtids_log_event. But the row is filtered out by show_binlog_events.inc. The end result is that the column headers are added. @mysql-test/suite/binlog/r/binlog_mts_logical_clock.result - Update result because grep_pattern.inc output was changed. @mysql-test/suite/binlog/r/binlog_mts_logical_clock_gtid.result - Update result because grep_pattern.inc output was changed. @mysql-test/suite/binlog/r/binlog_mysqlbinlog_row.result - Update result file because output of mysqlbinlog has changed and we now use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG'. @mysql-test/suite/binlog/r/binlog_mysqlbinlog_row_innodb.result - Update result file because output of mysqlbinlog has changed and we now use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG'. @mysql-test/suite/binlog/r/binlog_mysqlbinlog_row_myisam.result - Update result file because output of mysqlbinlog has changed and we now use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG'. @mysql-test/suite/binlog/r/binlog_mysqlbinlog_row_trans.result - Update result file because output of mysqlbinlog has changed and we now use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG'. @mysql-test/suite/binlog/r/binlog_mysqlbinlog_start_stop.result - Update result file because output of mysqlbinlog has changed and we now use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG'. @mysql- test/suite/binlog/r/binlog_mysqlbinlog_start_stop_slave_server_id.result - Update result file since the test uses include/mysqlbinlog.inc instead of $MYSQL_BINLOG. @mysql-test/suite/binlog/r/binlog_rewrite_suppress_use.result - Update result because grep_pattern.inc output was changed. @mysql-test/suite/binlog/r/binlog_row_binlog.result - Update result file since we now use show_binlog_events.inc instead of SHOW BINLOG EVENTS. show_binlog_events.inc filters out Format_description_log_events. @mysql-test/suite/binlog/r/binlog_row_ctype_ucs.result - Update result file because output of mysqlbinlog has changed and we now use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG'. @mysql-test/suite/binlog/r/binlog_row_insert_select.result - Update result file because output from SHOW BINLOG EVENTS has changed. Before, the result set was empty. Now, it contains one row with a Previous_gtids_log_event. But the row is filtered out by show_binlog_events.inc. The end result is that the column headers are added. @mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result - Update result file because output from SHOW BINLOG EVENTS has changed. Before, the result set was empty. Now, it contains one row with a Previous_gtids_log_event. But the row is filtered out by show_binlog_events.inc. The end result is that the column headers are added. @mysql-test/suite/binlog/r/binlog_stm_binlog.result - Update result file because of changes in test. @mysql-test/suite/binlog/r/binlog_stm_ctype_ucs.result - Update result file because output of mysqlbinlog has changed and we now use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG'. @mysql-test/suite/binlog/r/binlog_stm_insert_select.result - Update result file because output from SHOW BINLOG EVENTS has changed. Before, the result set was empty. Now, it contains one row with a Previous_gtids_log_event. But the row is filtered out by show_binlog_events.inc. The end result is that the column headers are added. @mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result - Update result file because output from SHOW BINLOG EVENTS has changed. Before, the result set was empty. Now, it contains one row with a Previous_gtids_log_event. But the row is filtered out by show_binlog_events.inc. The end result is that the column headers are added. - Also an assert was added. @mysql-test/suite/binlog/r/binlog_unsafe.result - Update result file because assert was added. @mysql-test/suite/binlog/t/binlog_killed.test - The code assumed a specific number of events in the binlog, and had a case distinction between GTID_MODE=ON or OFF. Simplified this since we now expect the same number of events always. - Removed useless replace_result. @mysql-test/suite/binlog/t/binlog_mts_logical_clock.test - Update test since grep_pattern.inc has moved and changed. @mysql-test/suite/binlog/t/binlog_mts_logical_clock_gtid.test - Update test since grep_pattern.inc has moved and changed. @mysql-test/suite/binlog/t/binlog_mysqlbinlog_concat.test - This test started failing because of this worklog. The test generates three binary logs: one with GTID_MODE=ON, one with GTID_MODE=OFF, and one with GTID_MODE=ON. Then it runs mysqlbinlog and executes the output from mysqlbinlog on a server that uses GTID_MODE=ON. Before this worklog, this did not cause any problems, because the binary log generated with GTID_MODE=OFF did not contain any GTIDs. Now, it contains Anonymous_gtid_log_event, which is not allowed when GTID_MODE=ON. To fix this, we use the --skip-gtids with mysqlbinlog when processing the second binary log file. @mysql-test/suite/binlog/t/binlog_mysqlbinlog_row_trans.test - Use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG', to filter out GTIDs and other nondeterministic output. @mysql-test/suite/binlog/t/binlog_rewrite_suppress_use.test - Update test since grep_pattern.inc has moved and changed. @mysql-test/suite/binlog/t/binlog_row_query_log_events.test - The code assumed a specific number of events in the binlog, and had a case distinction between GTID_MODE=ON or OFF. Simplified this since we now expect the same number of events always. @mysql-test/suite/binlog/t/binlog_server_id.test - The code assumed a specific number of events in the binlog, and had a case distinction between GTID_MODE=ON or OFF. Simplified this since we now expect the same number of events always. @mysql-test/suite/rpl/r/rpl_begin_commit_rollback.result - Updated result file because of changes in test file. @mysql-test/suite/rpl/r/rpl_do_db_filter.result - Update result file because output from SHOW BINLOG EVENTS has changed. Before, the result set was empty. Now, it contains one row with a Previous_gtids_log_event. But the row is filtered out by show_binlog_events.inc. The end result is that the column headers are added. @mysql-test/suite/rpl/r/rpl_filter_warnings.result - Update result because output from grep_pattern.inc has changed. @mysql-test/suite/rpl/r/rpl_gtid_binlog_errors.result.THIS - Now, rpl_binlog_errors.test and rpl_gtid_binlog_errors.test have identical result files. Having different result files was the only reason for separating them into different tests. Thus, reconciled them into one test by removing the .test files (which were just wrappers), replacing them by the .inc file, and removing all the rpl_gtid_binlog_error* files. @mysql-test/suite/rpl/r/rpl_gtid_mode.result - Update result file because of changes in test file and in output from SHOW BINLOG EVENTS. @mysql-test/suite/rpl/r/rpl_gtid_row_show_relaylog_events.result - Delete this file. See changeset comment for the file that is being renamed from mysql-test/extra/rpl_tests/rpl_show_relaylog_events.inc to mysql-test/suite/rpl/t/rpl_show_relaylog_events.test @mysql-test/suite/rpl/r/rpl_gtid_stm_mix_show_relaylog_events.result - Delete this file. See changeset comment for the file that is being renamed from mysql-test/extra/rpl_tests/rpl_show_relaylog_events.inc to mysql-test/suite/rpl/t/rpl_show_relaylog_events.test @mysql-test/suite/rpl/r/rpl_ignore_db_filter.result - Update result file because output from SHOW BINLOG EVENTS has changed. Before, the result set was empty. Now, it contains one row with a Previous_gtids_log_event. But the row is filtered out by show_binlog_events.inc. The end result is that the column headers are added. @mysql-test/suite/rpl/r/rpl_loaddata_s.result - Update result file because output from SHOW BINLOG EVENTS has changed. Before, the result set was empty. Now, it contains one row with a Previous_gtids_log_event. But the row is filtered out by show_binlog_events.inc. The end result is that the column headers are added. @mysql-test/suite/rpl/r/rpl_mixed_implicit_commit_binlog.result - Update result file. @mysql-test/suite/rpl/r/rpl_mts_logical_clock_timestamping.result - Update result since output from grep_pattern.inc has changed. @mysql-test/suite/rpl/r/rpl_mts_logical_clock_wrong_start_pos.result - Update result because of change in test. @mysql-test/suite/rpl/r/rpl_mysqlbinlog_gtid_on.result - Update result. @mysql-test/suite/rpl/t/rpl_recovery_replicate_same_server_id.result - Update result file because of clarifications in the main test file. @mysql-test/suite/rpl/r/rpl_replicate_same_server_id.result - Update result file because of clarifications in the main test file. - Rename the file since this really tests replicate-same-server-id. @mysql-test/suite/rpl/r/rpl_replication_observers_example_plugin.result - Update result because grep_pattern.inc output was changed. @mysql- test/suite/rpl/r/rpl_replication_observers_example_plugin_io.result - Update result because grep_pattern.inc output was changed. @mysql-test/suite/rpl/r/rpl_row_event_max_size.result - Update result file because binlog now contains Anonymous_gtids_log_event. @mysql-test/suite/rpl/r/rpl_row_ignorable_event.result - Update result file because output of mysqlbinlog has changed and we now use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG'. @mysql-test/suite/rpl/r/rpl_row_implicit_commit_binlog.result - Update result file because assert was added. @mysql-test/suite/rpl/r/rpl_row_mts_show_relaylog_events.result - Delete this file. See changeset comment for the file that is being renamed from mysql-test/extra/rpl_tests/rpl_show_relaylog_events.inc to mysql-test/suite/rpl/t/rpl_show_relaylog_events.test @mysql-test/suite/rpl/r/rpl_row_mysqlbinlog.result - Update result because test uses the new mysqlbinlog.inc file. @mysql-test/suite/rpl/r/rpl_row_show_relaylog_events.result - Delete this file. See changeset comment for the file that is being renamed from mysql-test/extra/rpl_tests/rpl_show_relaylog_events.inc to mysql-test/suite/rpl/t/rpl_show_relaylog_events.test @mysql-test/suite/rpl/r/rpl_row_until.result - Update result file because of simplification in main file. @mysql-test/suite/rpl/r/rpl_server_id.result - Renamed this file. No need to have a numeric suffix. @mysql-test/suite/rpl/r/rpl_server_uuid.result - Update result file because test file was changed. @mysql-test/suite/rpl/r/rpl_show_relaylog_events.result - Result file for new test. @mysql-test/suite/rpl/r/rpl_skip_slave_err_warnings.result - Update result since output from grep_pattern.inc has changed. @mysql-test/suite/rpl/r/rpl_sp_innodb.result - Update result file because output of mysqlbinlog has changed and we now use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG'. @mysql-test/suite/rpl/r/rpl_sp_myisam.result - Update result file because output of mysqlbinlog has changed and we now use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG'. @mysql-test/suite/rpl/r/rpl_stm_implicit_commit_binlog.result - Update result file because assert was added in the test file. @mysql-test/suite/rpl/r/rpl_stm_mix_mts_show_relaylog_events.result - Delete this file. See changeset comment for the file that is being renamed from mysql-test/extra/rpl_tests/rpl_show_relaylog_events.inc to mysql-test/suite/rpl/t/rpl_show_relaylog_events.test @mysql-test/suite/rpl/r/rpl_stm_mix_show_relaylog_events.result - Delete this file. See changeset comment for the file that is being renamed from mysql-test/extra/rpl_tests/rpl_show_relaylog_events.inc to mysql-test/suite/rpl/t/rpl_show_relaylog_events.test @mysql-test/suite/rpl/r/rpl_typeconv.result - Update result file because the test file was simplified. @mysql-test/suite/rpl/t/rpl_begin_commit_rollback-master.opt - Rename database to make test more readable. @mysql-test/suite/rpl/t/rpl_begin_commit_rollback-slave.opt - Rename database to make test more readable. @mysql-test/suite/rpl/t/rpl_begin_commit_rollback.test - Test failure fix: The test did a START SLAVE UNTIL MASTER_LOG_POS, where MASTER_LOG_POS was one byte into a transaction. With no Gtid_log_event, that will round the position up so that the entire transaction is exeucted on slave. However, if the position is one byte into a Gtid_log_event, it will instead stop before the transaction has been committed. This caused the test to fail. The fix is to set MASTER_LOG_POS to one byte into the BEGIN query_log_event instead. - Cosmetic fix: added comments to explain what the test does - Improve debugging: use assertions instead of 'eval SELECT $result as 'Must be 0' - Cleanup: The test did: echo [on master] SET SESSION AUTOCOMMIT=0; Since there was no semicolon after the echo, the SET statement was never executed, only echoed. This was very confusing, and the test would fail if we actually set autocommit=0 here. So removed this. - Cosmetic fix: removed redundant DROP DATABASE IF EXISTS at the beginning of the test - Cosmetic fix: renamed databases to make test more readable: db1 -> replicate_do_db db2 -> binlog_ignore_db - Cosmetic fix: replaced connection master; echo [on master]; by --source include/rpl_connection_master.inc - Cosmetic fix: use uppercase for SQL in some cases @mysql-test/suite/rpl/t/rpl_binlog_errors.test - Change LIMIT clause of SHOW BINLOG EVENTS to compensate for adding two more events. - Now, rpl_binlog_errors.test and rpl_gtid_binlog_errors.test have identical result files. Having different result files was the only reason for separating them into different tests. Thus, reconciled them into one test by removing the .test files (which were just wrappers), replacing them by the .inc file, and removing all the rpl_gtid_binlog_error* files. @mysql-test/suite/rpl/t/rpl_binlog_errors.test - Now, rpl_binlog_errors.test and rpl_gtid_binlog_errors.test have identical result files. Having different result files was the only reason for separating them into different tests. Thus, reconciled them into one test by removing the .test files (which were just wrappers), replacing them by the .inc file, and removing all the rpl_gtid_binlog_error* files. @mysql-test/suite/rpl/t/rpl_dual_pos_advance.test - Fix failing test: because the number of events has changed, we change the LIMIT options for SHOW BINLOG EVENTS. @mysql-test/suite/rpl/t/rpl_filter_warnings.test - Update test because grep_pattern.inc was moved and altered. @mysql-test/suite/rpl/t/rpl_grant_plugin.test - The code assumed a specific number of events in the binlog, and had a case distinction between GTID_MODE=ON or OFF. Simplified this since we now expect the same number of events always. @mysql-test/suite/rpl/t/rpl_gtid_binlog_errors-master.opt - Now, rpl_binlog_errors.test and rpl_gtid_binlog_errors.test have identical result files. Having different result files was the only reason for separating them into different tests. Thus, reconciled them into one test by removing the .test files (which were just wrappers), replacing them by the .inc file, and removing all the rpl_gtid_binlog_error* files. @mysql-test/suite/rpl/t/rpl_gtid_binlog_errors.test - Now, rpl_binlog_errors.test and rpl_gtid_binlog_errors.test have identical result files. Having different result files was the only reason for separating them into different tests. Thus, reconciled them into one test by removing the .test files (which were just wrappers), replacing them by the .inc file, and removing all the rpl_gtid_binlog_error* files. @mysql-test/suite/rpl/t/rpl_gtid_drop_table.test - Fix typos in comment. - Simplify test assertion. @mysql-test/suite/rpl/t/rpl_gtid_mode.test - Fix failing test: because the number of events has changed, we change the LIMIT options for SHOW BINLOG EVENTS. @mysql-test/suite/rpl/t/rpl_gtid_row_show_relaylog_events.test - Delete this file. See changeset comment for the file that is being renamed from mysql-test/extra/rpl_tests/rpl_show_relaylog_events.inc to mysql-test/suite/rpl/t/rpl_show_relaylog_events.test @mysql-test/suite/rpl/t/rpl_gtid_stm_mix_show_relaylog_events.test - Delete this file. See changeset comment for the file that is being renamed from mysql-test/extra/rpl_tests/rpl_show_relaylog_events.inc to mysql-test/suite/rpl/t/rpl_show_relaylog_events.test @mysql-test/suite/rpl/t/rpl_mts_logical_clock_timestamping.test - Update test because grep_pattern.inc was moved and altered. @mysql-test/suite/rpl/t/rpl_mts_logical_clock_wrong_start_pos.test - Mask out positions from result file. @mysql-test/suite/rpl/t/rpl_mysqlbinlog_gtid_on.test - Add comments explaining the purpose of the test. - Remove last part of the test. The tested behavior is not intended, and this part of the test failed. @mysql-test/suite/rpl/t/rpl_recovery_replicate_same_server_id.test - Use include/assert_grep.inc instead of grep_pattern.inc since grep_pattern.inc has changed. @mysql-test/suite/rpl/t/rpl_replicate_same_server_id-master.opt - Rename this file to better reflect what is being tested. @mysql-test/suite/rpl/t/rpl_replicate_same_server_id-slave.opt - Rename this file to better reflect what is being tested. @mysql-test/suite/rpl/t/rpl_replicate_same_server_id.test - Rename this file to better reflect what is being tested. - Add comments to explain what is being tested. - Upgrade to our current coding standards. - Remove a possible race. @mysql-test/suite/rpl/t/rpl_replication_observers_example_plugin.test - Update test since grep_pattern.inc has moved and changed. @mysql-test/suite/rpl/t/rpl_replication_observers_example_plugin_io.test - Update test since grep_pattern.inc has moved and changed. @mysql-test/suite/rpl/t/rpl_row_ignorable_event.test - Use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG', to filter out GTIDs and other nondeterministic output. @mysql-test/suite/rpl/t/rpl_row_mts_show_relaylog_events.test - Delete this file. See changeset comment for the file that is being renamed from mysql-test/extra/rpl_tests/rpl_show_relaylog_events.inc to mysql-test/suite/rpl/t/rpl_show_relaylog_events.test @mysql-test/suite/rpl/t/rpl_row_mysqlbinlog.test - Use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG', to filter out GTIDs and other nondeterministic output. @mysql-test/suite/rpl/t/rpl_row_show_relaylog_events.test - Delete this file. See changeset comment for the file that is being renamed from mysql-test/extra/rpl_tests/rpl_show_relaylog_events.inc to mysql-test/suite/rpl/t/rpl_show_relaylog_events.test @mysql-test/suite/rpl/t/rpl_row_until.test - Read master position using SHOW MASTER STATUS instead of SHOW BINLOG EVENTS, because SHOW BINLOG EVENTS requires that you give the exact number of events. - Use replace_result to filter out exact positions, instead of echoing the filtered statement and disabling the query log while executing the statement. @mysql-test/suite/rpl/t/rpl_server_id.test - Improve and clarify the comment. - Change the name of the test. @mysql-test/suite/rpl/t/rpl_server_uuid.test - Improvements in readability, used when debugging the test. (Eventually the fix was elsewhere but we may as well keep the improvements.) @mysql-test/suite/rpl/t/rpl_show_relaylog_events.test - Simplify the test suite: This family of tests contained a lot of duplications and confusions: - The following tests existed in the suite: rpl.rpl_stm_mix_show_relaylog_events rpl.rpl_stm_mix_gtid_show_relaylog_events rpl.rpl_stm_mix_mts_show_relaylog_events rpl.rpl_row_show_relaylog_events rpl.rpl_row_gtid_show_relaylog_events rpl.rpl_row_mts_show_relaylog_events - The *_mts_* tests were not specific to mts, they were specific to innodb. The only difference was that their result files differed on the commit events, which were Xid_log_events for MTS and query_log_event(COMMIT) events for non-MTS. There is a flag in show_binlog_events.inc to mask Xid events so that they look like query_log_events, so we can merge them to one file. - The *_gtid_* tests were only different because there was a Gtid_log_event when GTID_MODE=ON and no event when GTID_MODE=OFF. Now we always have an event, so we can merge the files together. - The *_stm_mix_* and *_row_* tests were only different because there was DML in the binlogs. There is no need for DML in this test case, it's enough to test with DDL, so we can merge these files together too. - So now that the output has been unified, we only need one test file and one result file. - The test used four levels of include files. This was redundant and made it very difficult to follow the logic. The test now invokes include/show_relaylog_events.inc directly, which makes it easier to understand what is going on. - The test used show_binlog_events.inc. This was unnecesary since the purpose is to test SHOW RELAYLOG EVENTS. Other tests test SHOW BINLOG EVENTS. So I have removed SHOW BINLOG EVENTS. - Fix test failure: The tests were failing because the output of SHOW RELAYLOG EVENTS has changed because Gtid_log_event is now generated. @mysql-test/suite/rpl/t/rpl_skip_slave_err_warnings.test - Update test because grep_pattern.inc was moved and altered. @mysql-test/suite/rpl/t/rpl_stm_mix_mts_show_relaylog_events.test - Delete this file. See changeset comment for the file that is being renamed from mysql-test/extra/rpl_tests/rpl_show_relaylog_events.inc to mysql-test/suite/rpl/t/rpl_show_relaylog_events.test @mysql-test/suite/rpl/t/rpl_stm_mix_show_relaylog_events.test - Delete this file. See changeset comment for the file that is being renamed from mysql-test/extra/rpl_tests/rpl_show_relaylog_events.inc to mysql-test/suite/rpl/t/rpl_show_relaylog_events.test @mysql-test/t/mysqlbinlog.test - Use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG', to filter out GTIDs and other nondeterministic output. @mysql-test/t/sp_trans_log.test - Change LIMIT clause of SHOW BINLOG EVENTS since binlog now contains two new events. @mysql-test/t/user_var-binlog.test - Use mysqlbinlog.inc instead of 'exec $MYSQL_BINLOG', to filter out GTIDs and other nondeterministic output. @sql/binlog.cc - Make simplified-gtid-recovery stop iteration over binary logs in the case that the first binary log contains a Previous_gtids_log_event. - Improve English in a comment. @sql/log_event.cc - Document logic for sql_slave_skip_counter. - Remove printing of logical timestamps from Query_log_event. The code for these timestamps will be removed in the next patch, but we remove the output already in this patch so that the necessary upates of tests get included in this patch. - Fix bug in Gtid_log_event for sql_slave_skip_counter, by implementing Gtid_log_event::do_shall_skip and make it call continue_group. @sql/log_event.h - Implement Gtid_log_event::do_shall_skip. @sql/rpl_rli.cc - Fix bug in START SLAVE UNTIL MASTER_LOG_POS. @sql/rpl_rli.h - Document logic and purpose of is_in_group. @mysql-test/suite/engines/funcs/t/disabled.def - Disable rpl_row_until due to BUG#20365935 (which is unrelated to this worklog).
Loading