mirror of
https://github.com/MariaDB/server.git
synced 2025-01-20 05:52:27 +01:00
179 lines
5.8 KiB
Text
179 lines
5.8 KiB
Text
# WL#5096
|
|
#
|
|
# Description
|
|
# ===========
|
|
#
|
|
# This test case covers Requirements for replication using different
|
|
# combinations of indexes and blob fields.
|
|
#
|
|
# It acts as a complement for rpl_row_img_sanity tests as it checks
|
|
# that in a chained replication scenario, replication does not break.
|
|
#
|
|
# Usage
|
|
# =====
|
|
#
|
|
# Before including this file the following variables should be set:
|
|
# * $server_1_engine
|
|
# * $server_2_engine
|
|
# * $server_3_engine
|
|
#
|
|
# Example:
|
|
#
|
|
# -- let $server_1_engine= Falcon
|
|
# -- let $server_2_engine= MyISAM
|
|
# -- let $server_3_engine= InnoDB
|
|
#
|
|
# -- source extra/rpl_tests/rpl_row_img_blobs.test
|
|
#
|
|
|
|
-- connection server_1
|
|
|
|
-- let $diff_table=test.t
|
|
let $i= 7;
|
|
while($i)
|
|
{
|
|
-- connection server_1
|
|
SET SQL_LOG_BIN=0;
|
|
|
|
-- connection server_2
|
|
SET SQL_LOG_BIN=0;
|
|
|
|
-- connection server_3
|
|
SET SQL_LOG_BIN=0;
|
|
|
|
#
|
|
# The comments below (on create table) must be read with the SQL
|
|
# instructions issued later in mind. Declaring a table obviously is
|
|
# not enough to assert anything.
|
|
#
|
|
# Also, the tests in this file make more sense when performed with
|
|
# binlog_row_image configured as NOBLOB.
|
|
#
|
|
|
|
if ($i == 1) {
|
|
-- echo ### Asserts that declaring a blob as part of a primary key does not break replication
|
|
-- connection server_1
|
|
--eval CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= $server_1_engine;
|
|
-- connection server_2
|
|
--eval CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= $server_2_engine;
|
|
-- connection server_3
|
|
--eval CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c2(512))) engine= $server_3_engine;
|
|
}
|
|
if ($i == 2)
|
|
{
|
|
-- echo ### Asserts that declaring a blob as part of a unique (not null) key does not break replication
|
|
-- connection server_1
|
|
--eval CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= $server_1_engine;
|
|
-- connection server_2
|
|
--eval CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= $server_2_engine;
|
|
-- connection server_3
|
|
--eval CREATE TABLE t (c1 int, c2 blob NOT NULL, c3 int, unique key(c2(512))) engine= $server_3_engine;
|
|
}
|
|
if ($i == 3)
|
|
{
|
|
-- echo ### Asserts that declaring a blob in a key does not break replication
|
|
-- connection server_1
|
|
--eval CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= $server_1_engine;
|
|
-- connection server_2
|
|
--eval CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= $server_2_engine;
|
|
-- connection server_3
|
|
--eval CREATE TABLE t (c1 int, c2 blob, c3 int, key(c2(512))) engine= $server_3_engine;
|
|
|
|
}
|
|
if ($i == 4) {
|
|
-- echo ### Asserts that updates without blobs in the BI (PK exists int the table)
|
|
-- echo ### will not break replication
|
|
-- connection server_1
|
|
--eval CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= $server_1_engine;
|
|
-- connection server_2
|
|
--eval CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= $server_2_engine;
|
|
-- connection server_3
|
|
--eval CREATE TABLE t (c1 int, c2 blob, c3 int, primary key(c1)) engine= $server_3_engine;
|
|
|
|
}
|
|
if ($i == 5)
|
|
{
|
|
-- echo ### Asserts that updates without blobs in the BI (UK NOT NULL exists in the table)
|
|
-- echo ### will not break replication
|
|
-- connection server_1
|
|
--eval CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= $server_1_engine;
|
|
-- connection server_2
|
|
--eval CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= $server_2_engine;
|
|
-- connection server_3
|
|
--eval CREATE TABLE t (c1 int NOT NULL, c2 blob NOT NULL, c3 int, unique key(c1)) engine= $server_3_engine;
|
|
|
|
}
|
|
if ($i == 6)
|
|
{
|
|
-- echo ### Asserts that updates without blobs in the AI (they are not updated)
|
|
-- echo ### will not break replication (check even if there is a key in the table)
|
|
-- connection server_1
|
|
--eval CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= $server_1_engine;
|
|
-- connection server_2
|
|
--eval CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= $server_2_engine;
|
|
-- connection server_3
|
|
--eval CREATE TABLE t (c1 int, c2 blob, c3 int, key(c1)) engine= $server_3_engine;
|
|
|
|
}
|
|
if ($i == 7)
|
|
{
|
|
-- echo ### Asserts that updates without blobs in the AI (they are not updated)
|
|
-- echo ### will not break replication (check when there is no key in the table)
|
|
-- connection server_1
|
|
--eval CREATE TABLE t (c1 int, c2 blob, c3 int) engine= $server_1_engine;
|
|
-- connection server_2
|
|
--eval CREATE TABLE t (c1 int, c2 blob, c3 int) engine= $server_2_engine;
|
|
-- connection server_3
|
|
--eval CREATE TABLE t (c1 int, c2 blob, c3 int) engine= $server_3_engine;
|
|
}
|
|
|
|
-- connection server_1
|
|
SET SQL_LOG_BIN=1;
|
|
|
|
-- connection server_2
|
|
SET SQL_LOG_BIN=1;
|
|
|
|
-- connection server_3
|
|
SET SQL_LOG_BIN=1;
|
|
|
|
-- connection server_1
|
|
|
|
-- let $blob1= "a"
|
|
-- let $blob2= "b"
|
|
-- let $blob3= "c"
|
|
|
|
-- eval INSERT INTO t VALUES (1, $blob1, 10)
|
|
-- eval INSERT INTO t VALUES (2, $blob2, 20)
|
|
-- eval INSERT INTO t VALUES (3, $blob3, 30)
|
|
|
|
-- source include/rpl_sync.inc
|
|
|
|
-- connection server_1
|
|
-- eval UPDATE t SET c1=10 WHERE c2=$blob1
|
|
-- eval UPDATE t SET c1=20 WHERE c1=2
|
|
-- eval UPDATE t SET c1=30 WHERE c3=30
|
|
-- eval UPDATE t SET c3=40 WHERE c1=30
|
|
|
|
-- source include/rpl_sync.inc
|
|
|
|
-- let $diff_tables= server_1:$diff_table, server_2:$diff_table, server_3:$diff_table
|
|
-- source include/diff_tables.inc
|
|
|
|
-- connection server_1
|
|
-- eval DELETE FROM t WHERE c2=$blob1
|
|
-- eval DELETE FROM t WHERE c1=20
|
|
-- eval DELETE FROM t
|
|
|
|
-- source include/rpl_sync.inc
|
|
|
|
-- let $diff_tables= server_1:$diff_table, server_2:$diff_table, server_3:$diff_table
|
|
-- source include/diff_tables.inc
|
|
|
|
-- connection server_1
|
|
|
|
DROP TABLE t;
|
|
|
|
-- source include/rpl_sync.inc
|
|
|
|
dec $i;
|
|
}
|