mirror of
https://github.com/MariaDB/server.git
synced 2025-07-02 14:22:51 +03:00
2a2641ad7fa5db38cd2619014dbcb15f16b51ea8
1558 Commits
Author | SHA1 | Message | Date | |
---|---|---|---|---|
95a8cc0204 | upmerge undo of 59063 | |||
eb85bdfa6d |
Bug#56895 part 1 of 2: Backport of revid holyfoot@mysql.com-20100823084827-js10vjuil88je35r from mysql-5.5.
The purpose is to make MTR logic for mysqlhotcopy the same in 5.1 as in 5.5, making it easier to maintain and fix bugs such as 56817. |
|||
1461824d0f | Automerge from bug branch into latest mysql-5.5. | |||
e00900dcbe | merged BUG#59063 (backport from trunk) from 5.1 to 5.5 | |||
faafae781a |
BUG#59063: rpl_migration_crash_safe fails on Windows
Backported the fix to 5.1. Problem: the auxiliary test files rpl_start_server.inc and rpl_stop_server.inc write a file that is later read by mtr. The bug was that the file was written with platform-dependent newline terminators, i.e., \r\n on windows, whereas mtr only understands \n. Fix: write the file so that it uses \n on all platforms. mysql-test/include/rpl_start_server.inc: Force test to use \n instead of platform-dependent newline terminator. mysql-test/include/rpl_stop_server.inc: Force test to use \n instead of platform-dependent newline terminator. |
|||
45d9801696 | merge to mysql-5.5 | |||
4bc4a696bb | Updates tests to handle thread pool correctly | |||
ff2b529918 |
Bug#54820: master_connect_retry increased for Valgrind environment support
Bug#58525: separate string and numbers for comparing |
|||
0ef30fe732 |
BUG#59444: rpl_row_show_relaylog_events fails on daily-5.5 test runs
The test started failing on the same day patch for BUG 49978 was pushed. BUG 49978 changed part of the replication testing infrastructure in mysql-test-run. This caused the test to fail sporadically with result differences on relay log file names. When the test fails the relay-log filenames are shifted by one, eg: -show relaylog events in 'slave-relay-bin.000002' from <binlog_start>; +show relaylog events in 'slave-relay-bin.000003' from <binlog_start>; The problem was caused by a bad cleanup when using the include files: - include/setup_fake_relay_log.inc - include/cleanup_fake_relay_log.inc Which would leave a spurious relay-log file around (not listed in slave-relay-bin.index), causing the server to shift the name of the relay logs by one, even if cleaning up with RESET SLAVE. We fix this by removing the relay-log file when it is not needed anymore, ie at setup time and after recreating the fake relay-log index. Additionally, to make the affected test more resilient, we deployed a call to rpl_reset.inc (which resets both master and slave, including log files) before actually running the test case. Finally, appart from the reported bug, we also fix: (a) an unrelated issue with the failing test itself - in some cases, the test was not setting the log file name to use when it should; (b) one typo. mysql-test/extra/rpl_tests/rpl_show_relaylog_events.inc: Added call to rpl_reset.inc. Deployed missing instructions to get the binlog file name before including show_relaylog/binlog_events.inc |
|||
7d88b552e2 |
Bug#31384 DATE_ADD() and DATE_SUB() return binary data
Problem: DATE_ADD() is a hybrid function and can return DATE, DATETIME or VARCHAR data type depending on arguments. In case of VARCHAR data type, DATE_ADD() reported "binary" character set, which was wrong. Fix: make DATE_ADD() return @character_set_connection in VARCHAR context. @ mysql-test/include/ctype_numconv.inc Adding tests @ mysql-test/r/ctype_binary.result Adding tests @ mysql-test/r/ctype_cp1251.result Adding tests @ mysql-test/r/ctype_latin1.result Adding tests @ mysql-test/r/ctype_ucs.result Adding tests @ mysql-test/r/ctype_utf8.result Adding tests @ sql/item_strfunc.cc - Moving code from Item_str_ascii_func::val_str() to Item_str_func::val_str_from_val_str_ascii(), as this code needs to be shared by Item_date_add_interval. - Adding str2 parameter to be used as a buffer, instead of using private ascii_buf member. @ sql/item_strfunc.h - Moving code from Item_str_ascii_func::val_str() to Item_str_func::val_str_from_val_str_ascii() - Removing "String *val_str_convert_from_ascii(String *str, String *ascii_buf)" prototype as it was neither used nor declared. @ sql/item_timefunc.h - Overwriting parent's charset_for_protocol() method, becase we need to behave differenlty in VARCHAR and DATE/DATETYPE context. - Adding ascii_buf for conversion. - Adding val_str_ascii() prototype. - Adding val_str() which uses newly added Item_str_func::val_str_from_val_str_ascii(), passing ascii_buf as a conversion buffer. |
|||
83fea27b61 |
Bug #58841 Generalise handling of plugins in MTR mysql-test-run.pl script
Put descriptions of plugins into a separate file read by MTR MTR itself has generalised code to read this and set env. variables Removed the *SO variables, updated some tests accordingly New commit: added optional list of plugin names for _LOAD variable Also made changes for the new AUTH_* plugins |
|||
004ae40bc0 | Some if simplifications in tests | |||
404ccbd51d | new merge from 5.5 | |||
1bd213aec3 | Merged BUG#49978 from 5.1-bugteam to 5.5-bugteam. | |||
8b27f9a05e |
BUG#49978: Replication tests don't clean up replication state at the end
Major replication test framework cleanup. This does the following: - Ensure that all tests clean up the replication state when they finish, by making check-testcase check the output of SHOW SLAVE STATUS. This implies: - Slave must not be running after test finished. This is good because it removes the risk for sporadic errors in subsequent tests when a test forgets to sync correctly. - Slave SQL and IO errors must be cleared when test ends. This is good because we will notice if a test gets an unexpected error in the slave threads near the end. - We no longer have to clean up before a test starts. - Ensure that all tests that wait for an error in one of the slave threads waits for a specific error. It is no longer possible to source wait_for_slave_[sql|io]_to_stop.inc when there is an error in one of the slave threads. This is good because: - If a test expects an error but there is a bug that causes another error to happen, or if it stops the slave thread without an error, then we will notice. - When developing tests, wait_for_*_to_[start|stop].inc will fail immediately if there is an error in the relevant slave thread. Before this patch, we had to wait for the timeout. - Remove duplicated and repeated code for setting up unusual replication topologies. Now, there is a single file that is capable of setting up arbitrary topologies (include/rpl_init.inc, but include/master-slave.inc is still available for the most common topology). Tests can now end with include/rpl_end.inc, which will clean up correctly no matter what topology is used. The topology can be changed with include/rpl_change_topology.inc. - Improved debug information when tests fail. This includes: - debug info is printed on all servers configured by include/rpl_init.inc - User can set $rpl_debug=1, which makes auxiliary replication files print relevant debug info. - Improved documentation for all auxiliary replication files. Now they describe purpose, usage, parameters, and side effects. - Many small code cleanups: - Made have_innodb.inc output a sensible error message. - Moved contents of rpl000017-slave.sh into rpl000017.test - Added mysqltest variables that expose the current state of disable_warnings/enable_warnings and friends. - Too many to list here: see per-file comments for details. client/mysqltest.cc: Added the following variables: $ENABLED_WARNINGS $ENABLED_QUERY_LOG $ENABLED_RESULT_LOG $ENABLED_ABORT_ON_ERROR $ENABLED_INFO $ENABLED_METADATA Each variable is 0 or 1, depending on if the corresponding mysqltest feature is on or off. mysql-test/extra/rpl_tests/rpl_EE_err.test: Made test clean up after itself and removed outdated comments. mysql-test/extra/rpl_tests/rpl_auto_increment.test: - Use rpl_reset.inc instead of master-slave-reset.inc - diff_tables.inc now takes only one parameter. Made test clean up after itself and removed outdated comments. mysql-test/extra/rpl_tests/rpl_auto_increment_insert_view.test: diff_tables.inc now takes only one parameter. mysql-test/extra/rpl_tests/rpl_auto_increment_invoke_trigger.test: diff_tables.inc now takes only one parameter. mysql-test/extra/rpl_tests/rpl_autoinc_func_invokes_trigger.test: diff_tables.inc now takes only one parameter. mysql-test/extra/rpl_tests/rpl_charset.test: Made test clean up after itself and removed unnecessary cleanup in beginning. mysql-test/extra/rpl_tests/rpl_commit_after_flush.test: cosmetic fixes mysql-test/extra/rpl_tests/rpl_conflicts.test: cosmetic fixes mysql-test/extra/rpl_tests/rpl_ddl.test: Don't clean up replication here since this file does not setup replication. The main test now has to both setup and clean up replication. cosmetic fixes mysql-test/extra/rpl_tests/rpl_deadlock.test: make test clean up after itself mysql-test/extra/rpl_tests/rpl_extra_col_master.test: cosmetic fixes mysql-test/extra/rpl_tests/rpl_extra_col_slave.test: made test clean up after itself cosmetic fixes mysql-test/extra/rpl_tests/rpl_failed_optimize.test: made test clean up after itself mysql-test/extra/rpl_tests/rpl_flsh_tbls.test: made test clean up after itself mysql-test/extra/rpl_tests/rpl_foreign_key.test: made test clean up after itself mysql-test/extra/rpl_tests/rpl_get_master_version_and_clock.test: - Replace 'start slave; wait_for_slave_to_start.inc' by include/start_slave.inc. - Use new file rpl_connect.inc to reconnect on all connections, since the connections are used by rpl_end.inc. - Use wait_for_slave_param.inc instead of wait_for_slave_io_to_start.inc, since wait_for_slave_io_to_start.inc now fails if the IO thread has an error. In this particular test case, it is normal that the IO thread has an error. - Changed wait_for_slave_io_error.inc so that it waits for the IO thread to stop. However, in this test case, the IO thread only gets a non-fatal error, so it does not stop. So we set $slave_io_error_is_nonfatal=1 to prevent wait_for_slave_io_error.inc from waiting. mysql-test/extra/rpl_tests/rpl_insert_id.test: made test clean up after itself cosmetic fixes mysql-test/extra/rpl_tests/rpl_insert_id_pk.test: made test clean up after itself cosmetic fixes mysql-test/extra/rpl_tests/rpl_loaddata.test: - Use wait_for_slave_sql_error.inc to wait for errors instead of wait_for_slave_sql_to_stop.inc - Use check_slave_no_error.inc instead of print errors to the log. - Use rpl_reset.inc instead of master-slave-reset.inc This means we have to clear the error from the slave threads by calling RESET SLAVE explicitly. - diff_tables.inc now takes only one parameter. mysql-test/extra/rpl_tests/rpl_log.test: replace master-slave-reset.inc by rpl_reset.inc mysql-test/extra/rpl_tests/rpl_max_relay_size.test: made test clean up after itself cosmetic fix mysql-test/extra/rpl_tests/rpl_multi_query.test: made test clean up after itself cosmetic fixes mysql-test/extra/rpl_tests/rpl_multi_update.test: made test clean up after itself cosmetic fixes mysql-test/extra/rpl_tests/rpl_ndb_apply_status.test: replace master-slave-reset.inc by rpl_reset.inc mysql-test/extra/rpl_tests/rpl_not_null.test: - replace master-slave-reset.inc by rpl_reset.inc - diff_tables.inc now takes only one parameter. mysql-test/extra/rpl_tests/rpl_record_compare.test: - replace master-slave-reset.inc by rpl_reset.inc - diff_tables.inc now takes only one parameter. mysql-test/extra/rpl_tests/rpl_reset_slave.test: - replace wait_for_slave_io_error.inc+stop_slave.inc by wait_for_slave_io_error_and_stop.inc+stop_slave_sql.inc since stop_slave.inc now fails when the io thread has an error. - replace stop_slave.inc by STOP SLAVE + wait_for_slave_sql_to_stop.inc + wait_for_slave_param. stop_slave.inc would fail since the IO thread has an error. - add include/rpl_end.inc to clean up replication state mysql-test/extra/rpl_tests/rpl_row_UUID.test: Don't clean up replication here since this file does not setup replication. The main test now has to both setup and clean up replication. mysql-test/extra/rpl_tests/rpl_row_basic.test: - replaced reset_master_and_slave.inc by rpl_reset.inc - replaced sequence of reset master+reset slave by rpl_reset.inc - diff_tables.inc now takes only one parameter. mysql-test/extra/rpl_tests/rpl_row_delayed_ins.test: made test clean up after itself cosmetic fixes mysql-test/extra/rpl_tests/rpl_row_sp002.test: made test clean up after itself cosmetic fixes mysql-test/extra/rpl_tests/rpl_row_sp007.test: made test clean up after itself cosmetic fixes mysql-test/extra/rpl_tests/rpl_set_null.test: - replaced master-slave-reset.inc by rpl_reset.inc - diff_tables.inc now takes only one parameter. mysql-test/extra/rpl_tests/rpl_stm_EE_err2.test: - Made test clean up replication state. mysql-test/extra/rpl_tests/rpl_stm_create_if_not_exists.test: replaced rpl_diff_tables.inc by diff_tables.inc mysql-test/extra/rpl_tests/rpl_stop_slave.test: changed protocol for diff_tables.inc mysql-test/extra/rpl_tests/rpl_sv_relay_space.test: made test clean up after itself cosmetic fixes mysql-test/extra/rpl_tests/rpl_test_framework.inc: Auxiliary file used by rpl_test_framework.test. This checks that rpl_change_topology.inc works correctly. mysql-test/extra/rpl_tests/rpl_truncate.test: made test clean up after itself cosmetic fixes mysql-test/extra/rpl_tests/rpl_truncate_helper.test: - replace reset_master_and_slave.inc by rpl_reset.inc - diff_tables.inc now takes only one parameter. mysql-test/include/analyze-sync_with_master.test: - improved debug output printed when sync_slave_with_master or sync_with_master fails - Added documentation mysql-test/include/assert.inc: Added file to facilitate assertions. mysql-test/include/begin_include_file.inc: New auxiliary file to be used by replication helper files like rpl_init.inc, stop_slave.inc, wait_for_slave_*.inc, etc. Such helper files should source rpl_begin_include_file.inc at the beginning and rpl_end_include_file.inc at the end. That adds the following features: - When a test sources the file, the file name is printed to the result file. This is good because it makes result files easier to follow. - When a helper file sources a second helper file recursively, then the name of the second file is not printed. This is good because it would make the result file harder to follow if all the internal calls of all helper files were printed. - When $rpl_debug is set, all internal calls are printed to the result file. This is good because it helps when debugging test cases. (With $rpl_debug=1, many of the helper files now print other relevant debug info too.) - When a file needs to turn off the query log or the warning log (disable_query_log/disable_warnings), then the file can tell rpl_begin_include_file.inc about it. Then rpl_begin_include_file.inc will turn off the log correctly, and rpl_end_include_file.inc will turn on the log correctly. Note that if rpl_a.inc sources rpl_b.inc and both files need to turn off the log, then the log is not turned on when rpl_b.inc ends (because rpl_a.inc still needs the log off). This makes it easier to program replication helper files. mysql-test/include/check-testcase.test: Made check-testcase ensure that the slave status is reset after the test has finished. mysql-test/include/check_slave_is_running.inc: - Use existing framework (check_slave_param.inc) instead of ad-hoc code to check value of slave parameters. - Use rpl_begin_include_file.inc to improve debug capabilities. - improve documentation. mysql-test/include/check_slave_no_error.inc: - Use rpl_begin_include_file.inc to improve debug capabilities. - improve documentation. mysql-test/include/check_slave_param.inc: - Use rpl_begin_include_file.inc to improve debug capabilities. - improve documentation. mysql-test/include/cleanup_fake_relay_log.inc: - Use RESET SLAVE instead of manual file removal. This also resets other replication state. - verify that RESET SLAVE correctly removed files. mysql-test/include/diff_tables.inc: - Use rpl_begin_include_file.inc to improve debug capabilities. - Improved documentation. - file now supports an arbitrary number of tables (not just two). The tables are now given as a comma-separated list instead of as two variables. - You no longer have to specify database name for each table. If no database is specified, it defaults to the current database. - File now restores the connection at the end. mysql-test/include/end_include_file.inc: New file to be sourced at the end of auxiliary replication include files. See include/rpl_begin_include_file.inc for details. mysql-test/include/file_does_not_exist.inc: Added .inc file to check that a given file is removed. mysql-test/include/force_restart.inc: Added file to force server restart after test mysql-test/include/force_restart_if_skipped.inc: Added file to force server restart after test, if the test is skipped mysql-test/include/have_innodb.inc: Made have_innodb.inc print sensible message when innodb is not supported. mysql-test/include/io_thd_fault_injection.inc: Use rpl_server_restart.inc instead of restart_mysqld.inc in rpl tests mysql-test/include/kill_query_and_diff_master_slave.inc: Renamed diff_master_slave.inc to rpl_diff.inc mysql-test/include/master-slave.inc: - Use new rpl_init.inc file - Now, we don't do 'drop table' in master-slave.inc any more. That's good because drop table has nothing to do with configuring replication servers. - master-slave.inc now supports the additional parameter $rpl_server_count. By default, master-slave.inc only configures two servers; if $rpl_server_count is set, it configures that many servers. Only the second server is a slave; the rest are not part of the replication topology. mysql-test/include/mtr_check.sql: Removed unneeded SP (use include/force_restart.inc instead) mysql-test/include/mysqldump.inc: diff_tables.inc now takes only one parameter. mysql-test/include/ndb_master-slave.inc: use master-slave.inc instead of ad-hoc calls to 'connect' mysql-test/include/ndb_master-slave_2ch.inc: use rpl_init.inc instead of ad-hoc setup mysql-test/include/ndb_not_readonly.inc: turn off query log while executing this script. this was previously done by the caller. now it's done in the script. mysql-test/include/report-features.test: add newline at end of file mysql-test/include/reset_master_and_slave.inc: rpl_reset.inc replaces this file mysql-test/include/restart_mysqld.inc: force caller to use rpl_restart_server.inc instead if replication is configured mysql-test/include/rpl_change_topology.inc: New file to change replication topology on the fly. This is used by rpl_init.inc internally, but is also used by test cases that need to change topology (e.g., rpl.rpl_circular_for_4_hosts, which reconfigures the topology to make a failover). mysql-test/include/rpl_connect.inc: New file to create a named connection. This file knows about a number of "standard" connections (master, slave, server_1, etc), and knows how each of them should normally be created. This is mostly used internally (e.g., by rpl_init.inc, master-slave.inc, ndb_master-slave_2ch.inc etc), but can also be used by tests that need to bring a connection up after disconnecting. mysql-test/include/rpl_connection.inc: New file to change connection. This prints the name of the connection. However, for files that source rpl_begin_include_file.inc, it does not print the name of the connection unless $rpl_debug=1. This is good because printing something every time the .inc file changed connection would make the result log harder to read. mysql-test/include/rpl_diff.inc: - Made file capable to compare many servers - Hence renamed it to rpl_diff.inc - If no server list is specified, use all servers from server_1 to server_$rpl_server_count - It now writes the statement to file before executing it. That means it will be subject to SQL string interpolation, but not shell string interpolation (which may be platform-dependent) mysql-test/include/rpl_diff_tables.inc: Removed this file, since its functionality has been merged into diff_tables.inc. mysql-test/include/rpl_end.inc: Renamed master-slave-end.inc to rpl_end.inc, and made it work with arbitrary replication topologies (as configured with rpl_init.inc and possibly rpl_change_topology.inc). Also made it assert that no slave thread has an error. Made it assert that no slave thread is stopped, unless $rpl_only_running_threads=1. mysql-test/include/rpl_for_each_slave.inc: New test script that executes a command once for each slave. This is used by include/rpl_start_slaves.inc and include/rpl_stop_slaves.inc and could possibly be useful for other custom scripts too. mysql-test/include/rpl_generate_sync_chain.inc: New file that computes the variable $rpl_sync_chain. This variable determines in what order slaves are synced by include/rpl_sync.inc. The variable is recomputed the first time that include/rpl_sync.inc is called after rpl_change_topology.inc. mysql-test/include/rpl_init.inc: Made file work for arbitrary topologies instead of just 4-server circle. This file is used by master-slave.inc, rpl_master-slave_2ch.inc etc, and also by tests that need other specific replication topologies. mysql-test/include/rpl_reconnect.inc: New auxiliary file that will reconnect many clients to a given server. All clients configured by rpl_init.inc will reconnect. mysql-test/include/rpl_reset.inc: Made file work for arbitrary replication topologies, check for errors, and sync all threads. Also removed 'drop table' because that has nothing to do with replication. mysql-test/include/rpl_restart_server.inc: New auxiliary file that restarts a server. mysql-test/include/rpl_start_server.inc: New auxiliary file that starts a server that has been shut down. mysql-test/include/rpl_start_slaves.inc: New auxiliary file to start all slaves configured by rpl_init.inc This is used internally by rpl_init.inc but may also be used by tests that want to bring all slaves up. mysql-test/include/rpl_stop_server.inc: New auxiliary file that shuts down a server. mysql-test/include/rpl_stop_slaves.inc: New auxiliary file to stop all slaves configured rpl_init.inc. This is used internally by rpl_end.inc, but may also be used by tests that want to stop all slaves. mysql-test/include/rpl_sync.inc: Made file work for arbitrary replication topologies (as configured by rpl_init.inc and possibly rpl_change_topology.inc) instead of just 4-server circle. mysql-test/include/save_master_pos.inc: Auxiliary file to save the master position. mysql-test/include/setup_fake_relay_log.inc: - Moved complicated logic to write to file into write_var_to_file.inc, so that it can be re-used by other tests. - Added call to show_rpl_debug_info and die in error case. mysql-test/include/show_rpl_debug_info.inc: - Made file print NOW() - Made file print both SHOW MASTER STATUS, SHOW SLAVE HOSTS, and SHOW SLAVE STATUS. - Made file print debug info for all servers configured by rpl_init.inc mysql-test/include/show_slave_status.inc: - Made file use echo instead of SELECT to print variables. - Improved comments. - Use variable names that are less likely to be used by other tests. mysql-test/include/start_slave.inc: - Made test use rpl_begin_include_file.inc to improve debug capabilities. - improved documentation mysql-test/include/stop_slave.inc: - Made script capable to detect which threads are running and stop only those. - Improved documentation mysql-test/include/stop_slave_io.inc: Added file to stop the slave IO thread. mysql-test/include/stop_slave_sql.inc: Added file to stop the slave SQL thread. mysql-test/include/sync_io_with_master.inc: Added file to sync the IO thread of the current connection, up to a previously saved position. mysql-test/include/sync_slave_io_with_master.inc: - Made file work with arbitrarily-named connections. - Made file use rpl_begin_include_file.inc to improve debug capabilities. mysql-test/include/sync_slave_sql_with_io.inc: Added file to sync only the SQL thread, up to the position copied in the IO thread. mysql-test/include/wait_for_query_to_fail.inc: Added file to wait for a query to fail. mysql-test/include/wait_for_slave_io_error.inc: - Use rpl_begin_include_file.inc to improve debug capabilities. - Use existing atom include/show_slave_status.inc to print error message. - Improve comments. ****** - This file now waits until the slave IO thread has completely stopped (to avoid races in tests). - Some IO thread errors are non-fatal and don't cause the slave IO thread to stop. To allow tests to wait for such errors, we add the parameters $slave_io_error_is_nonfatal. If $slave_io_error_is_nonfatal is set, this script does not wait for the IO thread to stop. mysql-test/include/wait_for_slave_io_to_start.inc: - Made script fail if the IO thread has an error. - Use rpl_begin_include_file.inc to improve debug capabilities. - Improved documentation. mysql-test/include/wait_for_slave_io_to_stop.inc: - Fail if server is not configured as slave. Previously, the script accepted servers not configured as slave because there was cleanup code called from master-slave.inc that would execute STOP SLAVE on both master and slave. Now all tests have to clean up after themselves, so we don't have to call stop slave at the beginning of tests. Hence, we disallow calling this script on servers not configured as slaves. - Use rpl_begin_include_file.inc to improve debug capabilities. - Improved documentation. mysql-test/include/wait_for_slave_param.inc: - Added $slave_error_param. This variable can be set to Slave_IO_Errno or Slave_SQL_Errno, in which case the script fails if the corresponding column in the output from SHOW SLAVE STATUS is nonzero. - Replaced exit by die. - Made it print timeout seconds correctly in error message. - Removed $slave_error_message. This is not needed. - Use rpl_begin_include_file.inc for better debug capabilities. mysql-test/include/wait_for_slave_sql_error.inc: - Use rpl_begin_include_file.inc for better debug capabilities. - Improve documentation - Use existing atom show_slave_status.inc to print error. mysql-test/include/wait_for_slave_sql_error_and_skip.inc: - Use rpl_begin_include_file.inc and rpl_connection.inc for better debug capabilities. - Improve documentation mysql-test/include/wait_for_slave_sql_to_start.inc: - Use rpl_begin_include_file.inc for better debug capabilities. - Improve documentation mysql-test/include/wait_for_slave_sql_to_stop.inc: - Fail if Last_SQL_Errno is nonzero. - Fail if server is not configured as slave. Previously, the script accepted servers not configured as slave because there was cleanup code called from master-slave.inc that would execute STOP SLAVE on both master and slave. Now all tests have to clean up after themselves, so we don't have to call stop slave at the beginning of tests. Hence, we disallow calling this script on servers not configured as slaves. - Use rpl_begin_include_file.inc for better debug capabilities. - Improve documentation mysql-test/include/wait_for_slave_to_start.inc: - Use rpl_begin_include_file.inc for better debug capabilities. - Improve documentation mysql-test/include/wait_for_slave_to_stop.inc: - Use rpl_begin_include_file.inc for better debug capabilities. - Improve documentation mysql-test/include/write_var_to_file.inc: Added file to write contents of a mysqltest variable to file. (This was previously in setup_fake_relay_log.inc) mysql-test/mysql-test-run.pl: Allow tests to require restart in case the test is skipped. mysql-test/r/init_file.result: updated result file mysql-test/r/mysqldump_restore.result: update result file mysql-test/suite/binlog/r/binlog_drop_if_exists.result: Moved test that does not use replication to binlog suite. mysql-test/suite/binlog/r/binlog_old_versions.result: updated result file mysql-test/suite/binlog/r/binlog_query_filter_rules.result: Moved test that does not use replication to binlog suite. mysql-test/suite/binlog/r/binlog_server_id.result: Moved test that does not use replication to binlog suite. mysql-test/suite/binlog/r/binlog_sf.result: Moved test that does not use replication to binlog suite. mysql-test/suite/binlog/r/binlog_sql_mode.result: updated result file mysql-test/suite/binlog/t/binlog_auto_increment_bug33029-master.opt: This test replicates, so it should be in the rpl suite. Then we can remove this .opt file too. mysql-test/suite/binlog/t/binlog_drop_if_exists.test: Moved test that does not use replication to binlog suite. mysql-test/suite/binlog/t/binlog_old_versions.test: cosmetic fixes mysql-test/suite/binlog/t/binlog_query_filter_rules-master.opt: Moved test that does not use replication to binlog suite. mysql-test/suite/binlog/t/binlog_query_filter_rules.test: Moved test that does not use replication to binlog suite. mysql-test/suite/binlog/t/binlog_server_id.test: Moved test that does not use replication to binlog suite. mysql-test/suite/binlog/t/binlog_sf.test: Moved test that does not use replication to binlog suite. Since test sets binlog_format internally, it's useless to re-run it. Hence we source have_binlog_format_statement.inc mysql-test/suite/binlog/t/binlog_sql_mode.test: - Test does not use replication, so we remove master-slave.inc. - mysqltest magically adds --force-if-open to $MYSQL_BINLOG in test files that source master-slave.inc. So now we have to add --force-if-open explicitly. mysql-test/suite/bugs/t/rpl_bug12691.test: made test clean up after itself cosmetic fixes mysql-test/suite/bugs/t/rpl_bug23533.test: made test clean up after itself cosmetic fixes mysql-test/suite/bugs/t/rpl_bug31582.test: made test clean up after itself mysql-test/suite/bugs/t/rpl_bug31583.test: made test clean up after itself mysql-test/suite/bugs/t/rpl_bug33029.test: made test clean up after itself mysql-test/suite/bugs/t/rpl_bug36391.test: made test clean up after itself cosmetic fixes mysql-test/suite/bugs/t/rpl_bug37426.test: made test clean up after itself cosmetic fixes mysql-test/suite/bugs/t/rpl_bug38205.test: made test clean up after itself mysql-test/suite/manual/t/rpl_replication_delay.test: made test clean up after itself cosmetic fixes mysql-test/suite/ndb_team/t/rpl_ndb_dd_advance.test: made test clean up after itself cosmetic fixes mysql-test/suite/ndb_team/t/rpl_ndb_extraColMaster.test: made test clean up after itself mysql-test/suite/ndb_team/t/rpl_ndb_mix_innodb.test: made test clean up after itself cosmetic fixes mysql-test/suite/parts/r/rpl_partition.result: updated result file mysql-test/suite/parts/t/rpl_partition.test: Make test clean up replication state. cosmetic fixes mysql-test/suite/rpl/include/rpl_mixed_ddl.inc: made test clean up after itself cosmetic fixes mysql-test/suite/rpl/include/rpl_mixed_dml.inc: made test clean up after itself cosmetic fixes mysql-test/suite/rpl/r/rpl_000010.result: update result file mysql-test/suite/rpl/r/rpl_000011.result: update result file mysql-test/suite/rpl/r/rpl_000013.result: update result file mysql-test/suite/rpl/r/rpl_000017.result: update result file mysql-test/suite/rpl/r/rpl_EE_err.result: update result file mysql-test/suite/rpl/r/rpl_LD_INFILE.result: update result file mysql-test/suite/rpl/r/rpl_alter.result: update result file mysql-test/suite/rpl/r/rpl_alter_db.result: update result file mysql-test/suite/rpl/r/rpl_auto_increment.result: update result file mysql-test/suite/rpl/r/rpl_auto_increment_11932.result: update result file mysql-test/suite/rpl/r/rpl_auto_increment_bug33029.result: update result file mysql-test/suite/rpl/r/rpl_auto_increment_update_failure.result: update result file mysql-test/suite/rpl/r/rpl_begin_commit_rollback.result: update result file mysql-test/suite/rpl/r/rpl_binlog_corruption.result: Updated result file mysql-test/suite/rpl/r/rpl_binlog_errors.result: updated result file mysql-test/suite/rpl/r/rpl_binlog_grant.result: update result file mysql-test/suite/rpl/r/rpl_binlog_max_cache_size.result: Updated result file mysql-test/suite/rpl/r/rpl_bit.result: update result file mysql-test/suite/rpl/r/rpl_bit_npk.result: update result file mysql-test/suite/rpl/r/rpl_blackhole.result: update result file mysql-test/suite/rpl/r/rpl_bug26395.result: update result file mysql-test/suite/rpl/r/rpl_bug31076.result: update result file mysql-test/suite/rpl/r/rpl_bug33931.result: updated result file mysql-test/suite/rpl/r/rpl_bug38694.result: update result file mysql-test/suite/rpl/r/rpl_change_master.result: update result file mysql-test/suite/rpl/r/rpl_charset.result: update result file mysql-test/suite/rpl/r/rpl_charset_sjis.result: update result file mysql-test/suite/rpl/r/rpl_circular_for_4_hosts.result: Updated result file mysql-test/suite/rpl/r/rpl_colSize.result: update result file mysql-test/suite/rpl/r/rpl_commit_after_flush.result: update result file mysql-test/suite/rpl/r/rpl_concurrency_error.result: update result file mysql-test/suite/rpl/r/rpl_conditional_comments.result: update result file mysql-test/suite/rpl/r/rpl_create_database.result: update result file mysql-test/suite/rpl/r/rpl_create_if_not_exists.result: update result file mysql-test/suite/rpl/r/rpl_create_tmp_table_if_not_exists.result: update result file mysql-test/suite/rpl/r/rpl_cross_version.result: Updated result file mysql-test/suite/rpl/r/rpl_current_user.result: update result file mysql-test/suite/rpl/r/rpl_deadlock_innodb.result: update result file mysql-test/suite/rpl/r/rpl_delete_no_where.result: update result file mysql-test/suite/rpl/r/rpl_do_grant.result: updated result file mysql-test/suite/rpl/r/rpl_drop.result: update result file mysql-test/suite/rpl/r/rpl_drop_db.result: update result file mysql-test/suite/rpl/r/rpl_drop_temp.result: update result file mysql-test/suite/rpl/r/rpl_drop_view.result: update result file mysql-test/suite/rpl/r/rpl_dual_pos_advance.result: update result file mysql-test/suite/rpl/r/rpl_empty_master_crash.result: update result file mysql-test/suite/rpl/r/rpl_err_ignoredtable.result: update result file mysql-test/suite/rpl/r/rpl_events.result: update result file mysql-test/suite/rpl/r/rpl_extra_col_master_innodb.result: update result file mysql-test/suite/rpl/r/rpl_extra_col_master_myisam.result: update result file mysql-test/suite/rpl/r/rpl_extra_col_slave_innodb.result: update result file mysql-test/suite/rpl/r/rpl_extra_col_slave_myisam.result: update result file mysql-test/suite/rpl/r/rpl_failed_optimize.result: update result file mysql-test/suite/rpl/r/rpl_filter_tables_not_exist.result: update result file mysql-test/suite/rpl/r/rpl_flushlog_loop.result: update result file mysql-test/suite/rpl/r/rpl_foreign_key_innodb.result: update result file mysql-test/suite/rpl/r/rpl_found_rows.result: update result file mysql-test/suite/rpl/r/rpl_free_items.result: update result file mysql-test/suite/rpl/r/rpl_geometry.result: update result file mysql-test/suite/rpl/r/rpl_get_lock.result: update result file mysql-test/suite/rpl/r/rpl_get_master_version_and_clock.result: update result file mysql-test/suite/rpl/r/rpl_grant.result: update result file mysql-test/suite/rpl/r/rpl_idempotency.result: update result file mysql-test/suite/rpl/r/rpl_ignore_grant.result: update result file mysql-test/suite/rpl/r/rpl_ignore_revoke.result: update result file mysql-test/suite/rpl/r/rpl_ignore_table.result: update result file mysql-test/suite/rpl/r/rpl_ignore_table_update.result: update result file mysql-test/suite/rpl/r/rpl_incident.result: update result file mysql-test/suite/rpl/r/rpl_init_slave.result: update result file mysql-test/suite/rpl/r/rpl_init_slave_errors.result: update result file mysql-test/suite/rpl/r/rpl_innodb.result: update result file mysql-test/suite/rpl/r/rpl_innodb_bug28430.result: update result file mysql-test/suite/rpl/r/rpl_innodb_bug30888.result: update result file mysql-test/suite/rpl/r/rpl_innodb_mixed_ddl.result: update result file mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result: update result file mysql-test/suite/rpl/r/rpl_insert.result: update result file mysql-test/suite/rpl/r/rpl_insert_id.result: update result file mysql-test/suite/rpl/r/rpl_insert_id_pk.result: update result file mysql-test/suite/rpl/r/rpl_insert_ignore.result: update result file mysql-test/suite/rpl/r/rpl_insert_select.result: update result file mysql-test/suite/rpl/r/rpl_invoked_features.result: update result file mysql-test/suite/rpl/r/rpl_killed_ddl.result: update result file mysql-test/suite/rpl/r/rpl_known_bugs_detection.result: update result file mysql-test/suite/rpl/r/rpl_load_from_master.result: update result file mysql-test/suite/rpl/r/rpl_load_table_from_master.result: update result file mysql-test/suite/rpl/r/rpl_loaddata.result: update result file mysql-test/suite/rpl/r/rpl_loaddata_charset.result: update result file mysql-test/suite/rpl/r/rpl_loaddata_concurrent.result: update result file mysql-test/suite/rpl/r/rpl_loaddata_fatal.result: update result file mysql-test/suite/rpl/r/rpl_loaddata_m.result: update result file mysql-test/suite/rpl/r/rpl_loaddata_map.result: update result file mysql-test/suite/rpl/r/rpl_loaddata_s.result: update result file mysql-test/suite/rpl/r/rpl_loaddata_simple.result: update result file mysql-test/suite/rpl/r/rpl_loaddata_symlink.result: update result file mysql-test/suite/rpl/r/rpl_loaddatalocal.result: update result file mysql-test/suite/rpl/r/rpl_loadfile.result: update result file mysql-test/suite/rpl/r/rpl_locale.result: update result file mysql-test/suite/rpl/r/rpl_log_pos.result: update result file mysql-test/suite/rpl/r/rpl_manual_change_index_file.result: update result file mysql-test/suite/rpl/r/rpl_many_optimize.result: update result file mysql-test/suite/rpl/r/rpl_master_pos_wait.result: update result file mysql-test/suite/rpl/r/rpl_misc_functions.result: update result file mysql-test/suite/rpl/r/rpl_mixed_bit_pk.result: update result file mysql-test/suite/rpl/r/rpl_mixed_ddl_dml.result: update result file mysql-test/suite/rpl/r/rpl_multi_delete.result: update result file mysql-test/suite/rpl/r/rpl_multi_delete2.result: update result file mysql-test/suite/rpl/r/rpl_multi_engine.result: update result file mysql-test/suite/rpl/r/rpl_multi_update.result: update result file mysql-test/suite/rpl/r/rpl_multi_update2.result: update result file mysql-test/suite/rpl/r/rpl_multi_update3.result: update result file mysql-test/suite/rpl/r/rpl_multi_update4.result: update result file mysql-test/suite/rpl/r/rpl_mysql_upgrade.result: update result file mysql-test/suite/rpl/r/rpl_name_const.result: update result file mysql-test/suite/rpl/r/rpl_nondeterministic_functions.result: update result file mysql-test/suite/rpl/r/rpl_not_null_innodb.result: update result file mysql-test/suite/rpl/r/rpl_not_null_myisam.result: update result file mysql-test/suite/rpl/r/rpl_optimize.result: update result file mysql-test/suite/rpl/r/rpl_packet.result: update result file mysql-test/suite/rpl/r/rpl_plugin_load.result: update result file mysql-test/suite/rpl/r/rpl_ps.result: update result file mysql-test/suite/rpl/r/rpl_rbr_to_sbr.result: update result file mysql-test/suite/rpl/r/rpl_read_only.result: update result file mysql-test/suite/rpl/r/rpl_relay_space_innodb.result: update result file mysql-test/suite/rpl/r/rpl_relay_space_myisam.result: update result file mysql-test/suite/rpl/r/rpl_relayrotate.result: update result file mysql-test/suite/rpl/r/rpl_relayspace.result: update result file mysql-test/suite/rpl/r/rpl_replicate_do.result: update result file mysql-test/suite/rpl/r/rpl_replicate_ignore_db.result: update result file mysql-test/suite/rpl/r/rpl_report.result: update result file mysql-test/suite/rpl/r/rpl_rewrt_db.result: update result file mysql-test/suite/rpl/r/rpl_rotate_logs.result: update result file mysql-test/suite/rpl/r/rpl_row_001.result: update result file mysql-test/suite/rpl/r/rpl_row_4_bytes.result: update result file mysql-test/suite/rpl/r/rpl_row_NOW.result: update result file mysql-test/suite/rpl/r/rpl_row_USER.result: update result file mysql-test/suite/rpl/r/rpl_row_UUID.result: update result file mysql-test/suite/rpl/r/rpl_row_basic_11bugs.result: update result file mysql-test/suite/rpl/r/rpl_row_basic_2myisam.result: update result file mysql-test/suite/rpl/r/rpl_row_basic_3innodb.result: update result file mysql-test/suite/rpl/r/rpl_row_basic_8partition.result: update result file mysql-test/suite/rpl/r/rpl_row_blob_innodb.result: update result file mysql-test/suite/rpl/r/rpl_row_blob_myisam.result: update result file mysql-test/suite/rpl/r/rpl_row_colSize.result: update result file mysql-test/suite/rpl/r/rpl_row_conflicts.result: update result file mysql-test/suite/rpl/r/rpl_row_delayed_ins.result: update result file mysql-test/suite/rpl/r/rpl_row_drop.result: update result file mysql-test/suite/rpl/r/rpl_row_find_row.result: update result file mysql-test/suite/rpl/r/rpl_row_flsh_tbls.result: update result file mysql-test/suite/rpl/r/rpl_row_func001.result: update result file mysql-test/suite/rpl/r/rpl_row_func002.result: update result file mysql-test/suite/rpl/r/rpl_row_func003.result: update result file mysql-test/suite/rpl/r/rpl_row_inexist_tbl.result: updated result file mysql-test/suite/rpl/r/rpl_row_insert_delayed.result: update result file mysql-test/suite/rpl/r/rpl_row_log.result: update result file mysql-test/suite/rpl/r/rpl_row_log_innodb.result: update result file mysql-test/suite/rpl/r/rpl_row_max_relay_size.result: update result file mysql-test/suite/rpl/r/rpl_row_mysqlbinlog.result: update result file mysql-test/suite/rpl/r/rpl_row_rec_comp_innodb.result: update result file mysql-test/suite/rpl/r/rpl_row_rec_comp_myisam.result: update result file mysql-test/suite/rpl/r/rpl_row_reset_slave.result: update result file mysql-test/suite/rpl/r/rpl_row_sp001.result: update result file mysql-test/suite/rpl/r/rpl_row_sp002_innodb.result: update result file mysql-test/suite/rpl/r/rpl_row_sp003.result: update result file mysql-test/suite/rpl/r/rpl_row_sp005.result: update result file mysql-test/suite/rpl/r/rpl_row_sp006_InnoDB.result: update result file mysql-test/suite/rpl/r/rpl_row_sp007_innodb.result: update result file mysql-test/suite/rpl/r/rpl_row_sp008.result: update result file mysql-test/suite/rpl/r/rpl_row_sp009.result: update result file mysql-test/suite/rpl/r/rpl_row_sp010.result: update result file mysql-test/suite/rpl/r/rpl_row_sp011.result: update result file mysql-test/suite/rpl/r/rpl_row_sp012.result: update result file mysql-test/suite/rpl/r/rpl_row_stop_middle_update.result: update result file mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result: update result file mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result: update result file mysql-test/suite/rpl/r/rpl_row_tbl_metadata.result: update result file mysql-test/suite/rpl/r/rpl_row_trig001.result: update result file mysql-test/suite/rpl/r/rpl_row_trig002.result: update result file mysql-test/suite/rpl/r/rpl_row_trig003.result: update result file mysql-test/suite/rpl/r/rpl_row_trig004.result: update result file mysql-test/suite/rpl/r/rpl_row_trunc_temp.result: update result file mysql-test/suite/rpl/r/rpl_row_unsafe_funcs.result: update result file mysql-test/suite/rpl/r/rpl_row_until.result: update result file mysql-test/suite/rpl/r/rpl_row_view01.result: update result file mysql-test/suite/rpl/r/rpl_row_wide_table.result: update result file mysql-test/suite/rpl/r/rpl_server_id1.result: update result file mysql-test/suite/rpl/r/rpl_server_id2.result: update result file mysql-test/suite/rpl/r/rpl_session_var.result: update result file mysql-test/suite/rpl/r/rpl_set_charset.result: update result file mysql-test/suite/rpl/r/rpl_set_null_innodb.result: update result file mysql-test/suite/rpl/r/rpl_set_null_myisam.result: update result file mysql-test/suite/rpl/r/rpl_show_slave_running.result: update result file mysql-test/suite/rpl/r/rpl_skip_error.result: update result file mysql-test/suite/rpl/r/rpl_slave_grp_exec.result: update result file mysql-test/suite/rpl/r/rpl_slave_load_in.result: update result file mysql-test/suite/rpl/r/rpl_slave_load_remove_tmpfile.result: Updated result file mysql-test/suite/rpl/r/rpl_slave_load_tmpdir_not_exist.result: updated result file mysql-test/suite/rpl/r/rpl_slave_skip.result: update result file mysql-test/suite/rpl/r/rpl_slave_status.result: update result file mysql-test/suite/rpl/r/rpl_slow_query_log.result: update result file mysql-test/suite/rpl/r/rpl_sp.result: update result file mysql-test/suite/rpl/r/rpl_sp004.result: update result file mysql-test/suite/rpl/r/rpl_sp_effects.result: update result file mysql-test/suite/rpl/r/rpl_sporadic_master.result: update result file mysql-test/suite/rpl/r/rpl_ssl.result: update result file mysql-test/suite/rpl/r/rpl_ssl1.result: update result file mysql-test/suite/rpl/r/rpl_start_stop_slave.result: update result file mysql-test/suite/rpl/r/rpl_stm_000001.result: update result file mysql-test/suite/rpl/r/rpl_stm_EE_err2.result: updated result file mysql-test/suite/rpl/r/rpl_stm_auto_increment_bug33029.result: update result file mysql-test/suite/rpl/r/rpl_stm_binlog_direct.result: update result file mysql-test/suite/rpl/r/rpl_stm_conflicts.result: update result file mysql-test/suite/rpl/r/rpl_stm_create_if_not_exists.result: update result file mysql-test/suite/rpl/r/rpl_stm_flsh_tbls.result: update result file mysql-test/suite/rpl/r/rpl_stm_insert_delayed.result: update result file mysql-test/suite/rpl/r/rpl_stm_loadfile.result: update result file mysql-test/suite/rpl/r/rpl_stm_log.result: update result file mysql-test/suite/rpl/r/rpl_stm_max_relay_size.result: update result file mysql-test/suite/rpl/r/rpl_stm_mixing_engines.result: update result file mysql-test/suite/rpl/r/rpl_stm_multi_query.result: update result file mysql-test/suite/rpl/r/rpl_stm_no_op.result: update result file mysql-test/suite/rpl/r/rpl_stm_reset_slave.result: update result file mysql-test/suite/rpl/r/rpl_stm_sql_mode.result: update result file mysql-test/suite/rpl/r/rpl_stm_until.result: update result file mysql-test/suite/rpl/r/rpl_stop_slave.result: update result file mysql-test/suite/rpl/r/rpl_switch_stm_row_mixed.result: update result file mysql-test/suite/rpl/r/rpl_temp_table.result: update result file mysql-test/suite/rpl/r/rpl_temp_table_mix_row.result: update result file mysql-test/suite/rpl/r/rpl_temporary.result: update result file mysql-test/suite/rpl/r/rpl_temporary_errors.result: update result file mysql-test/suite/rpl/r/rpl_test_framework.result: updated result file mysql-test/suite/rpl/r/rpl_timezone.result: Updated result file mysql-test/suite/rpl/r/rpl_tmp_table_and_DDL.result: update result file mysql-test/suite/rpl/r/rpl_trigger.result: update result file mysql-test/suite/rpl/r/rpl_trunc_temp.result: update result file mysql-test/suite/rpl/r/rpl_truncate_2myisam.result: update result file mysql-test/suite/rpl/r/rpl_truncate_3innodb.result: update result file mysql-test/suite/rpl/r/rpl_typeconv_innodb.result: update result file mysql-test/suite/rpl/r/rpl_udf.result: update result file mysql-test/suite/rpl/r/rpl_user.result: update result file mysql-test/suite/rpl/r/rpl_user_variables.result: update result file mysql-test/suite/rpl/r/rpl_variables.result: update result file mysql-test/suite/rpl/r/rpl_variables_stm.result: update result file mysql-test/suite/rpl/r/rpl_view.result: update result file mysql-test/suite/rpl/t/rpl000017-slave.sh: Moved contents of -slave.sh into test. mysql-test/suite/rpl/t/rpl_000010-slave.opt: make all rpl tests use prefix rpl_ mysql-test/suite/rpl/t/rpl_000010.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_000011.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_000013.test: Made test clean up replication state. Replaced save_master_pos/connection slave/sync_with_master by sync_slave_with_master. mysql-test/suite/rpl/t/rpl_000017-slave.opt: make all rpl tests use prefix rpl_ mysql-test/suite/rpl/t/rpl_000017.test: Moved contents of -slave.sh into .test Made test clean up replication state. mysql-test/suite/rpl/t/rpl_EE_err.test: cosmetic fixes mysql-test/suite/rpl/t/rpl_LD_INFILE.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_alter.test: made test clean up after itself replaced rpl_diff_tables by diff_tables cosmetic fixes mysql-test/suite/rpl/t/rpl_alter_db.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_auto_increment.test: cosmetic fixes mysql-test/suite/rpl/t/rpl_auto_increment_11932.test: Made test clean up replication state. don't drop database twice mysql-test/suite/rpl/t/rpl_auto_increment_bug33029.test: - This test replicates, so moved it to rpl suite. - This test uses a fake relay log, so use include/setup_fake_relay_log.inc and cleanup_fake_relay_log.inc instead of ad-hoc code. - Made test clean up replication state (rpl_end.inc) mysql-test/suite/rpl/t/rpl_auto_increment_update_failure.test: - Made test clean up replication state. - diff_tables.inc now takes only one parameter. mysql-test/suite/rpl/t/rpl_begin_commit_rollback.test: renamed rpl_end.inc to master-slave-end.inc mysql-test/suite/rpl/t/rpl_binlog_corruption-master.opt: Got rid of useless -master.opt file. mysql-test/suite/rpl/t/rpl_binlog_corruption.test: Made test clean up replication state. Made test execute on slave connection instead of on master connection. This allows us to get rid of -master.opt file. mysql-test/suite/rpl/t/rpl_binlog_errors.test: made test use rpl_restart_server.inc instead of restart_mysqld.inc mysql-test/suite/rpl/t/rpl_binlog_grant.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_binlog_max_cache_size.test: - Made test clean up replication state. - replaced wait_for_slave_sql_to_stop.inc by wait_for_slave_sql_error_and_skip.inc - renamed diff_master_slave.inc to rpl_diff.inc and renamed $diff_statement to $rpl_diff_statement mysql-test/suite/rpl/t/rpl_bit.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_bit_npk.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_blackhole.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_bug26395.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_bug31076.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_bug33931.test: Made test clean up replication state. Made test use source include/master-slave.inc instead of ad-hoc setup. mysql-test/suite/rpl/t/rpl_bug38694.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_change_master.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_charset.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_charset_sjis.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_circular_for_4_hosts.cnf: Use new names of mtr variables (introduced by the changes in include/circular_rpl_init.inc). mysql-test/suite/rpl/t/rpl_circular_for_4_hosts.test: - Use rpl_init.inc instead of circular_rpl_for_4_hosts.inc. Connections have been renamed (server_[1234] instead of master_[abcd]), we use rpl_sync.inc instead of circular_rpl_for_4_hosts_sync.inc, we use the new rpl_end.inc to clean up instead of doing it manually, and we use rpl_change_topology.inc instead of manual reconfiguration. - Added comment to make test understandable. - the test contained a race condition. server_4 was not sync'ed. This could cause sql_slave_skip_counter to have the value 1 when the test ended, so check-testcase would complain. Added 'sync_slave_with_master server_4'. mysql-test/suite/rpl/t/rpl_colSize.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_commit_after_flush.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_concurrency_error.test: - Made test clean up replication state. - renamed diff_master_slave.inc to rpl_diff.inc and renamed $diff_statement to $rpl_diff_statement mysql-test/suite/rpl/t/rpl_conditional_comments.test: made test clean up after itself new protocol for diff_tables.inc mysql-test/suite/rpl/t/rpl_create_database.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_create_if_not_exists.test: renamed master-slave-end.inc to rpl_end.inc mysql-test/suite/rpl/t/rpl_create_tmp_table_if_not_exists.test: renamed master-slave-end.inc to rpl_end.inc mysql-test/suite/rpl/t/rpl_critical_errors.test: Made test clean up replication state. Fixed syntax error in test. mysql-test/suite/rpl/t/rpl_cross_version.test: Made test clean up replication state. Made test execute on slave connection instead of on master connection. This allows us to get rid of -master.opt file. mysql-test/suite/rpl/t/rpl_current_user.cnf: use environment variables recognized by rpl_init.inc mysql-test/suite/rpl/t/rpl_current_user.test: - Use rpl_init.inc instead of ad-hoc three-server setup. Hence, rename connection slave2 to server_3 - don't drop lots of things at the beginning of the test - rpl_diff_tables.inc does not sync any more, so we have to sync here instead - renamed $diff_table to $rpl_diff_table and $diff_table_list to $rpl_diff_table_list - use diff_tables.inc instead of rpl_diff_tables.inc mysql-test/suite/rpl/t/rpl_ddl.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_deadlock_innodb.test: cosmetic fixes mysql-test/suite/rpl/t/rpl_delete_no_where.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_do_grant.test: Made test clean up replication state. renamed master-slave-end.inc to rpl_end.inc use include/check_slave_no_error.inc instead of ad-hoc construction mysql-test/suite/rpl/t/rpl_drop.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_drop_db.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_drop_temp.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_drop_view.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_dual_pos_advance.test: Made test use the new framework for circular replication, instead of ad-hoc setup. mysql-test/suite/rpl/t/rpl_empty_master_crash.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_err_ignoredtable.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_events.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_extra_col_master_innodb.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_extra_col_master_myisam.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_extra_col_slave_innodb.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_extra_col_slave_myisam.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_failed_optimize.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_filter_tables_not_exist.test: renamed master-slave-end.inc to rpl_end.inc mysql-test/suite/rpl/t/rpl_flushlog_loop-master.opt: Removed useless options from -master.opt file. mysql-test/suite/rpl/t/rpl_flushlog_loop-master.sh: Removed useless -master.sh file mysql-test/suite/rpl/t/rpl_flushlog_loop-slave.opt: Removed useless options from -slave.opt file mysql-test/suite/rpl/t/rpl_flushlog_loop-slave.sh: Removed useless -slave.sh file mysql-test/suite/rpl/t/rpl_flushlog_loop.test: Made test use new framework for circular replication, instead of ad-hoc setup. Made test clean up replication state. mysql-test/suite/rpl/t/rpl_foreign_key_innodb.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_found_rows.test: Made test clean up replication state. replaced reset_master_and_slave.inc by rpl_reset.inc mysql-test/suite/rpl/t/rpl_free_items.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_geometry.test: replaced master-slave-end.inc by rpl_end.inc mysql-test/suite/rpl/t/rpl_get_lock.test: Made test clean up replication state. Replaced save_master_pos+connection slave+sync_with_master by sync_slave_with_master. mysql-test/suite/rpl/t/rpl_get_master_version_and_clock.test: Made test clean up replication state. Removed last part of test, because it was verbatim identical to rpl_server_id1.test mysql-test/suite/rpl/t/rpl_grant.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_idempotency.test: use check_slave_no_error.inc instead of ad-hoc tests use wait_for_slave_sql_error.inc instead of wait_for_slave_to_stop.inc replace master-slave-end.inc by rpl_end.inc mysql-test/suite/rpl/t/rpl_ignore_grant.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_ignore_revoke.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_ignore_table.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_ignore_table_update.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_incident.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_init_slave.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_init_slave_errors.test: Made test clean up replication state. Also replaced call to wait_for_slave_sql_to_stop.inc by call to wait_for_slave_sql_error.inc mysql-test/suite/rpl/t/rpl_innodb.test: replace master-slave-end.inc by rpl_end.inc mysql-test/suite/rpl/t/rpl_innodb_bug28430.test: replace master-slave-end.inc by rpl_end.inc mysql-test/suite/rpl/t/rpl_innodb_bug30888.test: replace master-slave-end.inc by rpl_end.inc mysql-test/suite/rpl/t/rpl_innodb_mixed_ddl.test: cosmetic fixes mysql-test/suite/rpl/t/rpl_innodb_mixed_dml.test: cosmetic fixes mysql-test/suite/rpl/t/rpl_insert.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_insert_id.test: cosmetic fixes mysql-test/suite/rpl/t/rpl_insert_id_pk.test: cosmetic fixes mysql-test/suite/rpl/t/rpl_insert_ignore.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_insert_select.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_invoked_features.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_killed_ddl.test: - Made test clean up replication state. - renamed diff_master_slave.inc to rpl_diff.inc and renamed $diff_statement to $rpl_diff_statement mysql-test/suite/rpl/t/rpl_known_bugs_detection.test: - Made test clean up replication state. - removed wait_for_slave_sql_to_stop.inc, because it already does wait_for_slave_sql_error.inc mysql-test/suite/rpl/t/rpl_load_from_master.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_load_table_from_master.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_loaddata.test: cosmetic fixes mysql-test/suite/rpl/t/rpl_loaddata_charset.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_loaddata_fatal.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_loaddata_m.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_loaddata_map.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_loaddata_s.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_loaddata_simple.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_loaddata_symlink.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_loaddatalocal.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_loadfile.test: - Made test clean up replication state. - replace reset_master_and_slave.inc by rpl_reset.inc - diff_tables.inc now takes only one parameter. - diff_tables.inc also restores the connection to what it was before, so in this test we have to manually change connection after sourcing diff_tables.inc mysql-test/suite/rpl/t/rpl_locale.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_log_pos.test: Made test clean up replication state. replace stop_slave.inc by stop_slave_sql.inc since the io thread is already stopped. mysql-test/suite/rpl/t/rpl_manual_change_index_file.test: use wait_for_slave_io_error.inc instead of wait_for_slave_to_stop.inc replace master-slave-end.inc by rpl_end.inc mysql-test/suite/rpl/t/rpl_many_optimize.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_master_pos_wait.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_misc_functions.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_mixed_bit_pk.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_mixed_ddl_dml.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_multi_delete.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_multi_delete2.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_multi_engine.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_multi_update.test: cosmetic fixes mysql-test/suite/rpl/t/rpl_multi_update2.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_multi_update3.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_multi_update4.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_mysql_upgrade.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_name_const.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_nondeterministic_functions.test: - Made test clean up replication state. - diff_tables.inc now takes only one parameter. - diff_tables.inc also restores the connection to what it was before, so in this test we have to manually change connection after sourcing diff_tables.inc mysql-test/suite/rpl/t/rpl_not_null_innodb.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_not_null_myisam.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_optimize.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_packet.test: - Made test clean up replication state. - replace wait_for_slave_io_to_stop.inc by wait_for_slave_io_error.inc - replace master-slave-reset.inc by rpl_reset.inc + drop table t1. - replaced save_master_pos/connection slave/sync_with_master by sync_slave_with_master. - added comment explaining why we need stop_slave_sql.inc (we shouldn't need it, it's a bug) mysql-test/suite/rpl/t/rpl_plugin_load.test: replace master-slave-end.inc by rpl_end.inc mysql-test/suite/rpl/t/rpl_ps.test: Made test clean up replication state. removed lots os useless junk mysql-test/suite/rpl/t/rpl_rbr_to_sbr.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_read_only.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_relay_space_innodb.test: cosmetic fixes mysql-test/suite/rpl/t/rpl_relay_space_myisam.test: cosmetic fixes mysql-test/suite/rpl/t/rpl_relayrotate.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_relayspace.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_replicate_do.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_replicate_ignore_db.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_report.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_rewrt_db.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_rotate_logs-slave.opt: Got rid of unnecessary -slave.opt file mysql-test/suite/rpl/t/rpl_rotate_logs-slave.sh: Got rid of unnecessary -slave.sh file mysql-test/suite/rpl/t/rpl_rotate_logs.test: - Made test clean up replication state. - replaced wait_for_slave_sql_to_stop.inc by wait_for_slave_sql_error_and_skip.inc - removed useless cleanup at beginning of test - did not make test use the standard replication framework (master-slave.inc + rpl_end.inc), because it won't work. i don't know why. mysql-test/suite/rpl/t/rpl_row_001.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_row_4_bytes.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_row_NOW.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_row_USER.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_row_UUID.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_row_basic_11bugs.test: Made test clean up replication state. Removed unnecessary 'set binlog_format'. replaced master-slave-reset.inc by rpl_reset.inc mysql-test/suite/rpl/t/rpl_row_basic_2myisam.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_row_basic_3innodb.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_row_basic_8partition.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_row_blob_innodb.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_row_blob_myisam.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_row_colSize.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_row_conflicts.test: replace master-slave-end.inc by rpl_end.inc mysql-test/suite/rpl/t/rpl_row_create_table.test: replace master-slave-end.inc by rpl_end.inc replace master-slave-reset.inc by rpl_reset.inc replace long sequence of reset master+reset slave by rpl_reset.inc mysql-test/suite/rpl/t/rpl_row_delayed_ins.test: cosmetic fixes mysql-test/suite/rpl/t/rpl_row_drop.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_row_find_row.test: - Made test clean up replication state. - replace master-slave-reset.inc by rpl_reset.inc - diff_tables.inc now takes only one parameter. mysql-test/suite/rpl/t/rpl_row_flsh_tbls.test: cosmetic fixes mysql-test/suite/rpl/t/rpl_row_func001.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_row_func002.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_row_func003.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_row_inexist_tbl.test: Made test clean up replication state. replace wait_for_slave_sql_to_stop.inc by wait_for_slave_sql_error.inc mysql-test/suite/rpl/t/rpl_row_insert_delayed.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_row_log.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_row_log_innodb.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_row_mysqlbinlog.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_row_rec_comp_innodb.test: Made test clean up replication state mysql-test/suite/rpl/t/rpl_row_rec_comp_myisam.test: - replace master-slave-reset.inc by rpl_reset.inc - Made test clean up replication state - diff_tables.inc now takes only one parameter. mysql-test/suite/rpl/t/rpl_row_sp001.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_row_sp002_innodb.test: cosmetic fixes mysql-test/suite/rpl/t/rpl_row_sp003.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_row_sp005.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_row_sp006_InnoDB.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_row_sp007_innodb.test: cosmetic fixes mysql-test/suite/rpl/t/rpl_row_sp008.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_row_sp009.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_row_sp010.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_row_sp011.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_row_sp012.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_row_stop_middle_update.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_row_tabledefs_2myisam.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_row_tabledefs_3innodb.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_row_tbl_metadata.test: - replaced master-slave-reset.inc by rpl_reset.inc - replaced master-slave-end.inc by rpl_end.inc - diff_tables.inc now takes only one parameter. mysql-test/suite/rpl/t/rpl_row_trig001.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_row_trig002.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_row_trig003.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_row_trig004.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_row_trunc_temp.test: replaced master-slave-end.inc by rpl_end.inc mysql-test/suite/rpl/t/rpl_row_unsafe_funcs.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_row_until.test: Made test clean up replication state. Removed unused mtr variable $VERSION. mysql-test/suite/rpl/t/rpl_row_view01.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_row_wide_table.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_server_id1.test: - Replaced ad-hoc setup of circular replication by call to rpl_init.inc - Made test clean up replication state. - Replaced ad-hoc use of wait_for_slave_param.inc by wait_for_slave_io_error.inc mysql-test/suite/rpl/t/rpl_server_id2.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_session_var.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_set_charset.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_set_null_innodb.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_set_null_myisam.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_show_slave_running.test: made test clean up replication state mysql-test/suite/rpl/t/rpl_skip_error.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_slave_grp_exec.test: - Made test clean up replication state. - replaced wait_for_slave_sql_to_stop.inc by wait_for_slave_sql_error.inc - replaced stop_slave.inc by stop_slave_io.inc where the sql thread was already stopped. mysql-test/suite/rpl/t/rpl_slave_load_in.test: - Made test clean up replication state. - diff_tables.inc now takes only one parameter. mysql-test/suite/rpl/t/rpl_slave_load_remove_tmpfile.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_slave_load_tmpdir_not_exist.test: - Made test clean up replication state. - Replaced call to wait_for_slave_sql_to_stop.inc by call to wait_for_slave_sql_error.inc - Replaced ad-hoc repliction setup by call to master-slave.inc mysql-test/suite/rpl/t/rpl_slave_skip.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_slave_status.test: Made test clean up replication state. replaced check that IO thread has stopped by wait_for_slave_io_error.inc simplified cleanup code mysql-test/suite/rpl/t/rpl_slow_query_log.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_sp.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_sp004.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_sp_effects.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_sporadic_master.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_ssl.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_ssl1.test: Made test clean up replication state. Replaced save_master_pos+connection slave+sync_slave_with_master by sync_slave_with_master mysql-test/suite/rpl/t/rpl_start_stop_slave.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_stm_000001.test: The include file extra/rpl_tests/rpl_stm_000001.test was only sourced once, in suite/rpl/t/rpl_stm_000001.test. Moved extra/rpl_tests/rpl_stm_000001.test to suite/rpl/t/rpl_stm_000001.test and removed the old suite/rpl/t/rpl_stm_000001.test. Also made test clean up replication state, and replaced wait_for_slave_sql_to_stop.inc by wait_for_slave_sql_error_and_skip.inc mysql-test/suite/rpl/t/rpl_stm_000001.test: - The include file extra/rpl_tests/rpl_stm_000001.test was only sourced once, in suite/rpl/t/rpl_stm_000001.test. Moved extra/rpl_tests/rpl_stm_000001.test to suite/rpl/t/rpl_stm_000001.test and removed the old suite/rpl/t/rpl_stm_000001.test. mysql-test/suite/rpl/t/rpl_stm_auto_increment_bug33029.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_stm_binlog_direct.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_stm_conflicts.test: replaced master-slave-end.inc by rpl_end.inc cosmetic fixes mysql-test/suite/rpl/t/rpl_stm_create_if_not_exists.test: use rpl_end instead of master-slave-end. mysql-test/suite/rpl/t/rpl_stm_flsh_tbls.test: cosmetic fixes mysql-test/suite/rpl/t/rpl_stm_insert_delayed.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_stm_loadfile.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_stm_log.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_stm_max_relay_size.test: cosmetic fixes mysql-test/suite/rpl/t/rpl_stm_mixing_engines.test: - replaced master-slave-end.inc by rpl_end.inc - replaced master-slave-reset.inc by rpl_reset.inc - diff_tables.inc now takes only one parameter. mysql-test/suite/rpl/t/rpl_stm_multi_query.test: cosmetic fixes mysql-test/suite/rpl/t/rpl_stm_no_op.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_stm_sql_mode.test: made test clean up replication state mysql-test/suite/rpl/t/rpl_stm_until.test: - Made test clean up replication state. - replaced master-slave-reset.inc by rpl_reset.inc - the relay log is now called slave-relay-bin.000003 instead of .000004, because master-slave.inc doesn't rotate it as much as before. mysql-test/suite/rpl/t/rpl_stop_slave.test: use rpl_end instead of master-slav-end mysql-test/suite/rpl/t/rpl_switch_stm_row_mixed.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_temp_table.test: Made test clean up replication state. Replaced save_master_pos/connection slave/sync_with_master by sync_slave_with_master. mysql-test/suite/rpl/t/rpl_temp_table_mix_row.test: Made test clean up replication state. replaced ad-hoc call to 'connect' by include/rpl_connect.inc replaced master-slave-reset.inc by rpl_reset.inc mysql-test/suite/rpl/t/rpl_temporary.test: - Made test clean up replication state. - This test sources include/delete_anonymous_users.inc on master. This means it updates the user table in the mysql database manually on the master. This causes failure in the slave sql thread when binlog_format=row. Hence, we stop the slave first and source include/delete_anonymous_users.inc on both master and slave. mysql-test/suite/rpl/t/rpl_temporary_errors.test: Made test clean up replication state. cosmetic fixes mysql-test/suite/rpl/t/rpl_test_framework.cnf: new cfg file for new test mysql-test/suite/rpl/t/rpl_test_framework.test: new test case that verifies that include/rpl_change_topology.inc works mysql-test/suite/rpl/t/rpl_timezone.test: - Made test clean up replication state. - stop slave before last sub-test, because that test does not use the slave connection. mysql-test/suite/rpl/t/rpl_tmp_table_and_DDL.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_trigger.test: - Made test clean up replication state. - replace master-slave-reset.inc by rpl_reset.inc - use new file rpl_reconnect.inc instead of ad-hoc code - diff_tables.inc now takes only one parameter. mysql-test/suite/rpl/t/rpl_trunc_temp.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_truncate_2myisam.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_truncate_3innodb.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_typeconv_innodb.test: - made test clean up replication state - removed unnecessary call to master-slave-reset.inc - diff_tables.inc now takes only one parameter. mysql-test/suite/rpl/t/rpl_udf.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_user.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_user_variables.test: Made test clean up replication state. mysql-test/suite/rpl/t/rpl_variables.test: - Made test clean up replication state. - replaced reset_master_and_slave.inc by rpl_reset.inc - diff_tables.inc now takes only one parameter. mysql-test/suite/rpl/t/rpl_variables_stm.test: - Made test clean up replication state. - diff_tables.inc now takes only one parameter. mysql-test/suite/rpl/t/rpl_view.test: Made test clean up replication state. mysql-test/suite/rpl_ndb/r/rpl_ndb_2other.result: updated result file mysql-test/suite/rpl_ndb/r/rpl_ndb_UUID.result: updated result file mysql-test/suite/rpl_ndb/r/rpl_ndb_apply_status.result: updated result file mysql-test/suite/rpl_ndb/r/rpl_ndb_auto_inc.result: updated result file mysql-test/suite/rpl_ndb/r/rpl_ndb_basic.result: updated result file mysql-test/suite/rpl_ndb/r/rpl_ndb_blob.result: updated result file mysql-test/suite/rpl_ndb/r/rpl_ndb_blob2.result: updated result file mysql-test/suite/rpl_ndb/r/rpl_ndb_circular.result: updated result file mysql-test/suite/rpl_ndb/r/rpl_ndb_circular_2ch.result: updated result file mysql-test/suite/rpl_ndb/r/rpl_ndb_circular_simplex.result: updated result file mysql-test/suite/rpl_ndb/r/rpl_ndb_commit_afterflush.result: updated result file mysql-test/suite/rpl_ndb/r/rpl_ndb_ctype_ucs2_def.result: updated result file mysql-test/suite/rpl_ndb/r/rpl_ndb_dd_basic.result: updated result file mysql-test/suite/rpl_ndb/r/rpl_ndb_dd_partitions.result: updated result file mysql-test/suite/rpl_ndb/r/rpl_ndb_ddl.result: updated result file mysql-test/suite/rpl_ndb/r/rpl_ndb_delete_nowhere.result: updated result file mysql-test/suite/rpl_ndb/r/rpl_ndb_do_db.result: updated result file mysql-test/suite/rpl_ndb/r/rpl_ndb_do_table.result: updated result file mysql-test/suite/rpl_ndb/r/rpl_ndb_extraCol.result: updated result file mysql-test/suite/rpl_ndb/r/rpl_ndb_func003.result: updated result file mysql-test/suite/rpl_ndb/r/rpl_ndb_idempotent.result: updated result file mysql-test/suite/rpl_ndb/r/rpl_ndb_innodb2ndb.result: updated result file mysql-test/suite/rpl_ndb/r/rpl_ndb_innodb_trans.result: updated result file mysql-test/suite/rpl_ndb/r/rpl_ndb_insert_ignore.result: updated result file mysql-test/suite/rpl_ndb/r/rpl_ndb_log.result: updated result file mysql-test/suite/rpl_ndb/r/rpl_ndb_mixed_engines_transactions.result: updated result file mysql-test/suite/rpl_ndb/r/rpl_ndb_mixed_tables.result: updated result file mysql-test/suite/rpl_ndb/r/rpl_ndb_multi.result: updated result file mysql-test/suite/rpl_ndb/r/rpl_ndb_multi_update2.result: updated result file mysql-test/suite/rpl_ndb/r/rpl_ndb_multi_update3.result: updated result file mysql-test/suite/rpl_ndb/r/rpl_ndb_myisam2ndb.result: updated result file mysql-test/suite/rpl_ndb/r/rpl_ndb_rep_ignore.result: updated result file mysql-test/suite/rpl_ndb/r/rpl_ndb_row_001.result: updated result file mysql-test/suite/rpl_ndb/r/rpl_ndb_set_null.result: updated result file mysql-test/suite/rpl_ndb/r/rpl_ndb_sp003.result: updated result file mysql-test/suite/rpl_ndb/r/rpl_ndb_sp006.result: updated result file mysql-test/suite/rpl_ndb/r/rpl_ndb_stm_innodb.result: updated result file mysql-test/suite/rpl_ndb/r/rpl_ndb_sync.result: updated result file mysql-test/suite/rpl_ndb/r/rpl_ndb_trig004.result: updated result file mysql-test/suite/rpl_ndb/r/rpl_row_basic_7ndb.result: updated result file mysql-test/suite/rpl_ndb/r/rpl_truncate_7ndb.result: updated result file mysql-test/suite/rpl_ndb/t/rpl_ndb_2innodb.test: made test clean up replication state mysql-test/suite/rpl_ndb/t/rpl_ndb_2myisam.test: made test clean up replication state mysql-test/suite/rpl_ndb/t/rpl_ndb_2ndb.test: made test clean up replication state mysql-test/suite/rpl_ndb/t/rpl_ndb_2other.test: made test clean up replication state mysql-test/suite/rpl_ndb/t/rpl_ndb_UUID.test: made test clean up replication state mysql-test/suite/rpl_ndb/t/rpl_ndb_apply_status.test: made test clean up replication state mysql-test/suite/rpl_ndb/t/rpl_ndb_auto_inc.test: made test clean up replication state mysql-test/suite/rpl_ndb/t/rpl_ndb_bank.test: made test clean up replication state mysql-test/suite/rpl_ndb/t/rpl_ndb_basic.test: - replaced master-slave-end.inc by rpl_end.inc - removed wait_for_slave_sql_to_stop since it is followed by wait_for_slave_sql_error.inc mysql-test/suite/rpl_ndb/t/rpl_ndb_blob.test: made test clean up replication state mysql-test/suite/rpl_ndb/t/rpl_ndb_blob2.test: made test clean up replication state mysql-test/suite/rpl_ndb/t/rpl_ndb_circular.test: made test use rpl_init.inc to setup circular replication, instead of ad-hoc setup made test clean up replication state mysql-test/suite/rpl_ndb/t/rpl_ndb_circular_2ch.cnf: removed automatic configuration of server as slave. this is not needed because rpl_init.inc does it. mysql-test/suite/rpl_ndb/t/rpl_ndb_circular_2ch.test: - made test clean up replication state - it seems that sync_slave_with_master does not work deterministically here, so instead we wait for 'drop table' to replicate by checking when the table disappears on slave. - diff_tables.inc now takes only one parameter. mysql-test/suite/rpl_ndb/t/rpl_ndb_circular_simplex.test: make test clean up replication state use rpl_change_topology.inc to reconfigure replication topology, instead of ad-hoc call to change master mysql-test/suite/rpl_ndb/t/rpl_ndb_commit_afterflush.test: make test clean up replication state mysql-test/suite/rpl_ndb/t/rpl_ndb_ctype_ucs2_def.test: make test clean up replication state mysql-test/suite/rpl_ndb/t/rpl_ndb_dd_basic.test: replace master-slave-end.inc by rpl_end.inc mysql-test/suite/rpl_ndb/t/rpl_ndb_dd_partitions.test: make test clean up replication state mysql-test/suite/rpl_ndb/t/rpl_ndb_ddl.test: make test clean up replication state mysql-test/suite/rpl_ndb/t/rpl_ndb_delete_nowhere.test: make test clean up replication state mysql-test/suite/rpl_ndb/t/rpl_ndb_do_db.test: make test clean up replication state mysql-test/suite/rpl_ndb/t/rpl_ndb_do_table.test: make test clean up replication state mysql-test/suite/rpl_ndb/t/rpl_ndb_extraCol.test: make test clean up replication state mysql-test/suite/rpl_ndb/t/rpl_ndb_func003.test: replace master-slave-end.inc by rpl_end.inc mysql-test/suite/rpl_ndb/t/rpl_ndb_idempotent.test: replace master-slave-end.inc by rpl_end.inc mysql-test/suite/rpl_ndb/t/rpl_ndb_innodb2ndb.test: make test clean up replication state mysql-test/suite/rpl_ndb/t/rpl_ndb_innodb_trans.test: make test clean up replication state mysql-test/suite/rpl_ndb/t/rpl_ndb_insert_ignore.test: make test clean up replication state mysql-test/suite/rpl_ndb/t/rpl_ndb_load.test: make test clean up replication state mysql-test/suite/rpl_ndb/t/rpl_ndb_log.test: make test clean up replication state mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_engines_transactions.test: - replace master-slave-end.inc by rpl_end.inc - diff_tables.inc now takes only one parameter. mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_tables.test: - make test clean up replication state - diff_tables.inc now takes only one parameter. mysql-test/suite/rpl_ndb/t/rpl_ndb_multi.test: - make test clean up replication state - use rpl_change_topology.inc to change replication topology, instead of ad-hoc calls to change master mysql-test/suite/rpl_ndb/t/rpl_ndb_multi_update2.test: make test clean up replication state mysql-test/suite/rpl_ndb/t/rpl_ndb_multi_update3.test: make test clean up replication state mysql-test/suite/rpl_ndb/t/rpl_ndb_myisam2ndb.test: make test clean up replication state mysql-test/suite/rpl_ndb/t/rpl_ndb_relayrotate.test: make test clean up replication state mysql-test/suite/rpl_ndb/t/rpl_ndb_rep_ignore.test: make test clean up replication state mysql-test/suite/rpl_ndb/t/rpl_ndb_row_001.test: make test clean up replication state mysql-test/suite/rpl_ndb/t/rpl_ndb_set_null.test: make test clean up replication state mysql-test/suite/rpl_ndb/t/rpl_ndb_sp003.test: make test clean up replication state mysql-test/suite/rpl_ndb/t/rpl_ndb_sp006.test: make test clean up replication state mysql-test/suite/rpl_ndb/t/rpl_ndb_stm_innodb.test: make test clean up replication state mysql-test/suite/rpl_ndb/t/rpl_ndb_sync.test: make test clean up replication state mysql-test/suite/rpl_ndb/t/rpl_ndb_trig004.test: make test clean up replication state mysql-test/suite/rpl_ndb/t/rpl_ndbapi_multi.test: make test clean up replication state mysql-test/suite/rpl_ndb/t/rpl_row_basic_7ndb.test: replace master-slave-end.inc by rpl_end.inc mysql-test/suite/rpl_ndb/t/rpl_truncate_7ndb.test: replace master-slave-end.inc by rpl_end.inc mysql-test/suite/rpl_ndb/t/rpl_truncate_7ndb_2.test: make test clean up replication state mysql-test/suite/sys_vars/t/rpl_init_slave_func.test: made test clean up after itself mysql-test/t/init_file.test: use new file force_restart.inc instead of SP |
|||
c406c79797 | some more if stmt simplifications | |||
2c8bccadcc | merge from 5.5 main | |||
26ee8f532e |
BUG#46166
Manual merge from mysql-5.1-bugteam into mysql-5.5-bugteam. Conflicts ========= Text conflict in sql/log.cc Text conflict in sql/log.h Text conflict in sql/slave.cc Text conflict in sql/sql_parse.cc Text conflict in sql/sql_priv.h |
|||
647c619393 |
BUG#46166: MYSQL_BIN_LOG::new_file_impl is not propagating error
when generating new name. If find_uniq_filename returns an error, then this error is not being propagated upwards, and execution does not report error to the user (although a entry in the error log is generated). Additionally, some more errors were ignored in new_file_impl: - when writing the rotate event - when reopening the index and binary log file This patch addresses this by propagating the error up in the execution stack. Furthermore, when rotation of the binary log fails, an incident event is written, because there may be a chance that some changes for a given statement, were not properly logged. For example, in SBR, LOAD DATA INFILE statement requires more than one event to be logged, should rotation fail while logging part of the LOAD DATA events, then the logged data would become inconsistent with the data in the storage engine. mysql-test/include/restart_mysqld.inc: Refactored restart_mysqld so that it is not hardcoded for mysqld.1, but rather for the current server. mysql-test/suite/binlog/t/binlog_index.test: The error on open of index and binary log on new_file_impl is now caught. Thence the user will get an error message. We need to accomodate this change in the test case for the failing FLUSH LOGS. mysql-test/suite/rpl/t/rpl_binlog_errors-master.opt: Sets max_binlog_size to 4096. mysql-test/suite/rpl/t/rpl_binlog_errors.test: Added some test cases for asserting that the error is found and reported. sql/handler.cc: Catching error now returned by unlog (in ha_commit_trans) and returning it. sql/log.cc: Propagating errors from new_file_impl upwards. The errors that new_file_impl catches now are: - error on generate_new_name - error on writing the rotate event - error when opening the index or the binary log file. sql/log.h: Changing declaration of: - rotate_and_purge - new_file - new_file_without_locking - new_file_impl - unlog They now return int instead of void. sql/mysql_priv.h: Change signature of reload_acl_and_cache so that write_to_binlog is an int instead of bool. sql/mysqld.cc: Redeclaring not_used var as int instead of bool. sql/rpl_injector.cc: Changes to catch the return from rotate_and_purge. sql/slave.cc: Changes to catch the return values for new_file and rotate_relay_log. sql/slave.h: Changes to rotate_relay_log declaration (now returns int instead of void). sql/sql_load.cc: In SBR, some logging of LOAD DATA events goes through IO_CACHE_CALLBACK invocation at mf_iocache.c:_my_b_get. The IO_CACHE implementation is ignoring the return value for from these callbacks (pre_read and post_read), so we need to find out at the end of the execution if the error is set or not in THD. sql/sql_parse.cc: Catching the rotate_relay_log and rotate_and_purge return values. Semantic change in reload_acl_and_cache so that we report errors in binlog interactions through the write_to_binlog output parameter. If there was any failure while rotating the binary log, we should then report the error to the client when handling SQLCOMM_FLUSH. |
|||
d6df320d9e | merge from 5.5-mtr | |||
7197f142cc | merge from 5.1-mtr | |||
f826970656 | Merging from mysql-5.1-bugteam | |||
a7c09ea9f8 |
Bug#56639 Character Euro (0x88) not converted from cp1251 to utf8
Problem: MySQL cp1251 did not support 'U+20AC EURO SIGN' which was assigned a few years ago to 0x88. Fix: adding mapping: 0x88 <-> U+20AC @ mysql-test/include/ctype_8bit.inc New shared file to test 8bit character sets. @ mysql-test/r/ctype_cp1251.result @ mysql-test/t/ctype_cp1251.test Adding tests @ sql/share/charsets/cp1251.xml Adding mapping @ strings/ctype-extra.c Regenerating ctype-extra.c using strings/conf_to_src according to new cp1251.xml |
|||
a6bd3ba9b7 | upmerge 58515 | |||
067710eba1 |
Bug #58515 Tests: use use exec echo, not write_file to write mysqld.1.expect
Fixed as suggested in the .inc file and two tests Could not reproduce problem, but tested tests on Windows |
|||
e3dee8a7fd |
Bug#57737 Character sets: search fails with like, contraction, index
Problem: LIKE over an indexed column optimized away good results, because my_like_range_utf32/utf16 returned wrong ranges for contractions. Contraction related code was missing in my_like_range_utf32/utf16, but did exist in my_like_range_ucs2/utf8. It was forgotten in utf32/utf16 versions (during mysql-6.0 push/revert mess). Fix: The patch removes individual functions my_like_range_ucs2, my_like_range_utf16, my_like_range_utf32 and introduces a single function my_like_range_generic() instead. The new function handles contractions correctly. It can handle any character set with cs->min_sort_char and cs->max_sort_char represented in Unicode code points. added: @ mysql-test/include/ctype_czech.inc @ mysql-test/include/ctype_like_ignorable.inc @ mysql-test/r/ctype_like_range.result @ mysql-test/t/ctype_like_range.test Adding tests modified: @ include/m_ctype.h - Adding helper functions for contractions. - Prototypes: removing ucs2,utf16,utf32 functions, adding generic function. @ mysql-test/r/ctype_uca.result @ mysql-test/r/ctype_utf16_uca.result @ mysql-test/r/ctype_utf32_uca.result @ mysql-test/t/ctype_uca.test @ mysql-test/t/ctype_utf16_uca.test @ mysql-test/t/ctype_utf32_uca.test - Adding tests. @ strings/ctype-mb.c - Pad function did not put the last character. - Implementing my_like_range_generic() - an universal replacement for three separate functions my_like_range_ucs2(), my_like_range_utf16() and my_like_range_utf32(), with correct contraction handling. @ strings/ctype-ucs2.c - my_fill_mb2 did not put the high byte, as previously it was used to put only characters in ASCII range. Now it puts high byte as well (needed to pupulate cs->max_sort_char correctly). - Adding DBUG_ASSERT() - Removing character set specific functions: my_like_range_ucs2(), my_like_range_utf16() and my_like_range_utf32(). - Using my_like_range_generic() instead of the old functions. @ strings/ctype-uca.c - Using generic function instead of the old character set specific ones. @ sql/item_create.cc @ sql/item_strfunc.cc @ sql/item_strfunc.h - Adding SQL functions LIKE_RANGE_MIN and LIKE_RANGE_MAX, available only in debug build to make sure like_range() works correctly for all character sets and collations. |
|||
ba68b26ae9 |
Bug#58190 BETWEEN no longer uses indexes for date or datetime fields
Regression introduced by WL#2649. Problem: queries with date/datetime columns did not use indexes: set names non_latin1_charset; select * from date_index_test where date_column between '2010-09-01' and '2010-10-01'; before WL#2649 indexes worked fine because charset of date/datetime columns was BINARY which always won. Fix: testing that collation of the operation matches collation of the field is only needed in case of "real" string data types. For DATE, DATETIME it's not needed. @ mysql-test/include/ctype_numconv.inc @ mysql-test/r/ctype_binary.result @ mysql-test/r/ctype_cp1251.result @ mysql-test/r/ctype_latin1.result @ mysql-test/r/ctype_ucs.result @ mysql-test/r/ctype_utf8.result Adding tests @ sql/field.h Adding new method Field_str::match_collation_to_optimize_range() for use in opt_range.cc to distinguish between "real string" types like CHAR, VARCHAR, TEXT (Field_string, Field_varstring, Field_blob) and "almost string" types DATE, TIME, DATETIME (Field_newdate, Field_datetime, Field_time, Field_timestamp) @ sql/opt_range.cc Using new method instead of checking result_type() against STRING result. Note: Another part of this problem (which is not regression) is submitted separately (see bug##58329). |
|||
dfca5156c3 | merge from 5.5-mtr | |||
ef4458af07 | Tests: many if/while expresissons simplified after 57276 | |||
22ae28d3e1 | merge from 5.5 | |||
dbbb506f42 | merge from 5.1 up to rev 3471 | |||
6bf6272fda |
Patch that refactors global read lock implementation and fixes
bug #57006 "Deadlock between HANDLER and FLUSH TABLES WITH READ LOCK" and bug #54673 "It takes too long to get readlock for 'FLUSH TABLES WITH READ LOCK'". The first bug manifested itself as a deadlock which occurred when a connection, which had some table open through HANDLER statement, tried to update some data through DML statement while another connection tried to execute FLUSH TABLES WITH READ LOCK concurrently. What happened was that FTWRL in the second connection managed to perform first step of GRL acquisition and thus blocked all upcoming DML. After that it started to wait for table open through HANDLER statement to be flushed. When the first connection tried to execute DML it has started to wait for GRL/the second connection creating deadlock. The second bug manifested itself as starvation of FLUSH TABLES WITH READ LOCK statements in cases when there was a constant stream of concurrent DML statements (in two or more connections). This has happened because requests for protection against GRL which were acquired by DML statements were ignoring presence of pending GRL and thus the latter was starved. This patch solves both these problems by re-implementing GRL using metadata locks. Similar to the old implementation acquisition of GRL in new implementation is two-step. During the first step we block all concurrent DML and DDL statements by acquiring global S metadata lock (each DML and DDL statement acquires global IX lock for its duration). During the second step we block commits by acquiring global S lock in COMMIT namespace (commit code acquires global IX lock in this namespace). Note that unlike in old implementation acquisition of protection against GRL in DML and DDL is semi-automatic. We assume that any statement which should be blocked by GRL will either open and acquires write-lock on tables or acquires metadata locks on objects it is going to modify. For any such statement global IX metadata lock is automatically acquired for its duration. The first problem is solved because waits for GRL become visible to deadlock detector in metadata locking subsystem and thus deadlocks like one in the first bug become impossible. The second problem is solved because global S locks which are used for GRL implementation are given preference over IX locks which are acquired by concurrent DML (and we can switch to fair scheduling in future if needed). Important change: FTWRL/GRL no longer blocks DML and DDL on temporary tables. Before this patch behavior was not consistent in this respect: in some cases DML/DDL statements on temporary tables were blocked while in others they were not. Since the main use cases for FTWRL are various forms of backups and temporary tables are not preserved during backups we have opted for consistently allowing DML/DDL on temporary tables during FTWRL/GRL. Important change: This patch changes thread state names which are used when DML/DDL of FTWRL is waiting for global read lock. It is now either "Waiting for global read lock" or "Waiting for commit lock" depending on the stage on which FTWRL is. Incompatible change: To solve deadlock in events code which was exposed by this patch we have to replace LOCK_event_metadata mutex with metadata locks on events. As result we have to prohibit DDL on events under LOCK TABLES. This patch also adds extensive test coverage for interaction of DML/DDL and FTWRL. Performance of new and old global read lock implementations in sysbench tests were compared. There were no significant difference between new and old implementations. mysql-test/include/check_ftwrl_compatible.inc: Added helper script which allows to check that a statement is compatible with FLUSH TABLES WITH READ LOCK. mysql-test/include/check_ftwrl_incompatible.inc: Added helper script which allows to check that a statement is incompatible with FLUSH TABLES WITH READ LOCK. mysql-test/include/handler.inc: Adjusted test case to the fact that now DROP TABLE closes open HANDLERs for the table to be dropped before checking if there active FTWRL in this connection. mysql-test/include/wait_show_condition.inc: Fixed small error in the timeout message. The correct name of variable used as parameter for this script is "$condition" and not "$wait_condition". mysql-test/r/delayed.result: Added test coverage for scenario which triggered assert in metadata locking subsystem. mysql-test/r/events_2.result: Updated test results after prohibiting event DDL operations under LOCK TABLES. mysql-test/r/flush.result: Added test coverage for bug #57006 "Deadlock between HANDLER and FLUSH TABLES WITH READ LOCK". mysql-test/r/flush_read_lock.result: Added test coverage for various aspects of FLUSH TABLES WITH READ LOCK functionality. mysql-test/r/flush_read_lock_kill.result: Adjusted test case after replacing custom global read lock implementation with one based on metadata locks. Use new debug_sync point. Do not disable concurrent inserts as now InnoDB we always use InnoDB table. mysql-test/r/handler_innodb.result: Adjusted test case to the fact that now DROP TABLE closes open HANDLERs for the table to be dropped before checking if there active FTWRL in this connection. mysql-test/r/handler_myisam.result: Adjusted test case to the fact that now DROP TABLE closes open HANDLERs for the table to be dropped before checking if there active FTWRL in this connection. mysql-test/r/mdl_sync.result: Adjusted test case after replacing custom global read lock implementation with one based on metadata locks. Replaced usage of GRL-specific debug_sync's with appropriate sync points in MDL subsystem. mysql-test/suite/perfschema/r/dml_setup_instruments.result: Updated test results after removing global COND_global_read_lock condition variable. mysql-test/suite/perfschema/r/func_file_io.result: Ensure that this test doesn't affect subsequent tests. At the end of its execution enable back P_S instrumentation which this test disables at some point. mysql-test/suite/perfschema/r/func_mutex.result: Ensure that this test doesn't affect subsequent tests. At the end of its execution enable back P_S instrumentation which this test disables at some point. mysql-test/suite/perfschema/r/global_read_lock.result: Adjusted test case to take into account that new GRL implementation is based on MDL. mysql-test/suite/perfschema/r/server_init.result: Adjusted test case after replacing custom global read lock implementation with one based on MDL and replacing LOCK_event_metadata mutex with metadata lock. mysql-test/suite/perfschema/t/func_file_io.test: Ensure that this test doesn't affect subsequent tests. At the end of its execution enable back P_S instrumentation which this test disables at some point. mysql-test/suite/perfschema/t/func_mutex.test: Ensure that this test doesn't affect subsequent tests. At the end of its execution enable back P_S instrumentation which this test disables at some point. mysql-test/suite/perfschema/t/global_read_lock.test: Adjusted test case to take into account that new GRL implementation is based on MDL. mysql-test/suite/perfschema/t/server_init.test: Adjusted test case after replacing custom global read lock implementation with one based on MDL and replacing LOCK_event_metadata mutex with metadata lock. mysql-test/suite/rpl/r/rpl_tmp_table_and_DDL.result: Updated test results after prohibiting event DDL under LOCK TABLES. mysql-test/t/delayed.test: Added test coverage for scenario which triggered assert in metadata locking subsystem. mysql-test/t/events_2.test: Updated test case after prohibiting event DDL operations under LOCK TABLES. mysql-test/t/flush.test: Added test coverage for bug #57006 "Deadlock between HANDLER and FLUSH TABLES WITH READ LOCK". mysql-test/t/flush_block_commit.test: Adjusted test case after changing thread state name which is used when COMMIT waits for FLUSH TABLES WITH READ LOCK from "Waiting for release of readlock" to "Waiting for commit lock". mysql-test/t/flush_block_commit_notembedded.test: Adjusted test case after changing thread state name which is used when DML waits for FLUSH TABLES WITH READ LOCK. Now we use "Waiting for global read lock" in this case. mysql-test/t/flush_read_lock.test: Added test coverage for various aspects of FLUSH TABLES WITH READ LOCK functionality. mysql-test/t/flush_read_lock_kill-master.opt: We no longer need to use make_global_read_lock_block_commit_loop debug tag in this test. Instead we rely on an appropriate debug_sync point in MDL code. mysql-test/t/flush_read_lock_kill.test: Adjusted test case after replacing custom global read lock implementation with one based on metadata locks. Use new debug_sync point. Do not disable concurrent inserts as now InnoDB we always use InnoDB table. mysql-test/t/lock_multi.test: Adjusted test case after changing thread state names which are used when DML or DDL waits for FLUSH TABLES WITH READ LOCK to "Waiting for global read lock". mysql-test/t/mdl_sync.test: Adjusted test case after replacing custom global read lock implementation with one based on metadata locks. Replaced usage of GRL-specific debug_sync's with appropriate sync points in MDL subsystem. Updated thread state names which are used when DDL waits for FTWRL. mysql-test/t/trigger_notembedded.test: Adjusted test case after changing thread state names which are used when DML or DDL waits for FLUSH TABLES WITH READ LOCK to "Waiting for global read lock". sql/event_data_objects.cc: Removed Event_queue_element::status/last_executed_changed members and Event_queue_element::update_timing_fields() method. We no longer use this class for updating mysql.events once event is chosen for execution. Accesses to instances of this class in scheduler thread require protection by Event_queue::LOCK_event_queue mutex and we try to avoid updating table while holding this lock. sql/event_data_objects.h: Removed Event_queue_element::status/last_executed_changed members and Event_queue_element::update_timing_fields() method. We no longer use this class for updating mysql.events once event is chosen for execution. Accesses to instances of this class in scheduler thread require protection by Event_queue::LOCK_event_queue mutex and we try to avoid updating table while holding this lock. sql/event_db_repository.cc: - Changed Event_db_repository methods to not release all metadata locks once they are done updating mysql.events table. This allows to keep metadata lock protecting against GRL and lock protecting particular event around until corresponding DDL statement is written to the binary log. - Removed logic for conditional update of "status" and "last_executed" fields from update_timing_fields_for_event() method. In the only case when this method is called now "last_executed" is always modified and tracking change of "status" is too much hassle. sql/event_db_repository.h: Removed logic for conditional update of "status" and "last_executed" fields from Event_db_repository:: update_timing_fields_for_event() method. In the only case when this method is called now "last_executed" is always modified and tracking change of "status" field is too much hassle. sql/event_queue.cc: Changed event scheduler code not to update mysql.events table while holding Event_queue::LOCK_event_queue mutex. Doing so led to a deadlock with a new GRL implementation. This deadlock didn't occur with old implementation due to fact that code acquiring protection against GRL ignored pending GRL requests (which lead to GRL starvation). One of goals of new implementation is to disallow GRL starvation and so we have to solve problem with this deadlock in a different way. sql/events.cc: Changed methods of Events class to acquire protection against GRL while perfoming DDL statement and keep it until statement is written to the binary log. Unfortunately this step together with new GRL implementation exposed deadlock involving Events::LOCK_event_metadata and GRL. To solve it Events::LOCK_event_metadata mutex was replaced with a metadata lock on event. As a side-effect events DDL has to be prohibited under LOCK TABLES even in cases when mysql.events table was explicitly locked for write. sql/events.h: Replaced Events::LOCK_event_metadata mutex with a metadata lock on event. sql/ha_ndbcluster.cc: Updated code after replacing custom global read lock implementation with one based on MDL. Since MDL subsystem should now be able to detect deadlocks involving metadata locks and GRL there is no need for special handling of active GRL. sql/handler.cc: Replaced custom implementation of global read lock with one based on metadata locks. Consequently when doing commit instead of calling method of Global_read_lock class to acquire protection against GRL we simply acquire IX in COMMIT namespace. sql/lock.cc: Replaced custom implementation of global read lock with one based on metadata locks. This step allows to expose wait for GRL to deadlock detector of MDL subsystem and thus succesfully resolve deadlocks similar to one behind bug #57006 "Deadlock between HANDLER and FLUSH TABLES WITH READ LOCK". It also solves problem with GRL starvation described in bug #54673 "It takes too long to get readlock for 'FLUSH TABLES WITH READ LOCK'" since metadata locks used by GRL give preference to FTWRL statement instead of DML statements (if needed in future this can be changed to fair scheduling). Similar to old implementation of acquisition of GRL is two-step. During the first step we block all concurrent DML and DDL statements by acquiring global S metadata lock (each DML and DDL statement acquires global IX lock for its duration). During the second step we block commits by acquiring global S lock in COMMIT namespace (commit code acquires global IX lock in this namespace). Note that unlike in old implementation acquisition of protection against GRL in DML and DDL is semi-automatic. We assume that any statement which should be blocked by GRL will either open and acquires write-lock on tables or acquires metadata locks on objects it is going to modify. For any such statement global IX metadata lock is automatically acquired for its duration. To support this change: - Global_read_lock::lock/unlock_global_read_lock and make_global_read_lock_block_commit methods were changed accordingly. - Global_read_lock::wait_if_global_read_lock() and start_waiting_global_read_lock() methods were dropped. It is now responsibility of code acquiring metadata locks opening tables to acquire protection against GRL by explicitly taking global IX lock with statement duration. - Global variables, mutex and condition variable used by old implementation was removed. - lock_routine_name() was changed to use statement duration for its global IX lock. It was also renamed to lock_object_name() as it now also used to take metadata locks on events. - Global_read_lock::set_explicit_lock_duration() was added which allows not to release locks used for GRL when leaving prelocked mode. sql/lock.h: - Renamed lock_routine_name() to lock_object_name() and changed its signature to allow its usage for events. - Removed broadcast_refresh() function. It is no longer needed with new GRL implementation. sql/log_event.cc: Release metadata locks with statement duration at the end of processing legacy event for LOAD DATA. This ensures that replication thread processing such event properly releases its protection against global read lock. sql/mdl.cc: Changed MDL subsystem to support new MDL-based implementation of global read lock. Added COMMIT and EVENTS namespaces for metadata locks. Changed thread state name for GLOBAL namespace to "Waiting for global read lock". Optimized MDL_map::find_or_insert() method to avoid taking m_mutex mutex when looking up MDL_lock objects for GLOBAL or COMMIT namespaces. We keep pre-created MDL_lock objects for these namespaces around and simply return pointers to these global objects when needed. Changed MDL_lock/MDL_scoped_lock to properly handle notification of insert delayed handler threads when FTWRL takes global S lock. Introduced concept of lock duration. In addition to locks with transaction duration which work in the way which is similar to how locks worked before (i.e. they are released at the end of transaction), locks with statement and explicit duration were introduced. Locks with statement duration are automatically released at the end of statement. Locks with explicit duration require explicit release and obsolete concept of transactional sentinel. * Changed MDL_request and MDL_ticket classes to support notion of duration. * Changed MDL_context to keep locks with different duration in different lists. Changed code handling ticket list to take this into account. * Changed methods responsible for releasing locks to take into account duration of tickets. Particularly public MDL_context::release_lock() method now only can release tickets with explicit duration (there is still internal method which allows to specify duration). To release locks with statement or transaction duration one have to use release_statement/transactional_locks() methods. * Concept of savepoint for MDL subsystem now has to take into account locks with statement duration. Consequently MDL_savepoint class was introduced and methods working with savepoints were updated accordingly. * Added methods which allow to set duration for one or all locks in the context. sql/mdl.h: Changed MDL subsystem to support new MDL-based implementation of global read lock. Added COMMIT and EVENTS namespaces for metadata locks. Introduced concept of lock duration. In addition to locks with transaction duration which work in the way which is similar to how locks worked before (i.e. they are released at the end of transaction), locks with statement and explicit duration were introduced. Locks with statement duration are automatically released at the end of statement. Locks with explicit duration require explicit release and obsolete concept of transactional sentinel. * Changed MDL_request and MDL_ticket classes to support notion of duration. * Changed MDL_context to keep locks with different duration in different lists. Changed code handling ticket list to take this into account. * Changed methods responsible for releasing locks to take into account duration of tickets. Particularly public MDL_context::release_lock() method now only can release tickets with explicit duration (there is still internal method which allows to specify duration). To release locks with statement or transaction duration one have to use release_statement/transactional_locks() methods. * Concept of savepoint for MDL subsystem now has to take into account locks with statement duration. Consequently MDL_savepoint class was introduced and methods working with savepoints were updated accordingly. * Added methods which allow to set duration for one or all locks in the context. sql/mysqld.cc: Removed global mutex and condition variables which were used by old implementation of GRL. Also we no longer need to initialize Events::LOCK_event_metadata mutex as it was replaced with metadata locks on events. sql/mysqld.h: Removed global variable, mutex and condition variables which were used by old implementation of GRL. sql/rpl_rli.cc: When slave thread closes tables which were open for handling of RBR events ensure that it releases global IX lock which was acquired as protection against GRL. sql/sp.cc: Adjusted code to the new signature of lock_object/routine_name(), to the fact that one now needs specify duration of lock when initializing MDL_request and to the fact that savepoints for MDL subsystem are now represented by MDL_savepoint class. sql/sp_head.cc: Ensure that statements in stored procedures release statement metadata locks and thus release their protectiong against GRL in proper moment in time. Adjusted code to the fact that one now needs specify duration of lock when initializing MDL_request. sql/sql_admin.cc: Adjusted code to the fact that one now needs specify duration of lock when initializing MDL_request. sql/sql_base.cc: - Implemented support for new approach to acquiring protection against global read lock. We no longer acquire such protection explicitly on the basis of statement flags. Instead we always rely on code which is responsible for acquiring metadata locks on object to be changed acquiring this protection. This is achieved by acquiring global IX metadata lock with statement duration. Code doing this also responsible for checking that current connection has no active GRL by calling an Global_read_lock::can_acquire_protection() method. Changed code in open_table() and lock_table_names() accordingly. Note that as result of this change DDL and DML on temporary tables is always compatible with GRL (before it was incompatible in some cases and compatible in other cases). - To speed-up code acquiring protection against GRL introduced m_has_protection_against_grl member in Open_table_context class. It indicates that protection was already acquired sometime during open_tables() execution and new attempts can be skipped. - Thanks to new GRL implementation calls to broadcast_refresh() became unnecessary and were removed. - Adjusted code to the fact that one now needs specify duration of lock when initializing MDL_request and to the fact that savepoints for MDL subsystem are now represented by MDL_savepoint class. sql/sql_base.h: Adjusted code to the fact that savepoints for MDL subsystem are now represented by MDL_savepoint class. Also introduced Open_table_context::m_has_protection_against_grl member which allows to avoid acquiring protection against GRL while opening tables if such protection was already acquired. sql/sql_class.cc: Changed THD::leave_locked_tables_mode() after transactional sentinel for metadata locks was obsoleted by introduction of locks with explicit duration. sql/sql_class.h: - Adjusted code to the fact that savepoints for MDL subsystem are now represented by MDL_savepoint class. - Changed Global_read_lock class according to changes in global read lock implementation: * wait_if_global_read_lock and start_waiting_global_read_lock are now gone. Instead code needing protection against GRL has to acquire global IX metadata lock with statement duration itself. To help it new can_acquire_protection() was introduced. Also as result of the above change m_protection_count member is gone too. * Added m_mdl_blocks_commits_lock member to store metadata lock blocking commits. * Adjusted code to the fact that concept of transactional sentinel was obsoleted by concept of lock duration. - Removed CF_PROTECT_AGAINST_GRL flag as it is no longer necessary. New GRL implementation acquires protection against global read lock automagically when statement acquires metadata locks on tables or other objects it is going to change. sql/sql_db.cc: Adjusted code to the fact that one now needs specify duration of lock when initializing MDL_request. sql/sql_handler.cc: Removed call to broadcast_refresh() function. It is no longer needed with new GRL implementation. Adjusted code after introducing duration concept for metadata locks. Particularly to the fact transactional sentinel was replaced with explicit duration. sql/sql_handler.h: Renamed mysql_ha_move_tickets_after_trans_sentinel() to mysql_ha_set_explicit_lock_duration() after transactional sentinel was obsoleted by locks with explicit duration. sql/sql_insert.cc: Adjusted code handling delaying inserts after switching to new GRL implementation. Now connection thread initiating delayed insert has to acquire global IX lock in addition to metadata lock on table being inserted into. This IX lock protects against GRL and similarly to SW lock on table being inserted into has to be passed to handler thread in order to avoid deadlocks. sql/sql_lex.cc: LEX::protect_against_global_read_lock member is no longer necessary since protection against GRL is automatically taken by code acquiring metadata locks/opening tables. sql/sql_lex.h: LEX::protect_against_global_read_lock member is no longer necessary since protection against GRL is automatically taken by code acquiring metadata locks/opening tables. sql/sql_parse.cc: - Implemented support for new approach to acquiring protection against global read lock. We no longer acquire such protection explicitly on the basis of statement flags. Instead we always rely on code which is responsible for acquiring metadata locks on object to be changed acquiring this protection. This is achieved by acquiring global IX metadata lock with statement duration. This lock is automatically released at the end of statement execution. - Changed implementation of CREATE/DROP PROCEDURE/FUNCTION not to release metadata locks and thus protection against of GRL in the middle of statement execution. - Adjusted code to the fact that one now needs specify duration of lock when initializing MDL_request and to the fact that savepoints for MDL subsystem are now represented by MDL_savepoint class. sql/sql_prepare.cc: Adjusted code to the to the fact that savepoints for MDL subsystem are now represented by MDL_savepoint class. sql/sql_rename.cc: With new GRL implementation there is no need to explicitly acquire protection against GRL before renaming tables. This happens automatically in code which acquires metadata locks on tables being renamed. sql/sql_show.cc: Adjusted code to the fact that one now needs specify duration of lock when initializing MDL_request and to the fact that savepoints for MDL subsystem are now represented by MDL_savepoint class. sql/sql_table.cc: - With new GRL implementation there is no need to explicitly acquire protection against GRL before dropping tables. This happens automatically in code which acquires metadata locks on tables being dropped. - Changed mysql_alter_table() not to release lock on new table name explicitly and to rely on automatic release of locks at the end of statement instead. This was necessary since now MDL_context::release_lock() is supported only for locks for explicit duration. sql/sql_trigger.cc: With new GRL implementation there is no need to explicitly acquire protection against GRL before changing table triggers. This happens automatically in code which acquires metadata locks on tables which triggers are to be changed. sql/sql_update.cc: Fix bug exposed by GRL testing. During prepare phase acquire only S metadata locks instead of SW locks to keep prepare of multi-UPDATE compatible with concurrent LOCK TABLES WRITE and global read lock. sql/sql_view.cc: With new GRL implementation there is no need to explicitly acquire protection against GRL before creating view. This happens automatically in code which acquires metadata lock on view to be created. sql/sql_yacc.yy: LEX::protect_against_global_read_lock member is no longer necessary since protection against GRL is automatically taken by code acquiring metadata locks/opening tables. sql/table.cc: Adjusted code to the fact that one now needs specify duration of lock when initializing MDL_request. sql/table.h: Adjusted code to the fact that one now needs specify duration of lock when initializing MDL_request. sql/transaction.cc: Replaced custom implementation of global read lock with one based on metadata locks. Consequently when doing commit instead of calling method of Global_read_lock class to acquire protection against GRL we simply acquire IX in COMMIT namespace. Also adjusted code to the fact that MDL savepoint is now represented by MDL_savepoint class. |
|||
32c86a488d | merge from 5.5-mtr | |||
676e012e47 | merge from 5.1-mtr | |||
56354413f8 | Revert simplified if() in mysql-test/include/show_events.inc | |||
909f0bf94a |
Follow-up to Bug #55582 which allows checking strings in if
Simplified cases where a select was used to compare variable against '' |
|||
33e78dc233 | merge from 5.5 | |||
88d43dfcc8 | upmerge and adapt follow-up to 55582 | |||
d6af9bef7a | due to merge | |||
0455ff8faf |
Follow-up to Bug #55582 which allows chaecking strings in if
Simplified cases where a select was used to compare variable against '' |
|||
650e4c25db |
A patch for Bug#48874 (Test "is_triggers" fails because of wrong charset info).
The thing is that the following attributes are fixed (remembered) when a trigger is created: - character_set_client - character_set_results - collation_connection There are two triggers created in mysql-test/include/mtr_warnings.sql. They were created using "current default" character set / collation. is_triggers.test shows definition of these triggers including recorded character set information. The problem was that if "current default" changed, the recorded character set information was not accurate. There might be two ways to fix that: a) update is_triggers.test so that it does not put character-set information into result-file; b) update mtr_warnings.sql so that the triggers are created using hard-coded character sets. This patch implements option b). |
|||
95f8d9a2a4 |
Bug#56423: Different count with SELECT and CREATE SELECT queries
This is the 5.5 version of the fix. The 5.1 version was too complicated to merge and was null merged. This is a regression from the fix for bug no 38999. A storage engine capable of reading only a subset of a table's columns updates corresponding bits in the read buffer to signal that it has read NULL values for the corresponding columns. It cannot, and should not, update any other bits. Bug no 38999 occurred because the implementation of UPDATE statements compare the NULL bits using memcmp, inadvertently comparing bits that were never requested from the storage engine. The regression was caused by the storage engine trying to alleviate the situation by writing to all NULL bits, even those that it had no knowledge of. This has devastating effects for the index merge algorithm, which relies on all NULL bits, except those explicitly requested, being left unchanged. The fix reverts the fix for bug no 38999 in both InnoDB and InnoDB plugin and changes the server's method of comparing records. For engines that always read entire rows, we proceed as usual. For engines capable of reading only select columns, the record buffers are now compared on a column by column basis. An assertion was also added so that non comparable buffers are never read. Some relevant copy-pasted code was also consolidated in a new function. |
|||
30f57b3323 |
Bug#56423: Different count with SELECT and CREATE SELECT queries
This is a regression from the fix for bug no 38999. A storage engine capable of reading only a subset of a table's columns updates corresponding bits in the read buffer to signal that it has read NULL values for the corresponding columns. It cannot, and should not, update any other bits. Bug no 38999 occurred because the implementation of UPDATE statements compare the NULL bits using memcmp, inadvertently comparing bits that were never requested from the storage engine. The regression was caused by the storage engine trying to alleviate the situation by writing to all NULL bits, even those that it had no knowledge of. This has devastating effects for the index merge algorithm, which relies on all NULL bits, except those explicitly requested, being left unchanged. The fix reverts the fix for bug no 38999 in both InnoDB and InnoDB plugin and changes the server's method of comparing records. For engines that always read entire rows, we proceed as usual. For engines capable of reading only select columns, the record buffers are now compared on a column by column basis. An assertion was also added so that non comparable buffers are never read. Some relevant copy-pasted code was also consolidated in a new function. |
|||
401e6c909c |
Bug#55744 GROUP_CONCAT + CASE + ucs return garbage
Problem: CASE didn't work with a mixture of different character sets in THEN/ELSE in some cases. This happened because after character set aggregation newly created Item_func_conv_charset items corresponding to THEN/ELSE arguments were not put back to args[] array. Fix: put all Item_func_conv_charset back to args[]. @ mysql-test/include/ctype_numconv.inc @ mysql-test/r/ctype_ucs.result Adding tests @ sql/item_cmpfunc.cc Put "agg" back to args[] after character set aggregation. |
|||
8789c79723 | merge | |||
64e189c37c | merge from 5.1-mtr | |||
029657be0e | Merge from mysql-5.5-runtime to mysql-5.5-bugteam. | |||
003a231565 |
Bug#56375 Ignore socket path since it may vary. Added some comments to
inline perl in the test. |
|||
bf55d1fcf0 | Merge from mysql-5.5-bugteam to mysql-5.5-runtime | |||
dae793978a | merge from 5.1 |