############################################################# # Author: Serge Kozlov # Date: 07/01/2008 # Purpose: Testing possible affects of some system dynamic # variables to the replication. # Scenario for each variable: # 1) Set different values for master and slave # 2) Create and replicate a data from master to slave # 3) Check results on master and slave: changes on slave # shouldn't be affected to replicated data. ############################################################# --source include/not_group_replication_plugin.inc --source include/master-slave.inc --echo # # MAX_HEAP_TABLE_SIZE # --echo * max_heap_table_size * --let $heap_size= 16384 --let $record_size= 512 --replace_numeric_round 0 --let $row_count = `SELECT $heap_size / $record_size` --inc $row_count --connection slave SET @restore_slave_max_heap_table_size=@@global.max_heap_table_size; --replace_result $heap_size HEAP_SIZE --eval SET @@global.max_heap_table_size=$heap_size --replace_result $heap_size HEAP_SIZE --eval SET @@session.max_heap_table_size=$heap_size --connection master --replace_result $record_size RECORD_SIZE --eval CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, b VARCHAR(10), c VARCHAR($record_size)) ENGINE=MEMORY --let $counter=$row_count --disable_query_log while ($counter) { --eval INSERT INTO t1 (b,c) VALUES ('master', REPEAT('A', $record_size)); dec $counter; } --enable_query_log --replace_result $row_count ROW_COUNT --eval SELECT COUNT(*)=$row_count FROM t1 --source include/sync_slave_sql_with_master.inc --replace_result $row_count ROW_COUNT --eval SELECT COUNT(*)=$row_count FROM t1 WHERE b='master' GROUP BY b ORDER BY b # Truncate the table so that the slaves max_heap_table_size value takes effect on # the replicted table TRUNCATE TABLE t1; --let $counter=$row_count --disable_query_log while ($counter) { --error 0,1114 --eval INSERT INTO t1 (b,c) VALUES ('slave', REPEAT('A', $record_size)) dec $counter; } CREATE TABLE t2 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, b VARCHAR(10), c CHAR(254)) ENGINE=MEMORY; --let $counter=$row_count --disable_query_log while ($counter) { --error 0,1114 INSERT INTO t2 (b,c) VALUES ('slave', REPEAT('A', 254)); dec $counter; } --enable_query_log # We don't know how many memory used and can't check exact values so need to check following # conditions --replace_result $row_count ROW_COUNT --eval SELECT COUNT(*)<$row_count AND COUNT(*)>0 FROM t1 WHERE b='slave' GROUP BY b ORDER BY b --replace_result $row_count ROW_COUNT --eval SELECT COUNT(*)<$row_count AND COUNT(*)>0 FROM t2 WHERE b='slave' GROUP BY b ORDER BY b --connection master --disable_warnings DROP TABLE IF EXISTS t1,t2; --enable_warnings --echo # # STORAGE_ENGINE # --echo * storage_engine * --connection master SET @restore_master_storage_engine=@@global.default_storage_engine; SET @@global.default_storage_engine=InnoDB; SET @@session.default_storage_engine=InnoDB; --connection slave SET @restore_slave_storage_engine=@@global.default_storage_engine; SET @@global.default_storage_engine=Memory; SET @@session.default_storage_engine=Memory; --connection master CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY, b VARCHAR(10)); CREATE TABLE t2 (a INT NOT NULL PRIMARY KEY, b VARCHAR(10)) ENGINE=InnoDB; --source include/sync_slave_sql_with_master.inc CREATE TABLE t3 (a INT NOT NULL PRIMARY KEY, b VARCHAR(10)); --connection master SHOW CREATE TABLE t1; SHOW CREATE TABLE t2; --connection slave SHOW CREATE TABLE t1; SHOW CREATE TABLE t2; SHOW CREATE TABLE t3; SET @@global.default_storage_engine=InnoDB; SET @@session.default_storage_engine=InnoDB; --connection master --disable_warnings DROP TABLE IF EXISTS t1,t2,t3; --enable_warnings --echo # # SQL_MODE # --echo * sql_mode * --connection master SET @@global.sql_mode=ANSI; SET @@session.sql_mode=ANSI; --connection slave SET @@global.sql_mode=TRADITIONAL; SET @@session.sql_mode=TRADITIONAL; --connection master CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY, b VARCHAR(10), c DATE); INSERT INTO t1 VALUES (1, 'master', '0000-00-00'); SELECT * FROM t1 ORDER BY a; --source include/sync_slave_sql_with_master.inc --error 1292 INSERT INTO t1 VALUES (1, 'slave', '0000-00-00'); SELECT * FROM t1 ORDER BY a; SET @@global.sql_mode=DEFAULT; SET @@session.sql_mode=DEFAULT; --connection master SET @@global.sql_mode=DEFAULT; SET @@session.sql_mode=DEFAULT; DROP TABLE t1; --echo # Clean up --echo *** clean up *** SET @@global.default_storage_engine=@restore_master_storage_engine; --source include/sync_slave_sql_with_master.inc SET @@global.max_heap_table_size=@restore_slave_max_heap_table_size; SET @@global.default_storage_engine=@restore_slave_storage_engine; # Put at the end since the test otherwise emptied the table. --echo call mtr.add_suppression("The table 't[12]' is full"); # End of 5.1 test --source include/rpl_end.inc