mirror of
https://github.com/MariaDB/server.git
synced 2025-01-27 17:33:44 +01:00
263 lines
6.9 KiB
Text
263 lines
6.9 KiB
Text
-- source include/have_query_cache.inc
|
|
--source include/have_binlog_format_row.inc
|
|
--source include/have_innodb.inc
|
|
|
|
let $SERVER_VERSION=`select version()`;
|
|
|
|
--source include/master-slave.inc
|
|
|
|
# Add suppression for expected warning(s) in slaves error log
|
|
call mtr.add_suppression("Can't find record in 't.'");
|
|
|
|
# Bug#15942 (RBR ignores --binlog_ignore_db and tries to map to table
|
|
# on slave for writes)
|
|
|
|
CREATE DATABASE test_ignore; # --binlog_ignore_db=mysqltest_ignore
|
|
|
|
--echo **** On Master ****
|
|
SHOW DATABASES;
|
|
USE test;
|
|
CREATE TABLE t1 (a INT, b INT);
|
|
SHOW TABLES;
|
|
INSERT INTO t1 VALUES (1,1), (2,2);
|
|
USE test_ignore;
|
|
CREATE TABLE t2 (a INT, b INT);
|
|
SHOW TABLES;
|
|
INSERT INTO t2 VALUES (3,3), (4,4);
|
|
source include/show_binlog_events.inc;
|
|
sync_slave_with_master;
|
|
--echo **** On Slave ****
|
|
SHOW DATABASES;
|
|
USE test;
|
|
SHOW TABLES;
|
|
--error 1049
|
|
USE test_ignore;
|
|
|
|
connection master;
|
|
DROP DATABASE test_ignore;
|
|
USE test;
|
|
DROP TABLE t1;
|
|
sync_slave_with_master;
|
|
USE test;
|
|
|
|
|
|
# Bug#19995: Extreneous table maps generated for statements that does
|
|
# not generate rows
|
|
--source include/rpl_reset.inc
|
|
|
|
connection master;
|
|
CREATE TABLE t1 (a INT);
|
|
DELETE FROM t1;
|
|
INSERT INTO t1 VALUES (1),(2);
|
|
DELETE FROM t1 WHERE a = 0;
|
|
UPDATE t1 SET a=99 WHERE a = 0;
|
|
source include/show_binlog_events.inc;
|
|
|
|
DROP TABLE t1;
|
|
--sync_slave_with_master
|
|
|
|
# BUG#17620: Replicate (Row Based) Fails when Query Cache enabled on
|
|
# slave
|
|
--echo ================ Test for BUG#17620 ================
|
|
--source include/rpl_reset.inc
|
|
|
|
--echo **** On Slave ****
|
|
connection slave;
|
|
SET GLOBAL QUERY_CACHE_SIZE=0;
|
|
call mtr.add_suppression("Slave SQL.*Could not execute Update_rows event on table test.t1.* error.* 1032");
|
|
|
|
--echo **** On Master ****
|
|
connection master;
|
|
CREATE TABLE t1 (a INT);
|
|
INSERT INTO t1 VALUES (1),(2),(3);
|
|
|
|
--echo **** On Slave ****
|
|
sync_slave_with_master;
|
|
SET GLOBAL QUERY_CACHE_SIZE=16*1024*1024;
|
|
|
|
--echo **** On Master ****
|
|
connection master;
|
|
INSERT INTO t1 VALUES (4),(5),(6);
|
|
|
|
--echo **** On Slave ****
|
|
sync_slave_with_master;
|
|
SELECT * FROM t1;
|
|
|
|
--echo **** On Master ****
|
|
connection master;
|
|
INSERT INTO t1 VALUES (7),(8),(9);
|
|
|
|
--echo **** On Slave ****
|
|
sync_slave_with_master;
|
|
SELECT * FROM t1;
|
|
|
|
SET GLOBAL QUERY_CACHE_SIZE=default;
|
|
--connection master
|
|
DROP TABLE t1;
|
|
|
|
|
|
# Bug#22550: Replication of BIT columns failing
|
|
--echo ================ Test for BUG#22550 ================
|
|
--source include/rpl_reset.inc
|
|
|
|
connection master;
|
|
CREATE TABLE t1 (a BIT(1), b INT) ENGINE=MYISAM;
|
|
sync_slave_with_master;
|
|
|
|
connection master;
|
|
INSERT INTO t1 VALUES(1,2);
|
|
SELECT HEX(a),b FROM t1;
|
|
sync_slave_with_master;
|
|
SELECT HEX(a),b FROM t1;
|
|
|
|
connection master;
|
|
UPDATE t1 SET a=0 WHERE b=2;
|
|
SELECT HEX(a),b FROM t1;
|
|
sync_slave_with_master;
|
|
SELECT HEX(a),b FROM t1;
|
|
|
|
connection master;
|
|
DROP TABLE IF EXISTS t1;
|
|
sync_slave_with_master;
|
|
|
|
# BUG#22583: RBR between MyISAM and non-MyISAM tables containing a BIT
|
|
# field does not work
|
|
|
|
--echo ================ Test for BUG#22583 ================
|
|
--source include/rpl_reset.inc
|
|
|
|
# disabling warnings temporarily for ENGINE=INNODB to work without InnoDB
|
|
--disable_warnings
|
|
--echo **** On Master ****
|
|
connection master;
|
|
CREATE TABLE t1_myisam (k INT, a BIT(1), b BIT(9)) ENGINE=MYISAM;
|
|
CREATE TABLE t1_innodb (k INT, a BIT(1), b BIT(9)) ENGINE=INNODB;
|
|
CREATE TABLE t2_myisam (k INT, a BIT(1) NOT NULL, b BIT(4) NOT NULL) ENGINE=MYISAM;
|
|
CREATE TABLE t2_innodb (k INT, a BIT(1) NOT NULL, b BIT(4) NOT NULL) ENGINE=INNODB;
|
|
--echo **** On Slave ****
|
|
sync_slave_with_master;
|
|
ALTER TABLE t1_myisam ENGINE=INNODB;
|
|
ALTER TABLE t1_innodb ENGINE=MYISAM;
|
|
ALTER TABLE t2_myisam ENGINE=INNODB;
|
|
ALTER TABLE t2_innodb ENGINE=MYISAM;
|
|
--enable_warnings
|
|
|
|
--echo **** On Master ****
|
|
connection master;
|
|
INSERT INTO t1_myisam VALUES(1, b'0', 257);
|
|
INSERT INTO t1_myisam VALUES(2, b'1', 256);
|
|
INSERT INTO t1_innodb VALUES(1, b'0', 257);
|
|
INSERT INTO t1_innodb VALUES(2, b'1', 256);
|
|
SELECT k, HEX(a),HEX(b) FROM t1_myisam;
|
|
SELECT k, HEX(a),HEX(b) FROM t1_innodb;
|
|
INSERT INTO t2_myisam VALUES(1, b'0', 9);
|
|
INSERT INTO t2_myisam VALUES(2, b'1', 8);
|
|
INSERT INTO t2_innodb VALUES(1, b'0', 9);
|
|
INSERT INTO t2_innodb VALUES(2, b'1', 8);
|
|
SELECT k, HEX(a),HEX(b) FROM t2_myisam;
|
|
SELECT k, HEX(a),HEX(b) FROM t2_innodb;
|
|
--echo **** On Slave ****
|
|
sync_slave_with_master;
|
|
SELECT k, HEX(a),HEX(b) FROM t1_myisam;
|
|
SELECT k, HEX(a),HEX(b) FROM t1_innodb;
|
|
SELECT k, HEX(a),HEX(b) FROM t2_myisam;
|
|
SELECT k, HEX(a),HEX(b) FROM t2_innodb;
|
|
|
|
--echo **** On Master ****
|
|
connection master;
|
|
UPDATE t1_myisam SET a=0 WHERE k=2;
|
|
SELECT k, HEX(a),HEX(b) FROM t1_myisam;
|
|
UPDATE t1_innodb SET a=0 WHERE k=2;
|
|
SELECT k, HEX(a),HEX(b) FROM t1_innodb;
|
|
UPDATE t2_myisam SET a=0 WHERE k=2;
|
|
SELECT k, HEX(a),HEX(b) FROM t2_myisam;
|
|
UPDATE t2_innodb SET a=0 WHERE k=2;
|
|
SELECT k, HEX(a),HEX(b) FROM t2_innodb;
|
|
--echo **** On Slave ****
|
|
sync_slave_with_master;
|
|
SELECT k, HEX(a),HEX(b) FROM t1_myisam;
|
|
SELECT k, HEX(a),HEX(b) FROM t1_innodb;
|
|
SELECT k, HEX(a),HEX(b) FROM t2_myisam;
|
|
SELECT k, HEX(a),HEX(b) FROM t2_innodb;
|
|
|
|
--echo **** On Master ****
|
|
connection master;
|
|
DROP TABLE IF EXISTS t1_myisam, t1_innodb, t2_myisam, t2_innodb;
|
|
sync_slave_with_master;
|
|
|
|
#
|
|
# Bug#27716 multi-update did partially and has not binlogged
|
|
#
|
|
|
|
connection master;
|
|
|
|
--disable_warnings
|
|
drop table if exists t1, t2;
|
|
--enable_warnings
|
|
CREATE TABLE `t1` (
|
|
`a` int(11) NOT NULL auto_increment,
|
|
`b` int(11) default NULL,
|
|
PRIMARY KEY (`a`)
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
|
|
|
|
CREATE TABLE `t2` (
|
|
`a` int(11) NOT NULL auto_increment,
|
|
`b` int(11) default NULL,
|
|
PRIMARY KEY (`a`)
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
|
|
|
|
# testing multi_update::send_error() effective update
|
|
insert into t1 values (1,1),(2,2);
|
|
insert into t2 values (1,1),(4,4);
|
|
|
|
connection master;
|
|
error ER_DUP_ENTRY;
|
|
UPDATE t2,t1 SET t2.a=t1.a+2;
|
|
select * from t2 /* must be (3,1), (4,4) */;
|
|
sync_slave_with_master;
|
|
|
|
connection slave;
|
|
select * from t2 /* must be (3,1), (4,4) */;
|
|
|
|
connection master;
|
|
drop table t1,t2;
|
|
|
|
sync_slave_with_master;
|
|
|
|
#
|
|
# BUG#31702: Missing row on slave causes assertion failure under
|
|
# row-based replication
|
|
#
|
|
|
|
--source include/rpl_reset.inc
|
|
|
|
--echo **** On Master ****
|
|
connection master;
|
|
CREATE TABLE t1 (a INT PRIMARY KEY, b SET('master','slave'));
|
|
INSERT INTO t1 VALUES (1,'master,slave'), (2,'master,slave');
|
|
--echo **** On Slave ****
|
|
sync_slave_with_master;
|
|
UPDATE t1 SET a = 5, b = 'slave' WHERE a = 1;
|
|
SELECT * FROM t1 ORDER BY a;
|
|
# since bug#31552/31609 idempotency is not default any longer. In
|
|
# order for the preceding test UPDATE t1 to pass, the mode is switched
|
|
# temprorarily
|
|
set @@global.slave_exec_mode= 'IDEMPOTENT';
|
|
--echo **** On Master ****
|
|
connection master;
|
|
UPDATE t1 SET a = 5, b = 'master' WHERE a = 1;
|
|
SELECT * FROM t1 ORDER BY a;
|
|
--echo **** On Slave ****
|
|
sync_slave_with_master;
|
|
set @@global.slave_exec_mode= default;
|
|
let $last_error = query_get_value("SHOW SLAVE STATUS", Last_SQL_Error, 1);
|
|
disable_query_log;
|
|
eval SELECT "$last_error" AS Last_SQL_Error;
|
|
enable_query_log;
|
|
|
|
SELECT * FROM t1 ORDER BY a;
|
|
|
|
--echo **** On Master ****
|
|
connection master;
|
|
DROP TABLE t1;
|
|
--source include/rpl_end.inc
|