mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Bug#18436 (RBR: Replication to partition engine triggers assertion on slave side):
Partial fix for resolving the problem. Swapping contents of record[0] and record[1] since this is what some storage engines expect. sql/handler.cc: Adding assertion to get early failure. sql/log_event.cc: Correcting code so that new record is passed in record[0] and old record is passed in record[1] when calling update_row(). mysql-test/r/rpl_row_basic_8partition.result: New BitKeeper file ``mysql-test/r/rpl_row_basic_8partition.result'' mysql-test/t/rpl_row_basic_8partition.test: New BitKeeper file ``mysql-test/t/rpl_row_basic_8partition.test''
This commit is contained in:
206
mysql-test/t/rpl_row_basic_8partition.test
Normal file
206
mysql-test/t/rpl_row_basic_8partition.test
Normal file
@ -0,0 +1,206 @@
|
||||
############################################################
|
||||
# Author: MATZ #
|
||||
# Date: 2006-03-22 #
|
||||
# Purpose: See if replication of partition tables work #
|
||||
# Most of this test is copied from the rpl_xxx2yyy tests, #
|
||||
# but here we just test some simple basic replication of #
|
||||
# partition tables with same engine (MyISAM) in both ends. #
|
||||
############################################################
|
||||
|
||||
--source include/master-slave.inc
|
||||
connection master;
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
SET BINLOG_FORMAT=ROW;
|
||||
|
||||
--echo **** Partition RANGE testing ****
|
||||
|
||||
# Create table that is partitioned by range on year i.e. year(t) and
|
||||
# replicate basice operations such at insert, update delete between 2
|
||||
# different storage engines Alter table and ensure table is handled
|
||||
# Correctly on the slave
|
||||
# Note that the storage engine should not be explicit: the default
|
||||
# storage engine is used on master and slave.
|
||||
|
||||
CREATE TABLE t1 (id MEDIUMINT NOT NULL, b1 BIT(8), vc VARCHAR(255),
|
||||
bc CHAR(255), d DECIMAL(10,4) DEFAULT 0,
|
||||
f FLOAT DEFAULT 0, total BIGINT UNSIGNED,
|
||||
y YEAR, t DATE)
|
||||
PARTITION BY RANGE (YEAR(t))
|
||||
(PARTITION p0 VALUES LESS THAN (1901),
|
||||
PARTITION p1 VALUES LESS THAN (1946),
|
||||
PARTITION p2 VALUES LESS THAN (1966),
|
||||
PARTITION p3 VALUES LESS THAN (1986),
|
||||
PARTITION p4 VALUES LESS THAN (2005),
|
||||
PARTITION p5 VALUES LESS THAN MAXVALUE);
|
||||
|
||||
--echo --- On master ---
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
--echo --- On slave --
|
||||
sync_slave_with_master;
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
--source include/rpl_multi_engine3.inc
|
||||
|
||||
connection master;
|
||||
# Check that simple Alter statements are replicated correctly
|
||||
ALTER TABLE t1 MODIFY vc TEXT;
|
||||
|
||||
--echo --- On master ---
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
--echo --- On slave ---
|
||||
sync_slave_with_master;
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
# Perform basic operation on master and ensure replicated correctly
|
||||
--source include/rpl_multi_engine3.inc
|
||||
|
||||
connection master;
|
||||
DROP TABLE IF EXISTS t1;
|
||||
|
||||
########################################################
|
||||
|
||||
--echo **** Partition LIST testing ****
|
||||
|
||||
# Create table that is partitioned by list on id i.e. (2,4). Pretend
|
||||
# that we missed one and alter to add. Then replicate basice
|
||||
# operations such at insert, update delete between 2 different storage
|
||||
# engines Alter table and ensure table is handled Correctly on the
|
||||
# slave.
|
||||
|
||||
|
||||
CREATE TABLE t1 (id MEDIUMINT NOT NULL, b1 BIT(8), vc VARCHAR(255),
|
||||
bc CHAR(255), d DECIMAL(10,4) DEFAULT 0,
|
||||
f FLOAT DEFAULT 0, total BIGINT UNSIGNED,
|
||||
y YEAR, t DATE)
|
||||
PARTITION BY LIST(id)
|
||||
(PARTITION p0 VALUES IN (2, 4),
|
||||
PARTITION p1 VALUES IN (42, 142),
|
||||
PARTITION p2 VALUES IN (412));
|
||||
|
||||
--echo --- On master ---
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
--echo --- On slave ---
|
||||
sync_slave_with_master;
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
# Perform basic operation on master and ensure replicated correctly
|
||||
--source include/rpl_multi_engine3.inc
|
||||
|
||||
connection master;
|
||||
# Check that simple Alter statements are replicated correctly ---
|
||||
ALTER TABLE t1 MODIFY vc TEXT;
|
||||
|
||||
--echo --- On master ---
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
--echo --- On slave ---
|
||||
sync_slave_with_master;
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
# Perform basic operation on master and ensure replicated correctly
|
||||
--source include/rpl_multi_engine3.inc
|
||||
|
||||
connection master;
|
||||
DROP TABLE IF EXISTS t1;
|
||||
|
||||
########################################################
|
||||
|
||||
--echo **** Partition HASH testing ****
|
||||
|
||||
# Create table that is partitioned by hash on year i.e. YEAR(t). Then
|
||||
# replicate basice operations such at insert, update delete between 2
|
||||
# different storage engines Alter table and ensure table is handled
|
||||
# Correctly on the slave
|
||||
|
||||
CREATE TABLE t1 (id MEDIUMINT NOT NULL, b1 BIT(8), vc VARCHAR(255),
|
||||
bc CHAR(255), d DECIMAL(10,4) DEFAULT 0,
|
||||
f FLOAT DEFAULT 0, total BIGINT UNSIGNED,
|
||||
y YEAR, t DATE)
|
||||
PARTITION BY HASH( YEAR(t) )
|
||||
PARTITIONS 4;
|
||||
|
||||
--echo --- On master ---
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
--echo --- On slave ---
|
||||
sync_slave_with_master;
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
--source include/rpl_multi_engine3.inc
|
||||
|
||||
# Check that simple Alter statements are replicated correctly
|
||||
ALTER TABLE t1 MODIFY vc TEXT;
|
||||
|
||||
--echo --- On master ---
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
--echo --- On slave ---
|
||||
sync_slave_with_master;
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
--source include/rpl_multi_engine3.inc
|
||||
|
||||
connection master;
|
||||
DROP TABLE IF EXISTS t1;
|
||||
|
||||
########################################################
|
||||
|
||||
# This part does not work
|
||||
--disable_parsing
|
||||
--echo **** Partition by KEY ****
|
||||
|
||||
# Create table that is partitioned by key on id with 4 parts. Then
|
||||
# replicate basice operations such at insert, update delete between 2
|
||||
# different storage engines Alter table and ensure table is handled
|
||||
# Correctly on the slave
|
||||
|
||||
CREATE TABLE t1 (id MEDIUMINT NOT NULL, b1 BIT(8), vc VARCHAR(255),
|
||||
bc CHAR(255), d DECIMAL(10,4) DEFAULT 0,
|
||||
f FLOAT DEFAULT 0, total BIGINT UNSIGNED,
|
||||
y YEAR, t DATE,PRIMARY KEY(id))
|
||||
PARTITION BY KEY()
|
||||
PARTITIONS 4;
|
||||
|
||||
--echo --- On master ---
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
--echo --- On slave ---
|
||||
sync_slave_with_master;
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
--source include/rpl_multi_engine3.inc
|
||||
|
||||
connection master;
|
||||
# Check that simple Alter statements are replicated correctly
|
||||
ALTER TABLE t1 DROP PRIMARY KEY, ADD PRIMARY KEY(id, total);
|
||||
|
||||
--echo --- On master ---
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
--echo --- On slave ---
|
||||
sync_slave_with_master;
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
--source include/rpl_multi_engine3.inc
|
||||
|
||||
connection master;
|
||||
# Check that simple Alter statements are replicated correctly
|
||||
ALTER TABLE t1 MODIFY vc TEXT;
|
||||
|
||||
--echo --- On master ---
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
--echo --- On slave ---
|
||||
sync_slave_with_master;
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
--source include/rpl_multi_engine3.inc
|
||||
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_parsing
|
||||
|
||||
# End of 5.1 test case
|
Reference in New Issue
Block a user