1
0
mirror of https://github.com/MariaDB/server.git synced 2025-11-25 17:25:02 +03:00
Files
mariadb/mysql-test/suite/galera/t/galera_var_replicate_myisam_on.test
Nirbhay Choubey b800264e49 MDEV-11152: wsrep_replicate_myisam: SELECT gets replicated
... using TO

Fixed the 'wsrep_replicate_myisam' check to allow only limited
set of commands. Added a debug assert to discover such cases.
2016-12-19 16:11:27 -05:00

150 lines
2.9 KiB
Plaintext

#
# Simple test for wsrep-replicate-myisam = ON
#
--source include/galera_cluster.inc
--source include/have_innodb.inc
--connection node_1
--let $wsrep_replicate_myisam_orig = `SELECT @@wsrep_replicate_myisam`
--connection node_1
SET GLOBAL wsrep_replicate_myisam = TRUE;
--connection node_2
SET GLOBAL wsrep_replicate_myisam = TRUE;
#
# Simple INSERT
#
--connection node_1
CREATE TABLE t1 (f1 INT PRIMARY KEY) Engine=MyISAM;
INSERT INTO t1 VALUES (1);
INSERT INTO t1 VALUES (2), (3);
INSERT INTO t1 SELECT 4 FROM DUAL UNION ALL SELECT 5 FROM DUAL;
--connection node_2
SELECT COUNT(*) = 5 FROM t1;
DROP TABLE t1;
#
# REPLACE
#
--connection node_1
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY, f2 VARCHAR(100)) ENGINE=MyISAM;
INSERT INTO t1 VALUES (1, 'abc'),(2,'abc'), (3, 'xxx');
REPLACE INTO t1 VALUES (1, 'klm'), (2,'xyz');
REPLACE INTO t1 SELECT 3, 'yyy' FROM DUAL;
--connection node_2
SELECT COUNT(*) = 3 FROM t1;
SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 1 AND f2 = 'klm';
SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 2 AND f2 = 'xyz';
SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 3 AND f2 = 'yyy';
#
# UPDATE
#
--connection node_1
UPDATE t1 SET f2 = 'zzz' WHERE f2 = 'yyy';
--connection node_2
SELECT COUNT(*) = 1 FROM t1 WHERE f2 = 'zzz';
#
# DELETE
#
--connection node_1
DELETE FROM t1 WHERE f2 = 'zzz';
--connection node_2
SELECT COUNT(*) = 0 FROM t1 WHERE f2 = 'zzz';
#
# TRUNCATE
#
--connection node_1
TRUNCATE TABLE t1;
--connection node_2
SELECT COUNT(*) = 0 FROM t1;
DROP TABLE t1;
#
# Transaction
#
--connection node_1
CREATE TABLE t1 (f1 INTEGER) ENGINE=MyISAM;
CREATE TABLE t2 (f1 INTEGER) ENGINE=InnoDB;
SET AUTOCOMMIT=OFF;
START TRANSACTION;
INSERT INTO t1 VALUES (1);
INSERT INTO t2 VALUES (1);
COMMIT;
--connection node_2
SELECT COUNT(*) = 1 FROM t1;
SELECT COUNT(*) = 1 FROM t2;
#
# Transaction rollback
#
--connection node_1
START TRANSACTION;
INSERT INTO t1 VALUES (2);
INSERT INTO t2 VALUES (2);
ROLLBACK;
--connection node_2
SELECT COUNT(*) = 2 FROM t1;
SELECT COUNT(*) = 1 FROM t2;
DROP TABLE t1;
DROP TABLE t2;
#
# Transaction conflict
#
--connection node_1
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=MyISAM;
CREATE TABLE t2 (f2 INTEGER PRIMARY KEY) ENGINE=InnoDB;
START TRANSACTION;
INSERT INTO t1 VALUES (1);
INSERT INTO t2 VALUES (1);
--connection node_2
# The MyISAM update is replicated immediately, so a duplicate key error happens even before the COMMIT
--error ER_DUP_ENTRY
INSERT INTO t1 VALUES (1);
--connection node_1
COMMIT;
DROP TABLE t1;
DROP TABLE t2;
--echo #
--echo # MDEV-11152: wsrep_replicate_myisam: SELECT gets replicated using TO
--echo #
--connection node_1
CREATE TABLE t1 (i INT) ENGINE=INNODB;
INSERT INTO t1 VALUES(1);
# This command should not get replicated.
SELECT * FROM t1;
DROP TABLE t1;
--connection node_1
--eval SET GLOBAL wsrep_replicate_myisam = $wsrep_replicate_myisam_orig
--connection node_2
--eval SET GLOBAL wsrep_replicate_myisam = $wsrep_replicate_myisam_orig