mirror of
https://github.com/MariaDB/server.git
synced 2025-08-29 00:08:14 +03:00
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.
192 lines
6.5 KiB
Plaintext
192 lines
6.5 KiB
Plaintext
include/master-slave.inc
|
|
[connection master]
|
|
CREATE TABLE `t1` ( `nid` int(11) NOT NULL default '0',
|
|
`nom` char(4) default NULL,
|
|
`prenom` char(4) default NULL,
|
|
PRIMARY KEY (`nid`))
|
|
ENGINE=ndbcluster DEFAULT CHARSET=latin1;
|
|
INSERT INTO t1 VALUES(1,"XYZ1","ABC1");
|
|
select * from t1 order by nid;
|
|
nid nom prenom
|
|
1 XYZ1 ABC1
|
|
select * from t1 order by nid;
|
|
nid nom prenom
|
|
1 XYZ1 ABC1
|
|
delete from t1;
|
|
INSERT INTO t1 VALUES(1,"XYZ2","ABC2");
|
|
select * from t1 order by nid;
|
|
nid nom prenom
|
|
1 XYZ2 ABC2
|
|
select * from t1 order by nid;
|
|
nid nom prenom
|
|
1 XYZ2 ABC2
|
|
delete from t1;
|
|
insert into t1 values(1,"AA", "AA");
|
|
insert into t1 values(2,"BB", "BB");
|
|
insert into t1 values(3,"CC", "CC");
|
|
insert into t1 values(4,"DD", "DD");
|
|
begin;
|
|
delete from t1 where nid = 1;
|
|
insert into t1 values (1,"A2", "A2");
|
|
update t1 set nom="B2" where nid = 2;
|
|
delete from t1 where nid = 2;
|
|
update t1 set nom = "D2" where nid = 4;
|
|
delete from t1 where nid = 4;
|
|
insert into t1 values (4, "D3", "D3");
|
|
update t1 set nom = "D4" where nid = 4;
|
|
insert into t1 values (5, "EE", "EE");
|
|
delete from t1 where nid = 5;
|
|
commit;
|
|
select * from t1 order by 1;
|
|
nid nom prenom
|
|
1 A2 A2
|
|
3 CC CC
|
|
4 D4 D3
|
|
select * from t1 order by 1;
|
|
nid nom prenom
|
|
1 A2 A2
|
|
3 CC CC
|
|
4 D4 D3
|
|
DROP table t1;
|
|
CREATE TABLE `t1` ( `nid` int(11) NOT NULL default '0',
|
|
`nom` char(4) default NULL,
|
|
`prenom` char(4) default NULL)
|
|
ENGINE=ndbcluster DEFAULT CHARSET=latin1;
|
|
INSERT INTO t1 VALUES(1,"XYZ1","ABC1"),(2,"AAA","BBB"),(3,"CCC","DDD");
|
|
select * from t1 order by nid;
|
|
nid nom prenom
|
|
1 XYZ1 ABC1
|
|
2 AAA BBB
|
|
3 CCC DDD
|
|
select * from t1 order by nid;
|
|
nid nom prenom
|
|
1 XYZ1 ABC1
|
|
2 AAA BBB
|
|
3 CCC DDD
|
|
delete from t1 where nid = 2;
|
|
INSERT INTO t1 VALUES(4,"EEE","FFF");
|
|
select * from t1 order by nid;
|
|
nid nom prenom
|
|
1 XYZ1 ABC1
|
|
3 CCC DDD
|
|
4 EEE FFF
|
|
select * from t1 order by nid;
|
|
nid nom prenom
|
|
1 XYZ1 ABC1
|
|
3 CCC DDD
|
|
4 EEE FFF
|
|
UPDATE t1 set nid=nid+1;
|
|
UPDATE t1 set nom="CCP" where nid = 4;
|
|
select * from t1 order by nid;
|
|
nid nom prenom
|
|
2 XYZ1 ABC1
|
|
4 CCP DDD
|
|
5 EEE FFF
|
|
select * from t1 order by nid;
|
|
nid nom prenom
|
|
2 XYZ1 ABC1
|
|
4 CCP DDD
|
|
5 EEE FFF
|
|
DROP table t1;
|
|
CREATE TABLE `t1` (
|
|
`prid` int(10) unsigned NOT NULL,
|
|
`id_type` enum('IMSI','SIP') NOT NULL,
|
|
`fkimssub` varchar(50) NOT NULL,
|
|
`user_id` varchar(20) DEFAULT NULL,
|
|
`password` varchar(20) DEFAULT NULL,
|
|
`ptg_nbr` varchar(20) DEFAULT NULL,
|
|
`old_tmsi` int(10) unsigned DEFAULT NULL,
|
|
`new_tmsi` int(10) unsigned DEFAULT NULL,
|
|
`dev_capability` int(10) unsigned DEFAULT NULL,
|
|
`dev_oid` bigint(20) unsigned DEFAULT NULL,
|
|
`lac_cell_id` bigint(20) unsigned DEFAULT NULL,
|
|
`ms_classmark1` int(10) unsigned DEFAULT NULL,
|
|
`cipher_key` int(10) unsigned DEFAULT NULL,
|
|
`priid_master` int(10) unsigned DEFAULT NULL,
|
|
PRIMARY KEY (`prid`),
|
|
UNIQUE KEY `fkimssub` (`fkimssub`,`ptg_nbr`) USING HASH
|
|
) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
|
|
Warnings:
|
|
Warning 1121 Ndb does not support unique index on NULL valued attributes, index access with NULL value will become full table scan
|
|
INSERT INTO `t1` VALUES (183342,'IMSI','config3_sub_2Privates_3Publics_imssub_36668','user_id_73336','user_id_73336','73336',NULL,NULL,NULL,123456789,NULL,NULL,NULL,NULL),(47617,'IMSI','config3_sub_2Privates_3Publics_imssub_9523','user_id_19046','user_id_19046','19046',NULL,NULL,NULL,123456789,NULL,NULL,NULL,NULL),(200332,'IMSI','config3_sub_2Privates_3Publics_imssub_40066','user_id_80132','user_id_80132','80132',NULL,NULL,NULL,123456789,NULL,NULL,NULL,NULL),(478882,'IMSI','config3_sub_2Privates_3Publics_imssub_95776','user_id_191552','user_id_191552','191552',NULL,NULL,NULL,123456789,NULL,NULL,NULL,NULL),(490146,'IMSI','config3_sub_2Privates_3Publics_imssub_98029','user_id_196057','user_id_196057','196057',NULL,NULL,NULL,1010,NULL,NULL,NULL,NULL),(499301,'IMSI','config3_sub_2Privates_3Publics_imssub_99860','user_id_199719','user_id_199719','199719',NULL,NULL,NULL,123456789,NULL,NULL,NULL,NULL),(506101,'IMSI','config3_sub_2Privates_3Publics_imssub_101220','user_id_202439','user_id_202439','202439',NULL,NULL,NULL,1010,NULL,NULL,NULL,NULL),(510142,'IMSI','config3_sub_2Privates_3Publics_imssub_102028','user_id_204056','user_id_204056','204056',NULL,NULL,NULL,1010,NULL,NULL,NULL,NULL),(515871,'IMSI','config3_sub_2Privates_3Publics_imssub_103174','user_id_206347','user_id_206347','206347',NULL,NULL,NULL,1010,NULL,NULL,NULL,NULL),(209842,'IMSI','config3_sub_2Privates_3Publics_imssub_41968','user_id_83936','user_id_83936','83936',NULL,NULL,NULL,123456789,NULL,NULL,NULL,NULL),(365902,'IMSI','config3_sub_2Privates_3Publics_imssub_73180','user_id_146360','user_id_146360','146360',NULL,NULL,NULL,1010,NULL,NULL,NULL,NULL),(11892,'IMSI','config3_sub_2Privates_3Publics_imssub_2378','user_id_4756','user_id_4756','4756',NULL,NULL,NULL,123456789,NULL,NULL,NULL,NULL);
|
|
select count(*) from t1;
|
|
count(*)
|
|
12
|
|
select count(*) from t1;
|
|
count(*)
|
|
12
|
|
update t1 set dev_oid=dev_oid+1;
|
|
select count(*) from t1;
|
|
count(*)
|
|
12
|
|
select count(*) from t1;
|
|
count(*)
|
|
12
|
|
DROP table t1;
|
|
CREATE TABLE `t1` ( `nid` int(11) NOT NULL default '0',
|
|
`nom` char(4) default NULL,
|
|
`prenom` char(4) default NULL,
|
|
PRIMARY KEY USING HASH (`nid`))
|
|
ENGINE=ndbcluster DEFAULT CHARSET=latin1;
|
|
INSERT INTO t1 VALUES(1,"XYZ1","ABC1");
|
|
**** On Slave ****
|
|
BEGIN;
|
|
UPDATE t1 SET `nom`="LOCK" WHERE `nid`=1;
|
|
set GLOBAL slave_transaction_retries=1;
|
|
**** On Master ****
|
|
UPDATE t1 SET `nom`="DEAD" WHERE `nid`=1;
|
|
**** On Slave ****
|
|
include/wait_for_slave_sql_error.inc [errno=1205 ]
|
|
Last_SQL_Error = 'Could not execute Write_rows event on table test.t1; Got temporary error 266 'Time-out in NDB, probably caused by deadlock' from NDB, Error_code: 1297; Lock wait timeout exceeded; try restarting transaction, Error_code: 1205; handler error HA_ERR_LOCK_WAIT_TIMEOUT; the event's master log master-bin.000001, end_log_pos 6834'
|
|
set GLOBAL slave_transaction_retries=10;
|
|
include/start_slave.inc
|
|
select * from t1 order by nid;
|
|
nid nom prenom
|
|
1 LOCK ABC1
|
|
COMMIT;
|
|
select * from t1 order by nid;
|
|
nid nom prenom
|
|
1 DEAD ABC1
|
|
DROP TABLE t1;
|
|
CREATE TABLE t1 (c1 INT KEY) ENGINE=NDB;
|
|
INSERT INTO t1 VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
|
|
ALTER TABLE t1 ADD c2 INT;
|
|
SELECT * FROM t1 ORDER BY c1;
|
|
c1 c2
|
|
1 NULL
|
|
2 NULL
|
|
3 NULL
|
|
4 NULL
|
|
5 NULL
|
|
6 NULL
|
|
7 NULL
|
|
8 NULL
|
|
9 NULL
|
|
10 NULL
|
|
ALTER TABLE t1 CHANGE c2 c2 TEXT CHARACTER SET utf8;
|
|
ALTER TABLE t1 CHANGE c2 c2 BLOB;
|
|
SELECT * FROM t1 ORDER BY c1 LIMIT 5;
|
|
c1 c2
|
|
1 NULL
|
|
2 NULL
|
|
3 NULL
|
|
4 NULL
|
|
5 NULL
|
|
TRUNCATE t1;
|
|
SELECT count(*) FROM t1;
|
|
count(*)
|
|
0
|
|
INSERT INTO t1 VALUES (101,NULL),(102,NULL),(103,NULL),(104,NULL),(105,NULL),(106,NULL),(107,NULL),(108,NULL),(109,NULL),(1010,NULL);
|
|
SELECT count(*) FROM t1;
|
|
count(*)
|
|
10
|
|
SELECT c1 FROM t1 ORDER BY c1 LIMIT 5;
|
|
c1
|
|
101
|
|
102
|
|
103
|
|
104
|
|
105
|
|
DROP TABLE t1;
|
|
include/rpl_end.inc
|