mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 21:42:35 +01:00
6e69536956
Problem 1: tests often fail in pushbuild with a timeout when waiting for the slave to start/stop/receive error. Fix 1: Updated the wait_for_slave_* macros in the following way: - The timeout is increased by a factor ten - Refactored the macros so that wait_for_slave_param does the work for the other macros. Problem 2: Tests are often incorrectly written, lacking a source include/wait_for_slave_to_[start|stop].inc. Fix 2: Improved the chance to get it right by adding include/start_slave.inc and include/stop_slave.inc, and updated tests to use these. Problem 3: The the built-in test language command wait_for_slave_to_stop is a misnomer (does not wait for the slave io thread) and does not give as much debug info in case of failure as the otherwise equivalent macro source include/wait_for_slave_sql_to_stop.inc Fix 3: Replaced all calls to the built-in command by a call to the macro. Problem 4: Some, but not all, of the wait_for_slave_* macros had an implicit connection slave. This made some tests confusing to read, and made it more difficult to use the macro in circular replication scenarios, where the connection named master needs to wait. Fix 4: Removed the implicit connection slave from all wait_for_slave_* macros, and updated tests to use an explicit connection slave where necessary. Problem 5: The macros wait_slave_status.inc and wait_show_pattern.inc were unused. Moreover, using them is difficult and error-prone. Fix 5: remove these macros. Problem 6: log_bin_trust_function_creators_basic failed when running tests because it assumed @@global.log_bin_trust_function_creators=1, and some tests modified this variable without resetting it to its original value. Fix 6: All tests that use this variable have been updated so that they reset the value at end of test. mysql-test/extra/rpl_tests/rpl_extraMaster_Col.test: Replaced wait_for_slave_to_stop by include/wait_for_slave_sql_to_stop.inc mysql-test/extra/rpl_tests/rpl_extraSlave_Col.test: Replaced wait_for_slave_to_stop by include/wait_for_slave_sql_to_stop.inc Added connection slave since includ/wait_for_slave_sql_to_stop.inc does not do that anymore. mysql-test/extra/rpl_tests/rpl_log.test: Replaced start slave+wait_slave_status by start_slave.inc mysql-test/include/reset_master_and_slave.inc: replaced start/stop slave by start_slave.inc/stop_slave.inc mysql-test/include/sync_slave_io_with_master.inc: Improved comments and error message. mysql-test/include/wait_for_slave_io_to_stop.inc: Refactored to use wait_for_slave_param.inc. Removed connection slave. mysql-test/include/wait_for_slave_param.inc: - Improved usage instructions - Added more debug info in case of timeout - Added parameters $slave_param_comparison, $slave_timeout, $slave_keep_connection, $slave_error_message mysql-test/include/wait_for_slave_sql_error.inc: Refactored to use wait_for_slave_param.inc. Removed connection slave. mysql-test/include/wait_for_slave_sql_to_start.inc: Refactored to use wait_for_slave_param.inc. Removed connection slave. mysql-test/include/wait_for_slave_sql_to_stop.inc: Refactored to use wait_for_slave_param.inc. Removed connection slave. mysql-test/include/wait_for_slave_to_start.inc: Refactored to use wait_for_slave_param.inc. Removed connection slave. mysql-test/include/wait_for_slave_to_stop.inc: Refactored to use wait_for_slave_param.inc. Removed connection slave. mysql-test/include/wait_show_pattern.inc: Removed unused (and error-prone) file mysql-test/include/wait_slave_status.inc: Removed unused (and error-prone) file mysql-test/suite/binlog/t/binlog_auto_increment_bug33029.test: Renamed $keep_connection to $slave_keep_connection. mysql-test/suite/rpl/t/rpl_bug26395.test: Replace stop slave by stop_slave.inc mysql-test/suite/rpl/t/rpl_circular_for_4_hosts.test: Replace start/stop slave by start_slave.inc/stop_slave.inc. Replace wait_for_slave_param by wait_for_slave_sql_to_stop.inc. mysql-test/suite/rpl/t/rpl_dual_pos_advance.test: Renamed $keep_connection to $slave_keep_connection. mysql-test/suite/rpl/t/rpl_flushlog_loop.test: Replace wait_slave_status by start_slave.inc mysql-test/suite/rpl/t/rpl_idempotency.test: Added connection slave since wait_for_slave_sql_to_stop.inc does not do that any more. mysql-test/suite/rpl/t/rpl_incident.test: Replaced wait_for_slave_to_stop by wait_for_slave_sql_to_stop.inc mysql-test/suite/rpl/t/rpl_init_slave.test: Replaced start/stop slave by start_slave.inc/stop_slave.inc. Replaced save_master_pos;connection slave;sync_with_master by sync_slave_with_master. mysql-test/suite/rpl/t/rpl_log_pos.test: Replaced start/stop slave by start_slave.inc/stop_slave.inc. Replaced wait_for_slave_param by other wait_for_slave_* macros. mysql-test/suite/rpl/t/rpl_packet.test: Replaced start/stop slave by start_slave.inc/stop_slave.inc. mysql-test/suite/rpl/t/rpl_row_inexist_tbl.test: Replaced start/stop slave by start_slave.inc/stop_slave.inc. mysql-test/suite/rpl/t/rpl_row_stop_middle_update.test: Replaced start/stop slave by start_slave.inc/stop_slave.inc. mysql-test/suite/rpl/t/rpl_row_until.test: Replaced start/stop slave by start_slave.inc/stop_slave.inc. Replaced save_master_pos;connection slave;sync_with_master by sync_slave_with_master. mysql-test/suite/rpl/t/rpl_server_id1.test: Replaced start/stop slave by start_slave.inc/stop_slave.inc. mysql-test/suite/rpl/t/rpl_slave_grp_exec.test: Replaced start/stop slave by start_slave.inc/stop_slave.inc. mysql-test/suite/rpl/t/rpl_slave_skip.test: Replaced start/stop slave by start_slave.inc/stop_slave.inc. mysql-test/suite/rpl/t/rpl_slave_status.test: Replaced start/stop slave by start_slave.inc/stop_slave.inc. mysql-test/suite/rpl/t/rpl_sp.test: Restore @@global.log_bin_trust_function_creators at end of test. mysql-test/suite/rpl/t/rpl_sp_effects.test: Restore @@global.log_bin_trust_function_creators at end of test. mysql-test/suite/rpl/t/rpl_stm_until.test: Replaced start/stop slave by start_slave.inc/stop_slave.inc. Replaced save_master_pos;connection slave;sync_with_master by sync_slave_with_master. mysql-test/suite/rpl_ndb/t/rpl_ndb_basic.test: Replaced start slave by start_slave.inc. Added explicit connection slave since wait_for_slave_sql_to_stop.inc does not do that anymore. mysql-test/t/disabled.def: Disabled failing test. mysql-test/t/func_time.test: Restore @@global.log_bin_trust_function_creators at end of test. mysql-test/t/grant.test: Restore @@global.log_bin_trust_function_creators at end of test. mysql-test/t/grant2.test: Restore @@global.log_bin_trust_function_creators at end of test. mysql-test/t/innodb_notembedded.test: Restore @@global.log_bin_trust_function_creators at end of test. mysql-test/t/log_bin_trust_function_creators_func.test: Restore @@global.log_bin_trust_function_creators at end of test. Clean up at end of test by dropping the created user. mysql-test/t/query_cache.test: Restore @@global.log_bin_trust_function_creators at end of test. mysql-test/t/query_cache_notembedded.test: Restore @@global.log_bin_trust_function_creators at end of test. mysql-test/t/rpl_init_slave_func.test: Replaced start/stop slave by start_slave.inc/stop_slave.inc. mysql-test/t/timezone2.test: Restore @@global.log_bin_trust_function_creators at end of test.
584 lines
22 KiB
Text
584 lines
22 KiB
Text
stop slave;
|
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
|
reset master;
|
|
reset slave;
|
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
|
start slave;
|
|
==== Initialization ====
|
|
[on master]
|
|
SET @m_default_week_format= @@global.default_week_format;
|
|
SET @m_init_slave= @@global.init_slave;
|
|
SET @m_lc_time_names= @@global.lc_time_names;
|
|
SET @m_low_priority_updates= @@global.low_priority_updates;
|
|
SET @m_relay_log_purge= @@global.relay_log_purge;
|
|
SET @m_slave_exec_mode= @@global.slave_exec_mode;
|
|
SET @m_sql_mode= @@global.sql_mode;
|
|
SET @m_sync_binlog= @@global.sync_binlog;
|
|
[on slave]
|
|
SET @s_default_week_format= @@global.default_week_format;
|
|
SET @s_init_slave= @@global.init_slave;
|
|
SET @s_lc_time_names= @@global.lc_time_names;
|
|
SET @s_low_priority_updates= @@global.low_priority_updates;
|
|
SET @s_relay_log_purge= @@global.relay_log_purge;
|
|
SET @s_slave_exec_mode= @@global.slave_exec_mode;
|
|
SET @s_sql_mode= @@global.sql_mode;
|
|
SET @s_sync_binlog= @@global.sync_binlog;
|
|
SET @@global.relay_log_purge = OFF;
|
|
SET @@global.sync_binlog = 1000000;
|
|
SET @@global.slave_exec_mode = 'STRICT';
|
|
SET @@sql_big_selects = OFF;
|
|
SET @@last_insert_id = 10;
|
|
SET @@global.low_priority_updates = OFF;
|
|
SET @@local.low_priority_updates = OFF;
|
|
SET @@global.default_week_format = 1;
|
|
SET @@local.default_week_format = 2;
|
|
SET @@global.lc_time_names = 'zh_HK';
|
|
SET @@local.lc_time_names = 'zh_TW';
|
|
SET @@global.sql_mode = 'ALLOW_INVALID_DATES';
|
|
SET @@local.sql_mode = 'ANSI_QUOTES,ERROR_FOR_DIVISION_BY_ZERO,HIGH_NOT_PRECEDENCE';
|
|
SET @user_num = 10;
|
|
SET @user_text = 'Alunda';
|
|
[on master]
|
|
**** Resetting master and slave ****
|
|
include/stop_slave.inc
|
|
RESET SLAVE;
|
|
RESET MASTER;
|
|
include/start_slave.inc
|
|
[on slave]
|
|
SET @@global.init_slave = 'ant';
|
|
[on master]
|
|
CREATE TABLE tstmt (id INT AUTO_INCREMENT PRIMARY KEY,
|
|
truth BOOLEAN,
|
|
num INT,
|
|
text VARCHAR(100));
|
|
CREATE TABLE tproc LIKE tstmt;
|
|
CREATE TABLE tfunc LIKE tstmt;
|
|
CREATE TABLE ttrig LIKE tstmt;
|
|
CREATE TABLE tprep LIKE tstmt;
|
|
CREATE TABLE trigger_table (text CHAR(4));
|
|
==== Insert variables directly ====
|
|
---- global variables ----
|
|
SET @@global.relay_log_purge = ON;
|
|
INSERT INTO tstmt(truth) VALUES (@@global.relay_log_purge);
|
|
SET @@global.relay_log_purge = OFF;
|
|
INSERT INTO tstmt(truth) VALUES (@@global.relay_log_purge);
|
|
SET @@global.sync_binlog = 2000000;
|
|
INSERT INTO tstmt(num) VALUES (@@global.sync_binlog);
|
|
SET @@global.sync_binlog = 3000000;
|
|
INSERT INTO tstmt(num) VALUES (@@global.sync_binlog);
|
|
SET @@global.init_slave = 'bison';
|
|
INSERT INTO tstmt(text) VALUES (@@global.init_slave);
|
|
SET @@global.init_slave = 'cat';
|
|
INSERT INTO tstmt(text) VALUES (@@global.init_slave);
|
|
SET @@global.slave_exec_mode = 'IDEMPOTENT';
|
|
INSERT INTO tstmt(text) VALUES (@@global.slave_exec_mode);
|
|
SET @@global.slave_exec_mode = 'STRICT';
|
|
INSERT INTO tstmt(text) VALUES (@@global.slave_exec_mode);
|
|
---- session variables ----
|
|
SET @@sql_big_selects = ON;
|
|
INSERT INTO tstmt(truth) VALUES (@@sql_big_selects);
|
|
SET @@sql_big_selects = OFF;
|
|
INSERT INTO tstmt(truth) VALUES (@@sql_big_selects);
|
|
SET @@last_insert_id = 20;
|
|
INSERT INTO tstmt(num) VALUES (@@last_insert_id);
|
|
SET @@last_insert_id = 30;
|
|
INSERT INTO tstmt(num) VALUES (@@last_insert_id);
|
|
---- global and session variables ----
|
|
SET @@global.low_priority_updates = ON;
|
|
SET @@local.low_priority_updates = OFF;
|
|
INSERT INTO tstmt(truth) VALUES (@@global.low_priority_updates);
|
|
INSERT INTO tstmt(truth) VALUES (@@local.low_priority_updates);
|
|
SET @@global.low_priority_updates = OFF;
|
|
SET @@local.low_priority_updates = ON;
|
|
INSERT INTO tstmt(truth) VALUES (@@global.low_priority_updates);
|
|
INSERT INTO tstmt(truth) VALUES (@@local.low_priority_updates);
|
|
SET @@global.default_week_format = 3;
|
|
SET @@local.default_week_format = 4;
|
|
INSERT INTO tstmt(num) VALUES (@@global.default_week_format);
|
|
INSERT INTO tstmt(num) VALUES (@@local.default_week_format);
|
|
SET @@global.default_week_format = 5;
|
|
SET @@local.default_week_format = 6;
|
|
INSERT INTO tstmt(num) VALUES (@@global.default_week_format);
|
|
INSERT INTO tstmt(num) VALUES (@@local.default_week_format);
|
|
SET @@global.lc_time_names = 'sv_SE';
|
|
SET @@local.lc_time_names = 'sv_FI';
|
|
INSERT INTO tstmt(text) VALUES (@@global.lc_time_names);
|
|
INSERT INTO tstmt(text) VALUES (@@local.lc_time_names);
|
|
SET @@global.lc_time_names = 'ar_TN';
|
|
SET @@local.lc_time_names = 'ar_IQ';
|
|
INSERT INTO tstmt(text) VALUES (@@global.lc_time_names);
|
|
INSERT INTO tstmt(text) VALUES (@@local.lc_time_names);
|
|
SET @@global.sql_mode = '';
|
|
SET @@local.sql_mode = 'IGNORE_SPACE,NO_AUTO_CREATE_USER';
|
|
INSERT INTO tstmt(text) VALUES (@@global.sql_mode);
|
|
INSERT INTO tstmt(text) VALUES (@@local.sql_mode);
|
|
SET @@global.sql_mode = 'NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,NO_DIR_IN_CREATE,NO_ENGINE_SUBSTITUTION';
|
|
SET @@local.sql_mode = 'NO_FIELD_OPTIONS,NO_KEY_OPTIONS,NO_TABLE_OPTIONS';
|
|
INSERT INTO tstmt(text) VALUES (@@global.sql_mode);
|
|
INSERT INTO tstmt(text) VALUES (@@local.sql_mode);
|
|
---- user variables ----
|
|
SET @user_num = 20;
|
|
INSERT INTO tstmt(num) VALUES (@user_num);
|
|
SET @user_num = 30;
|
|
INSERT INTO tstmt(num) VALUES (@user_num);
|
|
SET @user_text = 'Bergsbrunna';
|
|
INSERT INTO tstmt(text) VALUES (@user_text);
|
|
SET @user_text = 'Centrum';
|
|
INSERT INTO tstmt(text) VALUES (@user_text);
|
|
==== Insert variables from a stored procedure ====
|
|
CREATE PROCEDURE proc()
|
|
BEGIN
|
|
# GLOBAL
|
|
# boolean
|
|
SET @@global.relay_log_purge = ON;
|
|
INSERT INTO tproc(truth) VALUES (@@global.relay_log_purge);
|
|
SET @@global.relay_log_purge = OFF;
|
|
INSERT INTO tproc(truth) VALUES (@@global.relay_log_purge);
|
|
# numeric
|
|
SET @@global.sync_binlog = 2000000;
|
|
INSERT INTO tproc(num) VALUES (@@global.sync_binlog);
|
|
SET @@global.sync_binlog = 3000000;
|
|
INSERT INTO tproc(num) VALUES (@@global.sync_binlog);
|
|
# string
|
|
SET @@global.init_slave = 'bison';
|
|
INSERT INTO tproc(text) VALUES (@@global.init_slave);
|
|
SET @@global.init_slave = 'cat';
|
|
INSERT INTO tproc(text) VALUES (@@global.init_slave);
|
|
# enumeration
|
|
SET @@global.slave_exec_mode = 'IDEMPOTENT';
|
|
INSERT INTO tproc(text) VALUES (@@global.slave_exec_mode);
|
|
SET @@global.slave_exec_mode = 'STRICT';
|
|
INSERT INTO tproc(text) VALUES (@@global.slave_exec_mode);
|
|
# SESSION
|
|
# boolean
|
|
SET @@sql_big_selects = ON;
|
|
INSERT INTO tproc(truth) VALUES (@@sql_big_selects);
|
|
SET @@sql_big_selects = OFF;
|
|
INSERT INTO tproc(truth) VALUES (@@sql_big_selects);
|
|
# numeric
|
|
SET @@last_insert_id = 20;
|
|
INSERT INTO tproc(num) VALUES (@@last_insert_id);
|
|
SET @@last_insert_id = 30;
|
|
INSERT INTO tproc(num) VALUES (@@last_insert_id);
|
|
# BOTH
|
|
# boolean
|
|
SET @@global.low_priority_updates = ON;
|
|
SET @@local.low_priority_updates = OFF;
|
|
INSERT INTO tproc(truth) VALUES (@@global.low_priority_updates);
|
|
INSERT INTO tproc(truth) VALUES (@@local.low_priority_updates);
|
|
SET @@global.low_priority_updates = OFF;
|
|
SET @@local.low_priority_updates = ON;
|
|
INSERT INTO tproc(truth) VALUES (@@global.low_priority_updates);
|
|
INSERT INTO tproc(truth) VALUES (@@local.low_priority_updates);
|
|
# numeric
|
|
SET @@global.default_week_format = 3;
|
|
SET @@local.default_week_format = 4;
|
|
INSERT INTO tproc(num) VALUES (@@global.default_week_format);
|
|
INSERT INTO tproc(num) VALUES (@@local.default_week_format);
|
|
SET @@global.default_week_format = 5;
|
|
SET @@local.default_week_format = 6;
|
|
INSERT INTO tproc(num) VALUES (@@global.default_week_format);
|
|
INSERT INTO tproc(num) VALUES (@@local.default_week_format);
|
|
# text
|
|
SET @@global.lc_time_names = 'sv_SE';
|
|
SET @@local.lc_time_names = 'sv_FI';
|
|
INSERT INTO tproc(text) VALUES (@@global.lc_time_names);
|
|
INSERT INTO tproc(text) VALUES (@@local.lc_time_names);
|
|
SET @@global.lc_time_names = 'ar_TN';
|
|
SET @@local.lc_time_names = 'ar_IQ';
|
|
INSERT INTO tproc(text) VALUES (@@global.lc_time_names);
|
|
INSERT INTO tproc(text) VALUES (@@local.lc_time_names);
|
|
# enum
|
|
SET @@global.sql_mode = '';
|
|
SET @@local.sql_mode = 'IGNORE_SPACE,NO_AUTO_CREATE_USER';
|
|
INSERT INTO tproc(text) VALUES (@@global.sql_mode);
|
|
INSERT INTO tproc(text) VALUES (@@local.sql_mode);
|
|
SET @@global.sql_mode = 'NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,NO_DIR_IN_CREATE,NO_ENGINE_SUBSTITUTION';
|
|
SET @@local.sql_mode = 'NO_FIELD_OPTIONS,NO_KEY_OPTIONS,NO_TABLE_OPTIONS';
|
|
INSERT INTO tproc(text) VALUES (@@global.sql_mode);
|
|
INSERT INTO tproc(text) VALUES (@@local.sql_mode);
|
|
# USER
|
|
# numeric
|
|
SET @user_num = 20;
|
|
INSERT INTO tproc(num) VALUES (@user_num);
|
|
SET @user_num = 30;
|
|
INSERT INTO tproc(num) VALUES (@user_num);
|
|
# string
|
|
SET @user_text = 'Bergsbrunna';
|
|
INSERT INTO tproc(text) VALUES (@user_text);
|
|
SET @user_text = 'Centrum';
|
|
INSERT INTO tproc(text) VALUES (@user_text);
|
|
END|
|
|
CALL proc();
|
|
==== Insert variables from a stored function ====
|
|
CREATE FUNCTION func()
|
|
RETURNS INT
|
|
BEGIN
|
|
# GLOBAL
|
|
# boolean
|
|
SET @@global.relay_log_purge = ON;
|
|
INSERT INTO tfunc(truth) VALUES (@@global.relay_log_purge);
|
|
SET @@global.relay_log_purge = OFF;
|
|
INSERT INTO tfunc(truth) VALUES (@@global.relay_log_purge);
|
|
# numeric
|
|
SET @@global.sync_binlog = 2000000;
|
|
INSERT INTO tfunc(num) VALUES (@@global.sync_binlog);
|
|
SET @@global.sync_binlog = 3000000;
|
|
INSERT INTO tfunc(num) VALUES (@@global.sync_binlog);
|
|
# string
|
|
SET @@global.init_slave = 'bison';
|
|
INSERT INTO tfunc(text) VALUES (@@global.init_slave);
|
|
SET @@global.init_slave = 'cat';
|
|
INSERT INTO tfunc(text) VALUES (@@global.init_slave);
|
|
# enumeration
|
|
SET @@global.slave_exec_mode = 'IDEMPOTENT';
|
|
INSERT INTO tfunc(text) VALUES (@@global.slave_exec_mode);
|
|
SET @@global.slave_exec_mode = 'STRICT';
|
|
INSERT INTO tfunc(text) VALUES (@@global.slave_exec_mode);
|
|
# SESSION
|
|
# boolean
|
|
SET @@sql_big_selects = ON;
|
|
INSERT INTO tfunc(truth) VALUES (@@sql_big_selects);
|
|
SET @@sql_big_selects = OFF;
|
|
INSERT INTO tfunc(truth) VALUES (@@sql_big_selects);
|
|
# numeric
|
|
SET @@last_insert_id = 20;
|
|
INSERT INTO tfunc(num) VALUES (@@last_insert_id);
|
|
SET @@last_insert_id = 30;
|
|
INSERT INTO tfunc(num) VALUES (@@last_insert_id);
|
|
# BOTH
|
|
# boolean
|
|
SET @@global.low_priority_updates = ON;
|
|
SET @@local.low_priority_updates = OFF;
|
|
INSERT INTO tfunc(truth) VALUES (@@global.low_priority_updates);
|
|
INSERT INTO tfunc(truth) VALUES (@@local.low_priority_updates);
|
|
SET @@global.low_priority_updates = OFF;
|
|
SET @@local.low_priority_updates = ON;
|
|
INSERT INTO tfunc(truth) VALUES (@@global.low_priority_updates);
|
|
INSERT INTO tfunc(truth) VALUES (@@local.low_priority_updates);
|
|
# numeric
|
|
SET @@global.default_week_format = 3;
|
|
SET @@local.default_week_format = 4;
|
|
INSERT INTO tfunc(num) VALUES (@@global.default_week_format);
|
|
INSERT INTO tfunc(num) VALUES (@@local.default_week_format);
|
|
SET @@global.default_week_format = 5;
|
|
SET @@local.default_week_format = 6;
|
|
INSERT INTO tfunc(num) VALUES (@@global.default_week_format);
|
|
INSERT INTO tfunc(num) VALUES (@@local.default_week_format);
|
|
# text
|
|
SET @@global.lc_time_names = 'sv_SE';
|
|
SET @@local.lc_time_names = 'sv_FI';
|
|
INSERT INTO tfunc(text) VALUES (@@global.lc_time_names);
|
|
INSERT INTO tfunc(text) VALUES (@@local.lc_time_names);
|
|
SET @@global.lc_time_names = 'ar_TN';
|
|
SET @@local.lc_time_names = 'ar_IQ';
|
|
INSERT INTO tfunc(text) VALUES (@@global.lc_time_names);
|
|
INSERT INTO tfunc(text) VALUES (@@local.lc_time_names);
|
|
# enum
|
|
SET @@global.sql_mode = '';
|
|
SET @@local.sql_mode = 'IGNORE_SPACE,NO_AUTO_CREATE_USER';
|
|
INSERT INTO tfunc(text) VALUES (@@global.sql_mode);
|
|
INSERT INTO tfunc(text) VALUES (@@local.sql_mode);
|
|
SET @@global.sql_mode = 'NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,NO_DIR_IN_CREATE,NO_ENGINE_SUBSTITUTION';
|
|
SET @@local.sql_mode = 'NO_FIELD_OPTIONS,NO_KEY_OPTIONS,NO_TABLE_OPTIONS';
|
|
INSERT INTO tfunc(text) VALUES (@@global.sql_mode);
|
|
INSERT INTO tfunc(text) VALUES (@@local.sql_mode);
|
|
# USER
|
|
# numeric
|
|
SET @user_num = 20;
|
|
INSERT INTO tfunc(num) VALUES (@user_num);
|
|
SET @user_num = 30;
|
|
INSERT INTO tfunc(num) VALUES (@user_num);
|
|
# string
|
|
SET @user_text = 'Bergsbrunna';
|
|
INSERT INTO tfunc(text) VALUES (@user_text);
|
|
SET @user_text = 'Centrum';
|
|
INSERT INTO tfunc(text) VALUES (@user_text);
|
|
RETURN 0;
|
|
END|
|
|
SELECT func();
|
|
func()
|
|
0
|
|
==== Insert variables from a trigger ====
|
|
CREATE TRIGGER trig
|
|
BEFORE INSERT ON trigger_table
|
|
FOR EACH ROW
|
|
BEGIN
|
|
# GLOBAL
|
|
# boolean
|
|
SET @@global.relay_log_purge = ON;
|
|
INSERT INTO ttrig(truth) VALUES (@@global.relay_log_purge);
|
|
SET @@global.relay_log_purge = OFF;
|
|
INSERT INTO ttrig(truth) VALUES (@@global.relay_log_purge);
|
|
# numeric
|
|
SET @@global.sync_binlog = 2000000;
|
|
INSERT INTO ttrig(num) VALUES (@@global.sync_binlog);
|
|
SET @@global.sync_binlog = 3000000;
|
|
INSERT INTO ttrig(num) VALUES (@@global.sync_binlog);
|
|
# string
|
|
SET @@global.init_slave = 'bison';
|
|
INSERT INTO ttrig(text) VALUES (@@global.init_slave);
|
|
SET @@global.init_slave = 'cat';
|
|
INSERT INTO ttrig(text) VALUES (@@global.init_slave);
|
|
# enumeration
|
|
SET @@global.slave_exec_mode = 'IDEMPOTENT';
|
|
INSERT INTO ttrig(text) VALUES (@@global.slave_exec_mode);
|
|
SET @@global.slave_exec_mode = 'STRICT';
|
|
INSERT INTO ttrig(text) VALUES (@@global.slave_exec_mode);
|
|
# SESSION
|
|
# boolean
|
|
SET @@sql_big_selects = ON;
|
|
INSERT INTO ttrig(truth) VALUES (@@sql_big_selects);
|
|
SET @@sql_big_selects = OFF;
|
|
INSERT INTO ttrig(truth) VALUES (@@sql_big_selects);
|
|
# numeric
|
|
SET @@last_insert_id = 20;
|
|
INSERT INTO ttrig(num) VALUES (@@last_insert_id);
|
|
SET @@last_insert_id = 30;
|
|
INSERT INTO ttrig(num) VALUES (@@last_insert_id);
|
|
# BOTH
|
|
# boolean
|
|
SET @@global.low_priority_updates = ON;
|
|
SET @@local.low_priority_updates = OFF;
|
|
INSERT INTO ttrig(truth) VALUES (@@global.low_priority_updates);
|
|
INSERT INTO ttrig(truth) VALUES (@@local.low_priority_updates);
|
|
SET @@global.low_priority_updates = OFF;
|
|
SET @@local.low_priority_updates = ON;
|
|
INSERT INTO ttrig(truth) VALUES (@@global.low_priority_updates);
|
|
INSERT INTO ttrig(truth) VALUES (@@local.low_priority_updates);
|
|
# numeric
|
|
SET @@global.default_week_format = 3;
|
|
SET @@local.default_week_format = 4;
|
|
INSERT INTO ttrig(num) VALUES (@@global.default_week_format);
|
|
INSERT INTO ttrig(num) VALUES (@@local.default_week_format);
|
|
SET @@global.default_week_format = 5;
|
|
SET @@local.default_week_format = 6;
|
|
INSERT INTO ttrig(num) VALUES (@@global.default_week_format);
|
|
INSERT INTO ttrig(num) VALUES (@@local.default_week_format);
|
|
# text
|
|
SET @@global.lc_time_names = 'sv_SE';
|
|
SET @@local.lc_time_names = 'sv_FI';
|
|
INSERT INTO ttrig(text) VALUES (@@global.lc_time_names);
|
|
INSERT INTO ttrig(text) VALUES (@@local.lc_time_names);
|
|
SET @@global.lc_time_names = 'ar_TN';
|
|
SET @@local.lc_time_names = 'ar_IQ';
|
|
INSERT INTO ttrig(text) VALUES (@@global.lc_time_names);
|
|
INSERT INTO ttrig(text) VALUES (@@local.lc_time_names);
|
|
# enum
|
|
SET @@global.sql_mode = '';
|
|
SET @@local.sql_mode = 'IGNORE_SPACE,NO_AUTO_CREATE_USER';
|
|
INSERT INTO ttrig(text) VALUES (@@global.sql_mode);
|
|
INSERT INTO ttrig(text) VALUES (@@local.sql_mode);
|
|
SET @@global.sql_mode = 'NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,NO_DIR_IN_CREATE,NO_ENGINE_SUBSTITUTION';
|
|
SET @@local.sql_mode = 'NO_FIELD_OPTIONS,NO_KEY_OPTIONS,NO_TABLE_OPTIONS';
|
|
INSERT INTO ttrig(text) VALUES (@@global.sql_mode);
|
|
INSERT INTO ttrig(text) VALUES (@@local.sql_mode);
|
|
# USER
|
|
# numeric
|
|
SET @user_num = 20;
|
|
INSERT INTO ttrig(num) VALUES (@user_num);
|
|
SET @user_num = 30;
|
|
INSERT INTO ttrig(num) VALUES (@user_num);
|
|
# string
|
|
SET @user_text = 'Bergsbrunna';
|
|
INSERT INTO ttrig(text) VALUES (@user_text);
|
|
SET @user_text = 'Centrum';
|
|
INSERT INTO ttrig(text) VALUES (@user_text);
|
|
END|
|
|
INSERT INTO trigger_table VALUES ('bye.');
|
|
==== Insert variables from a prepared statement ====
|
|
PREPARE p1 FROM 'SET @@global.relay_log_purge = ON';
|
|
PREPARE p2 FROM 'INSERT INTO tprep(truth) VALUES (@@global.relay_log_purge)';
|
|
PREPARE p3 FROM 'SET @@global.relay_log_purge = OFF';
|
|
PREPARE p4 FROM 'INSERT INTO tprep(truth) VALUES (@@global.relay_log_purge)';
|
|
PREPARE p5 FROM 'SET @@global.sync_binlog = 2000000';
|
|
PREPARE p6 FROM 'INSERT INTO tprep(num) VALUES (@@global.sync_binlog)';
|
|
PREPARE p7 FROM 'SET @@global.sync_binlog = 3000000';
|
|
PREPARE p8 FROM 'INSERT INTO tprep(num) VALUES (@@global.sync_binlog)';
|
|
PREPARE p9 FROM 'SET @@global.init_slave = \'bison\'';
|
|
PREPARE p10 FROM 'INSERT INTO tprep(text) VALUES (@@global.init_slave)';
|
|
PREPARE p11 FROM 'SET @@global.init_slave = \'cat\'';
|
|
PREPARE p12 FROM 'INSERT INTO tprep(text) VALUES (@@global.init_slave)';
|
|
PREPARE p13 FROM 'SET @@global.slave_exec_mode = \'IDEMPOTENT\'';
|
|
PREPARE p14 FROM 'INSERT INTO tprep(text) VALUES (@@global.slave_exec_mode)';
|
|
PREPARE p15 FROM 'SET @@global.slave_exec_mode = \'STRICT\'';
|
|
PREPARE p16 FROM 'INSERT INTO tprep(text) VALUES (@@global.slave_exec_mode)';
|
|
PREPARE p17 FROM 'SET @@sql_big_selects = ON';
|
|
PREPARE p18 FROM 'INSERT INTO tprep(truth) VALUES (@@sql_big_selects)';
|
|
PREPARE p19 FROM 'SET @@sql_big_selects = OFF';
|
|
PREPARE p20 FROM 'INSERT INTO tprep(truth) VALUES (@@sql_big_selects)';
|
|
PREPARE p21 FROM 'SET @@last_insert_id = 20';
|
|
PREPARE p22 FROM 'INSERT INTO tprep(num) VALUES (@@last_insert_id)';
|
|
PREPARE p23 FROM 'SET @@last_insert_id = 30';
|
|
PREPARE p24 FROM 'INSERT INTO tprep(num) VALUES (@@last_insert_id)';
|
|
PREPARE p25 FROM 'SET @@global.low_priority_updates = ON';
|
|
PREPARE p26 FROM 'SET @@local.low_priority_updates = OFF';
|
|
PREPARE p27 FROM 'INSERT INTO tprep(truth) VALUES (@@global.low_priority_updates)';
|
|
PREPARE p28 FROM 'INSERT INTO tprep(truth) VALUES (@@local.low_priority_updates)';
|
|
PREPARE p29 FROM 'SET @@global.low_priority_updates = OFF';
|
|
PREPARE p30 FROM 'SET @@local.low_priority_updates = ON';
|
|
PREPARE p31 FROM 'INSERT INTO tprep(truth) VALUES (@@global.low_priority_updates)';
|
|
PREPARE p32 FROM 'INSERT INTO tprep(truth) VALUES (@@local.low_priority_updates)';
|
|
PREPARE p33 FROM 'SET @@global.default_week_format = 3';
|
|
PREPARE p34 FROM 'SET @@local.default_week_format = 4';
|
|
PREPARE p35 FROM 'INSERT INTO tprep(num) VALUES (@@global.default_week_format)';
|
|
PREPARE p36 FROM 'INSERT INTO tprep(num) VALUES (@@local.default_week_format)';
|
|
PREPARE p37 FROM 'SET @@global.default_week_format = 5';
|
|
PREPARE p38 FROM 'SET @@local.default_week_format = 6';
|
|
PREPARE p39 FROM 'INSERT INTO tprep(num) VALUES (@@global.default_week_format)';
|
|
PREPARE p40 FROM 'INSERT INTO tprep(num) VALUES (@@local.default_week_format)';
|
|
PREPARE p41 FROM 'SET @@global.lc_time_names = \'sv_SE\'';
|
|
PREPARE p42 FROM 'SET @@local.lc_time_names = \'sv_FI\'';
|
|
PREPARE p43 FROM 'INSERT INTO tprep(text) VALUES (@@global.lc_time_names)';
|
|
PREPARE p44 FROM 'INSERT INTO tprep(text) VALUES (@@local.lc_time_names)';
|
|
PREPARE p45 FROM 'SET @@global.lc_time_names = \'ar_TN\'';
|
|
PREPARE p46 FROM 'SET @@local.lc_time_names = \'ar_IQ\'';
|
|
PREPARE p47 FROM 'INSERT INTO tprep(text) VALUES (@@global.lc_time_names)';
|
|
PREPARE p48 FROM 'INSERT INTO tprep(text) VALUES (@@local.lc_time_names)';
|
|
PREPARE p49 FROM 'SET @@global.sql_mode = \'\'';
|
|
PREPARE p50 FROM 'SET @@local.sql_mode = \'IGNORE_SPACE,NO_AUTO_CREATE_USER\'';
|
|
PREPARE p51 FROM 'INSERT INTO tprep(text) VALUES (@@global.sql_mode)';
|
|
PREPARE p52 FROM 'INSERT INTO tprep(text) VALUES (@@local.sql_mode)';
|
|
PREPARE p53 FROM 'SET @@global.sql_mode = \'NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,NO_DIR_IN_CREATE,NO_ENGINE_SUBSTITUTION\'';
|
|
PREPARE p54 FROM 'SET @@local.sql_mode = \'NO_FIELD_OPTIONS,NO_KEY_OPTIONS,NO_TABLE_OPTIONS\'';
|
|
PREPARE p55 FROM 'INSERT INTO tprep(text) VALUES (@@global.sql_mode)';
|
|
PREPARE p56 FROM 'INSERT INTO tprep(text) VALUES (@@local.sql_mode)';
|
|
PREPARE p57 FROM 'SET @user_num = 20';
|
|
PREPARE p58 FROM 'INSERT INTO tprep(num) VALUES (@user_num)';
|
|
PREPARE p59 FROM 'SET @user_num = 30';
|
|
PREPARE p60 FROM 'INSERT INTO tprep(num) VALUES (@user_num)';
|
|
PREPARE p61 FROM 'SET @user_text = \'Bergsbrunna\'';
|
|
PREPARE p62 FROM 'INSERT INTO tprep(text) VALUES (@user_text)';
|
|
PREPARE p63 FROM 'SET @user_text = \'Centrum\'';
|
|
PREPARE p64 FROM 'INSERT INTO tprep(text) VALUES (@user_text)';
|
|
EXECUTE p1;
|
|
EXECUTE p2;
|
|
EXECUTE p3;
|
|
EXECUTE p4;
|
|
EXECUTE p5;
|
|
EXECUTE p6;
|
|
EXECUTE p7;
|
|
EXECUTE p8;
|
|
EXECUTE p9;
|
|
EXECUTE p10;
|
|
EXECUTE p11;
|
|
EXECUTE p12;
|
|
EXECUTE p13;
|
|
EXECUTE p14;
|
|
EXECUTE p15;
|
|
EXECUTE p16;
|
|
EXECUTE p17;
|
|
EXECUTE p18;
|
|
EXECUTE p19;
|
|
EXECUTE p20;
|
|
EXECUTE p21;
|
|
EXECUTE p22;
|
|
EXECUTE p23;
|
|
EXECUTE p24;
|
|
EXECUTE p25;
|
|
EXECUTE p26;
|
|
EXECUTE p27;
|
|
EXECUTE p28;
|
|
EXECUTE p29;
|
|
EXECUTE p30;
|
|
EXECUTE p31;
|
|
EXECUTE p32;
|
|
EXECUTE p33;
|
|
EXECUTE p34;
|
|
EXECUTE p35;
|
|
EXECUTE p36;
|
|
EXECUTE p37;
|
|
EXECUTE p38;
|
|
EXECUTE p39;
|
|
EXECUTE p40;
|
|
EXECUTE p41;
|
|
EXECUTE p42;
|
|
EXECUTE p43;
|
|
EXECUTE p44;
|
|
EXECUTE p45;
|
|
EXECUTE p46;
|
|
EXECUTE p47;
|
|
EXECUTE p48;
|
|
EXECUTE p49;
|
|
EXECUTE p50;
|
|
EXECUTE p51;
|
|
EXECUTE p52;
|
|
EXECUTE p53;
|
|
EXECUTE p54;
|
|
EXECUTE p55;
|
|
EXECUTE p56;
|
|
EXECUTE p57;
|
|
EXECUTE p58;
|
|
EXECUTE p59;
|
|
EXECUTE p60;
|
|
EXECUTE p61;
|
|
EXECUTE p62;
|
|
EXECUTE p63;
|
|
EXECUTE p64;
|
|
==== Results ====
|
|
SELECT * FROM tstmt ORDER BY id;
|
|
id truth num text
|
|
1 1 NULL NULL
|
|
2 0 NULL NULL
|
|
3 NULL 2000000 NULL
|
|
4 NULL 3000000 NULL
|
|
5 NULL NULL bison
|
|
6 NULL NULL cat
|
|
7 NULL NULL IDEMPOTENT
|
|
8 NULL NULL STRICT
|
|
9 1 NULL NULL
|
|
10 0 NULL NULL
|
|
11 NULL 20 NULL
|
|
12 NULL 30 NULL
|
|
13 1 NULL NULL
|
|
14 0 NULL NULL
|
|
15 0 NULL NULL
|
|
16 1 NULL NULL
|
|
17 NULL 3 NULL
|
|
18 NULL 4 NULL
|
|
19 NULL 5 NULL
|
|
20 NULL 6 NULL
|
|
21 NULL NULL sv_SE
|
|
22 NULL NULL sv_FI
|
|
23 NULL NULL ar_TN
|
|
24 NULL NULL ar_IQ
|
|
25 NULL NULL
|
|
26 NULL NULL IGNORE_SPACE,NO_AUTO_CREATE_USER
|
|
27 NULL NULL NO_DIR_IN_CREATE,NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,NO_ENGINE_SUBSTITUTION
|
|
28 NULL NULL NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS
|
|
29 NULL 20 NULL
|
|
30 NULL 30 NULL
|
|
31 NULL NULL Bergsbrunna
|
|
32 NULL NULL Centrum
|
|
Comparing tables master:test.tstmt and master:test.tproc
|
|
Comparing tables master:test.tstmt and master:test.tfunc
|
|
Comparing tables master:test.tstmt and master:test.ttrig
|
|
Comparing tables master:test.tstmt and master:test.tprep
|
|
Comparing tables master:test.tstmt and slave:test.tstmt
|
|
Comparing tables master:test.tstmt and slave:test.tproc
|
|
Comparing tables master:test.tstmt and slave:test.tfunc
|
|
Comparing tables master:test.tstmt and slave:test.ttrig
|
|
Comparing tables master:test.tstmt and slave:test.tprep
|
|
==== Clean up ====
|
|
[on master]
|
|
DROP PROCEDURE proc;
|
|
DROP FUNCTION func;
|
|
DROP TRIGGER trig;
|
|
DROP TABLE tstmt, tproc, tfunc, ttrig, tprep, trigger_table;
|
|
SET @@global.default_week_format= @m_default_week_format;
|
|
SET @@global.init_slave= @m_init_slave;
|
|
SET @@global.lc_time_names= @m_lc_time_names;
|
|
SET @@global.low_priority_updates= @m_low_priority_updates;
|
|
SET @@global.relay_log_purge= @m_relay_log_purge;
|
|
SET @@global.slave_exec_mode= @m_slave_exec_mode;
|
|
SET @@global.sql_mode= @m_sql_mode;
|
|
SET @@global.sync_binlog= @m_sync_binlog;
|
|
[on slave]
|
|
SET @@global.default_week_format= @s_default_week_format;
|
|
SET @@global.init_slave= @s_init_slave;
|
|
SET @@global.lc_time_names= @s_lc_time_names;
|
|
SET @@global.low_priority_updates= @s_low_priority_updates;
|
|
SET @@global.relay_log_purge= @s_relay_log_purge;
|
|
SET @@global.slave_exec_mode= @s_slave_exec_mode;
|
|
SET @@global.sql_mode= @s_sql_mode;
|
|
SET @@global.sync_binlog= @s_sync_binlog;
|