mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 13:32:33 +01:00
e9b5cafa8b
Switched to writing out table maps for tables that are locked when the first row in a statement is seen. mysql-test/include/master-slave.inc: Moved code to reset master and slave into separate file. mysql-test/r/binlog_row_blackhole.result: Result change mysql-test/r/binlog_row_mix_innodb_myisam.result: Result change mysql-test/r/ndb_binlog_ignore_db.result: Result change mysql-test/r/rpl_ndb_charset.result: Result change mysql-test/r/rpl_row_basic_11bugs.result: Result change mysql-test/r/rpl_row_charset.result: Result change mysql-test/r/rpl_row_create_table.result: Result change mysql-test/t/rpl_row_basic_11bugs.test: Added test to check that no events are generated when no rows are changed. mysql-test/t/rpl_row_create_table.test: Master log position changed sql/handler.cc: Adding function write_locked_table_maps() that will write table maps for all tables locked for write. Using "table->in_use" instead of "current_thd" since tables are now locked when the function is called. Removing old code to write table map. sql/log_event.cc: Added assertion sql/sql_class.cc: Removing code to write "dummy termination event". sql/sql_class.h: Adding getter for binlog_table_maps. sql/sql_insert.cc: Setting thd->lock before calling write_record for the execution of CREATE-SELECT and INSERT-SELECT since they keep multiple locks in the air at the same time. mysql-test/include/master-slave-reset.inc: New BitKeeper file ``mysql-test/include/master-slave-reset.inc''
119 lines
3.6 KiB
Text
119 lines
3.6 KiB
Text
# Testing table creations for row-based replication.
|
|
|
|
--source include/have_binlog_format_row.inc
|
|
--source include/master-slave.inc
|
|
|
|
# Bug#18326: Do not lock table for writing during prepare of statement
|
|
# The use of the ps protocol causes extra table maps in the binlog, so
|
|
# we disable the ps-protocol for this statement.
|
|
--disable_ps_protocol
|
|
|
|
--disable_query_log
|
|
--disable_warnings
|
|
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
|
--enable_warnings
|
|
--enable_query_log
|
|
|
|
# Set the default storage engine to different values on master and
|
|
# slave. We need to stop the slave for the server variable to take
|
|
# effect, since the variable is only read on start-up.
|
|
connection slave;
|
|
--disable_query_log
|
|
set @storage_engine = @@global.storage_engine;
|
|
STOP SLAVE;
|
|
SET GLOBAL storage_engine=memory;
|
|
START SLAVE;
|
|
--enable_query_log
|
|
|
|
connection master;
|
|
CREATE TABLE t1 (a INT, b INT);
|
|
CREATE TABLE t2 (a INT, b INT) ENGINE=Merge;
|
|
CREATE TABLE t3 (a INT, b INT) CHARSET=utf8;
|
|
CREATE TABLE t4 (a INT, b INT) ENGINE=Merge CHARSET=utf8;
|
|
--replace_column 1 # 4 # 5 #
|
|
--replace_regex /table_id: [0-9]+/table_id: #/
|
|
--query_vertical SHOW BINLOG EVENTS FROM 212
|
|
--echo **** On Master ****
|
|
--query_vertical SHOW CREATE TABLE t1
|
|
--query_vertical SHOW CREATE TABLE t2
|
|
--query_vertical SHOW CREATE TABLE t3
|
|
sync_slave_with_master;
|
|
--echo **** On Slave ****
|
|
--query_vertical SHOW CREATE TABLE t1
|
|
--query_vertical SHOW CREATE TABLE t2
|
|
--query_vertical SHOW CREATE TABLE t3
|
|
|
|
connection master;
|
|
CREATE TABLE t5 (b INT, c INT) SELECT * FROM t3;
|
|
|
|
CREATE TEMPORARY TABLE tt3 (a INT, b INT);
|
|
INSERT INTO tt3 VALUES (1,2), (2,4), (3,6), (4,2), (5,10), (6,12);
|
|
CREATE TABLE t6 (b INT, c INT) SELECT * FROM tt3;
|
|
--echo **** On Master ****
|
|
--query_vertical SHOW CREATE TABLE t5
|
|
SELECT * FROM t5 ORDER BY a,b,c;
|
|
--query_vertical SHOW CREATE TABLE t6
|
|
SELECT * FROM t6 ORDER BY a,b,c;
|
|
sync_slave_with_master;
|
|
--echo **** On Slave ****
|
|
--query_vertical SHOW CREATE TABLE t5
|
|
SELECT * FROM t5 ORDER BY a,b,c;
|
|
--query_vertical SHOW CREATE TABLE t6
|
|
SELECT * FROM t6 ORDER BY a,b,c;
|
|
|
|
connection master;
|
|
# Test for erroneous constructions
|
|
--error 1062
|
|
CREATE TABLE t7 (UNIQUE(b)) SELECT a,b FROM tt3;
|
|
# Shouldn't be written to the binary log
|
|
--replace_regex /table_id: [0-9]+/table_id: #/
|
|
SHOW BINLOG EVENTS FROM 1256;
|
|
|
|
# Test that INSERT-SELECT works the same way as for SBR.
|
|
CREATE TABLE t7 (a INT, b INT UNIQUE);
|
|
--error 1062
|
|
INSERT INTO t7 SELECT a,b FROM tt3;
|
|
SELECT * FROM t7 ORDER BY a,b;
|
|
# Should be written to the binary log
|
|
--replace_regex /table_id: [0-9]+/table_id: #/
|
|
SHOW BINLOG EVENTS FROM 1256;
|
|
sync_slave_with_master;
|
|
SELECT * FROM t7 ORDER BY a,b;
|
|
|
|
connection master;
|
|
CREATE TEMPORARY TABLE tt4 (a INT, b INT);
|
|
INSERT INTO tt4 VALUES (4,8), (5,10), (6,12);
|
|
BEGIN;
|
|
INSERT INTO t7 SELECT a,b FROM tt4;
|
|
ROLLBACK;
|
|
--replace_regex /table_id: [0-9]+/table_id: #/
|
|
SHOW BINLOG EVENTS FROM 1452;
|
|
SELECT * FROM t7 ORDER BY a,b;
|
|
sync_slave_with_master;
|
|
SELECT * FROM t7 ORDER BY a,b;
|
|
|
|
connection master;
|
|
CREATE TABLE t8 LIKE t4;
|
|
CREATE TABLE t9 LIKE tt4;
|
|
CREATE TEMPORARY TABLE tt5 LIKE t4;
|
|
CREATE TEMPORARY TABLE tt6 LIKE tt4;
|
|
--echo **** On Master ****
|
|
--query_vertical SHOW CREATE TABLE t8
|
|
--query_vertical SHOW CREATE TABLE t9
|
|
--replace_regex /table_id: [0-9]+/table_id: #/
|
|
SHOW BINLOG EVENTS FROM 1548;
|
|
sync_slave_with_master;
|
|
--echo **** On Slave ****
|
|
--query_vertical SHOW CREATE TABLE t8
|
|
--query_vertical SHOW CREATE TABLE t9
|
|
|
|
connection master;
|
|
--disable_query_log
|
|
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
|
sync_slave_with_master;
|
|
# Here we reset the value of the default storage engine
|
|
STOP SLAVE;
|
|
SET GLOBAL storage_engine=@storage_engine;
|
|
START SLAVE;
|
|
--enable_query_log
|
|
--enable_ps_protocol
|