mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 20:42:30 +01:00
acd7132e0a
Start test case with a dummy table create and drop. This ensures that NDB event subscription is properly set up before the real test starts, which otherwise could sometimes cause INSERT events to be lost. mysql-test/r/ndb_binlog_multi.result: Start test with dummy table create/drop to avoid a race. mysql-test/t/ndb_binlog_multi.test: Start test with dummy table create/drop to avoid a race.
83 lines
2.6 KiB
Text
83 lines
2.6 KiB
Text
-- source include/have_ndb.inc
|
|
-- source include/have_multi_ndb.inc
|
|
-- source include/have_binlog_format_row.inc
|
|
|
|
--disable_warnings
|
|
connection server2;
|
|
drop table if exists t1,t2,t3;
|
|
connection server1;
|
|
drop table if exists t1,t2,t3;
|
|
--enable_warnings
|
|
|
|
# Dummy table create/drop to avoid a race where table is created
|
|
# before event subscription is set up, causing test failure (BUG#20677).
|
|
connection server2;
|
|
CREATE TABLE t3 (dummy INT PRIMARY KEY) ENGINE = NDB;
|
|
connection server1;
|
|
DROP TABLE t3;
|
|
|
|
# reset for test
|
|
connection server1;
|
|
reset master;
|
|
connection server2;
|
|
reset master;
|
|
|
|
#
|
|
# basic test to see if one server sees the table from the other
|
|
# and sets up the replication correctly
|
|
#
|
|
|
|
# create table on the other server
|
|
connection server2;
|
|
CREATE TABLE t2 (a INT PRIMARY KEY, b int) ENGINE = NDB;
|
|
|
|
# insert something on server2
|
|
INSERT INTO t2 VALUES (1,1),(2,2);
|
|
# verify that we get the data in the binlog
|
|
--source include/show_binlog_events.inc
|
|
select * from t2 order by a;
|
|
--replace_column 1 <the_epoch>
|
|
SELECT @the_epoch:=epoch,inserts,updates,deletes,schemaops FROM
|
|
cluster.binlog_index ORDER BY epoch DESC LIMIT 1;
|
|
let $the_epoch= `SELECT @the_epoch`;
|
|
|
|
# see if we got something on server1
|
|
connection server1;
|
|
SELECT * FROM t2 ORDER BY a;
|
|
# doing drop table will ensure that all the events have been received
|
|
DROP TABLE t2;
|
|
# verify thar we have table and data in binlog
|
|
--source include/show_binlog_events.inc
|
|
--replace_result $the_epoch <the_epoch>
|
|
eval SELECT inserts,updates,deletes,schemaops FROM
|
|
cluster.binlog_index WHERE epoch=$the_epoch;
|
|
|
|
# reset for next test
|
|
connection server1;
|
|
reset master;
|
|
connection server2;
|
|
reset master;
|
|
|
|
# single schema ops will not show
|
|
connection server2;
|
|
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE = NDB;
|
|
INSERT INTO t1 VALUES (1),(2);
|
|
--source include/show_binlog_events.inc
|
|
--replace_column 1 <the_epoch2>
|
|
SELECT @the_epoch2:=epoch,inserts,updates,deletes,schemaops FROM
|
|
cluster.binlog_index ORDER BY epoch DESC LIMIT 1;
|
|
let $the_epoch2= `SELECT @the_epoch2`;
|
|
|
|
--replace_result $the_epoch <the_epoch> $the_epoch2 <the_epoch2>
|
|
eval SELECT inserts,updates,deletes,schemaops FROM
|
|
cluster.binlog_index WHERE epoch > $the_epoch AND epoch <= $the_epoch2;
|
|
|
|
# now see that we have the events on the other server
|
|
connection server2;
|
|
# doing drop table will ensure that all the events have been received
|
|
drop table t1;
|
|
# verify thar we have table and data in binlog
|
|
--source include/show_binlog_events.inc
|
|
--replace_result $the_epoch <the_epoch> $the_epoch2 <the_epoch2>
|
|
eval SELECT inserts,updates,deletes,schemaops FROM
|
|
cluster.binlog_index WHERE epoch > $the_epoch AND epoch <= $the_epoch2;
|