16 changed files with 971 additions and 278 deletions
-
72mysql-test/extra/rpl_tests/rpl_extraSlave_Col.test
-
364mysql-test/extra/rpl_tests/rpl_not_null.test
-
15mysql-test/extra/rpl_tests/rpl_row_tabledefs.test
-
52mysql-test/suite/rpl/r/rpl_extraCol_innodb.result
-
52mysql-test/suite/rpl/r/rpl_extraCol_myisam.result
-
202mysql-test/suite/rpl/r/rpl_not_null_innodb.result
-
202mysql-test/suite/rpl/r/rpl_not_null_myisam.result
-
44mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result
-
44mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result
-
19mysql-test/suite/rpl/t/rpl_not_null_innodb.test
-
18mysql-test/suite/rpl/t/rpl_not_null_myisam.test
-
56mysql-test/suite/rpl_ndb/r/rpl_ndb_extraCol.result
-
16sql/log_event.cc
-
8sql/log_event.h
-
78sql/rpl_record.cc
-
7sql/rpl_record.h
@ -0,0 +1,364 @@ |
|||
################################################################################# |
|||
# This test checks if the replication between "null" fields to either "null" |
|||
# fields or "not null" fields works properly. In the first case, the execution |
|||
# should work fine. In the second case, it may fail according to the sql_mode |
|||
# being used. |
|||
# |
|||
# The test is devided in three main parts: |
|||
# |
|||
# 1 - NULL --> NULL (no failures) |
|||
# 2 - NULL --> NOT NULL ( sql-mode = STRICT and failures) |
|||
# 3 - NULL --> NOT NULL ( sql-mode != STRICT and no failures) |
|||
# |
|||
################################################################################# |
|||
connection master; |
|||
|
|||
SET SQL_LOG_BIN= 0; |
|||
eval CREATE TABLE t1(`a` INT, `b` DATE DEFAULT NULL, |
|||
`c` INT DEFAULT NULL, |
|||
PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1; |
|||
|
|||
eval CREATE TABLE t2(`a` INT, `b` DATE DEFAULT NULL, |
|||
PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1; |
|||
|
|||
eval CREATE TABLE t3(`a` INT, `b` DATE DEFAULT NULL, |
|||
PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1; |
|||
|
|||
eval CREATE TABLE t4(`a` INT, `b` DATE DEFAULT NULL, |
|||
`c` INT DEFAULT NULL, |
|||
PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1; |
|||
SET SQL_LOG_BIN= 1; |
|||
|
|||
connection slave; |
|||
|
|||
eval CREATE TABLE t1(`a` INT, `b` DATE DEFAULT NULL, |
|||
`c` INT DEFAULT NULL, |
|||
PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1; |
|||
|
|||
eval CREATE TABLE t2(`a` INT, `b` DATE DEFAULT NULL, |
|||
PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1; |
|||
|
|||
eval CREATE TABLE t3(`a` INT, `b` DATE DEFAULT '0000-00-00', |
|||
`c` INT DEFAULT 500, |
|||
PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1; |
|||
|
|||
eval CREATE TABLE t4(`a` INT, `b` DATE DEFAULT '0000-00-00', |
|||
PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1; |
|||
|
|||
--echo ************* EXECUTION WITH INSERTS ************* |
|||
connection master; |
|||
INSERT INTO t1(a,b,c) VALUES (1, null, 1); |
|||
INSERT INTO t1(a,b,c) VALUES (2,'1111-11-11', 2); |
|||
INSERT INTO t1(a,b) VALUES (3, null); |
|||
INSERT INTO t1(a,c) VALUES (4, 4); |
|||
INSERT INTO t1(a) VALUES (5); |
|||
|
|||
INSERT INTO t2(a,b) VALUES (1, null); |
|||
INSERT INTO t2(a,b) VALUES (2,'1111-11-11'); |
|||
INSERT INTO t2(a) VALUES (3); |
|||
|
|||
INSERT INTO t3(a,b) VALUES (1, null); |
|||
INSERT INTO t3(a,b) VALUES (2,'1111-11-11'); |
|||
INSERT INTO t3(a) VALUES (3); |
|||
|
|||
INSERT INTO t4(a,b,c) VALUES (1, null, 1); |
|||
INSERT INTO t4(a,b,c) VALUES (2,'1111-11-11', 2); |
|||
INSERT INTO t4(a,b) VALUES (3, null); |
|||
INSERT INTO t4(a,c) VALUES (4, 4); |
|||
INSERT INTO t4(a) VALUES (5); |
|||
|
|||
--echo ************* SHOWING THE RESULT SETS WITH INSERTS ************* |
|||
sync_slave_with_master; |
|||
|
|||
--echo TABLES t1 and t2 must be equal otherwise an error will be thrown. |
|||
let $diff_table_1=master:test.t1; |
|||
let $diff_table_2=slave:test.t1; |
|||
source include/diff_tables.inc; |
|||
|
|||
let $diff_table_1=master:test.t2; |
|||
let $diff_table_2=slave:test.t2; |
|||
source include/diff_tables.inc; |
|||
|
|||
--echo TABLES t2 and t3 must be different. |
|||
connection master; |
|||
SELECT * FROM t3 ORDER BY a; |
|||
connection slave; |
|||
SELECT * FROM t3 ORDER BY a; |
|||
connection master; |
|||
SELECT * FROM t4 ORDER BY a; |
|||
connection slave; |
|||
SELECT * FROM t4 ORDER BY a; |
|||
|
|||
--echo ************* EXECUTION WITH UPDATES and REPLACES ************* |
|||
connection master; |
|||
DELETE FROM t1; |
|||
INSERT INTO t1(a,b,c) VALUES (1,'1111-11-11', 1); |
|||
REPLACE INTO t1(a,b,c) VALUES (2,'1111-11-11', 2); |
|||
UPDATE t1 set b= NULL, c= 300 where a= 1; |
|||
REPLACE INTO t1(a,b,c) VALUES (2, NULL, 300); |
|||
|
|||
--echo ************* SHOWING THE RESULT SETS WITH UPDATES and REPLACES ************* |
|||
sync_slave_with_master; |
|||
|
|||
--echo TABLES t1 and t2 must be equal otherwise an error will be thrown. |
|||
let $diff_table_1=master:test.t1; |
|||
let $diff_table_2=slave:test.t1; |
|||
source include/diff_tables.inc; |
|||
|
|||
--echo ************* CLEANING ************* |
|||
connection master; |
|||
|
|||
DROP TABLE t1; |
|||
DROP TABLE t2; |
|||
DROP TABLE t3; |
|||
DROP TABLE t4; |
|||
|
|||
sync_slave_with_master; |
|||
|
|||
connection master; |
|||
|
|||
SET SQL_LOG_BIN= 0; |
|||
eval CREATE TABLE t1 (`a` INT, `b` BIT DEFAULT NULL, `c` BIT DEFAULT NULL, |
|||
PRIMARY KEY (`a`)) ENGINE= $engine; |
|||
SET SQL_LOG_BIN= 1; |
|||
|
|||
connection slave; |
|||
|
|||
eval CREATE TABLE t1 (`a` INT, `b` BIT DEFAULT b'01', `c` BIT DEFAULT NULL, |
|||
PRIMARY KEY (`a`)) ENGINE= $engine; |
|||
|
|||
--echo ************* EXECUTION WITH INSERTS ************* |
|||
connection master; |
|||
INSERT INTO t1(a,b,c) VALUES (1, null, b'01'); |
|||
INSERT INTO t1(a,b,c) VALUES (2,b'00', b'01'); |
|||
INSERT INTO t1(a,b) VALUES (3, null); |
|||
INSERT INTO t1(a,c) VALUES (4, b'01'); |
|||
INSERT INTO t1(a) VALUES (5); |
|||
|
|||
--echo ************* SHOWING THE RESULT SETS WITH INSERTS ************* |
|||
--echo TABLES t1 and t2 must be different. |
|||
sync_slave_with_master; |
|||
connection master; |
|||
SELECT a,b+0,c+0 FROM t1 ORDER BY a; |
|||
connection slave; |
|||
SELECT a,b+0,c+0 FROM t1 ORDER BY a; |
|||
|
|||
--echo ************* EXECUTION WITH UPDATES and REPLACES ************* |
|||
connection master; |
|||
DELETE FROM t1; |
|||
INSERT INTO t1(a,b,c) VALUES (1,b'00', b'01'); |
|||
REPLACE INTO t1(a,b,c) VALUES (2,b'00',b'01'); |
|||
UPDATE t1 set b= NULL, c= b'00' where a= 1; |
|||
REPLACE INTO t1(a,b,c) VALUES (2, NULL, b'00'); |
|||
|
|||
--echo ************* SHOWING THE RESULT SETS WITH UPDATES and REPLACES ************* |
|||
--echo TABLES t1 and t2 must be equal otherwise an error will be thrown. |
|||
sync_slave_with_master; |
|||
let $diff_table_1=master:test.t1; |
|||
let $diff_table_2=slave:test.t1; |
|||
source include/diff_tables.inc; |
|||
|
|||
connection master; |
|||
|
|||
DROP TABLE t1; |
|||
|
|||
sync_slave_with_master; |
|||
|
|||
--echo ################################################################################ |
|||
--echo # NULL ---> NOT NULL (STRICT MODE) |
|||
--echo # UNCOMMENT THIS AFTER FIXING BUG#43992 |
|||
--echo ################################################################################ |
|||
#connection slave; |
|||
#SET GLOBAL sql_mode="TRADITIONAL"; |
|||
# |
|||
#STOP SLAVE; |
|||
#--source include/wait_for_slave_to_stop.inc |
|||
#START SLAVE; |
|||
#--source include/wait_for_slave_to_start.inc |
|||
# |
|||
#let $y=0; |
|||
#while (`select $y < 6`) |
|||
#{ |
|||
# connection master; |
|||
# |
|||
# SET SQL_LOG_BIN= 0; |
|||
# eval CREATE TABLE t1(`a` INT NOT NULL, `b` INT, |
|||
# PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1; |
|||
# eval CREATE TABLE t2(`a` INT NOT NULL, `b` INT, |
|||
# PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1; |
|||
# eval CREATE TABLE t3(`a` INT NOT NULL, `b` INT, |
|||
# PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1; |
|||
# SET SQL_LOG_BIN= 1; |
|||
# |
|||
# connection slave; |
|||
# |
|||
# eval CREATE TABLE t1(`a` INT NOT NULL, `b` INT NOT NULL, |
|||
# `c` INT NOT NULL, |
|||
# PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1; |
|||
# eval CREATE TABLE t2(`a` INT NOT NULL, `b` INT NOT NULL, |
|||
# `c` INT, |
|||
# PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1; |
|||
# eval CREATE TABLE t3(`a` INT NOT NULL, `b` INT NOT NULL, |
|||
# `c` INT DEFAULT 500, |
|||
# PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1; |
|||
# |
|||
# if (`select $y=0`) |
|||
# { |
|||
# --echo ************* EXECUTION WITH INSERTS ************* |
|||
# connection master; |
|||
# INSERT INTO t1(a) VALUES (1); |
|||
# } |
|||
# |
|||
# if (`select $y=1`) |
|||
# { |
|||
# --echo ************* EXECUTION WITH INSERTS ************* |
|||
# connection master; |
|||
# INSERT INTO t1(a, b) VALUES (1, NULL); |
|||
# } |
|||
# |
|||
# if (`select $y=2`) |
|||
# { |
|||
# --echo ************* EXECUTION WITH UPDATES ************* |
|||
# connection master; |
|||
# INSERT INTO t3(a, b) VALUES (1, 1); |
|||
# INSERT INTO t3(a, b) VALUES (2, 1); |
|||
# UPDATE t3 SET b = NULL where a= 1; |
|||
# } |
|||
# |
|||
# if (`select $y=3`) |
|||
# { |
|||
# --echo ************* EXECUTION WITH INSERTS/REPLACES ************* |
|||
# connection master; |
|||
# REPLACE INTO t3(a, b) VALUES (1, null); |
|||
# } |
|||
# |
|||
# if (`select $y=4`) |
|||
# { |
|||
# --echo ************* EXECUTION WITH UPDATES/REPLACES ************* |
|||
# connection master; |
|||
# INSERT INTO t3(a, b) VALUES (1, 1); |
|||
# REPLACE INTO t3(a, b) VALUES (1, null); |
|||
# } |
|||
# |
|||
# if (`select $y=5`) |
|||
# { |
|||
# --echo ************* EXECUTION WITH MULTI-ROW INSERTS ************* |
|||
# connection master; |
|||
# |
|||
# SET SQL_LOG_BIN= 0; |
|||
# INSERT INTO t2(a, b) VALUES (1, 1); |
|||
# INSERT INTO t2(a, b) VALUES (2, 1); |
|||
# INSERT INTO t2(a, b) VALUES (3, null); |
|||
# INSERT INTO t2(a, b) VALUES (4, 1); |
|||
# INSERT INTO t2(a, b) VALUES (5, 1); |
|||
# SET SQL_LOG_BIN= 1; |
|||
# |
|||
# INSERT INTO t2 SELECT a + 10, b from t2; |
|||
# --echo The statement below is just executed to stop processing |
|||
# INSERT INTO t1(a) VALUES (1); |
|||
# } |
|||
# |
|||
# --echo ************* SHOWING THE RESULT SETS ************* |
|||
# connection slave; |
|||
# --source include/wait_for_slave_sql_to_stop.inc |
|||
# connection master; |
|||
# SELECT * FROM t1 ORDER BY a; |
|||
# connection slave; |
|||
# SELECT * FROM t1 ORDER BY a; |
|||
# connection master; |
|||
# SELECT * FROM t2 ORDER BY a; |
|||
# connection slave; |
|||
# SELECT * FROM t2 ORDER BY a; |
|||
# connection master; |
|||
# SELECT * FROM t3 ORDER BY a; |
|||
# connection slave; |
|||
# SELECT * FROM t3 ORDER BY a; |
|||
# --source include/reset_master_and_slave.inc |
|||
# |
|||
# connection master; |
|||
# |
|||
# DROP TABLE t1; |
|||
# DROP TABLE t2; |
|||
# DROP TABLE t3; |
|||
# |
|||
# sync_slave_with_master; |
|||
# |
|||
# inc $y; |
|||
#} |
|||
#connection slave; |
|||
#SET GLOBAL sql_mode=""; |
|||
# |
|||
#STOP SLAVE; |
|||
#source include/wait_for_slave_to_stop.inc; |
|||
#START SLAVE; |
|||
#--source include/wait_for_slave_to_start.inc |
|||
|
|||
--echo ################################################################################ |
|||
--echo # NULL ---> NOT NULL (NON-STRICT MODE) |
|||
--echo ################################################################################ |
|||
connection master; |
|||
|
|||
SET SQL_LOG_BIN= 0; |
|||
eval CREATE TABLE t1(`a` INT NOT NULL, `b` INT, |
|||
PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1; |
|||
eval CREATE TABLE t2(`a` INT NOT NULL, `b` INT, |
|||
PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1; |
|||
eval CREATE TABLE t3(`a` INT NOT NULL, `b` INT, |
|||
PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1; |
|||
SET SQL_LOG_BIN= 1; |
|||
|
|||
connection slave; |
|||
|
|||
eval CREATE TABLE t1(`a` INT NOT NULL, `b` INT NOT NULL, |
|||
`c` INT NOT NULL, |
|||
PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1; |
|||
eval CREATE TABLE t2(`a` INT NOT NULL, `b` INT NOT NULL, |
|||
`c` INT, |
|||
PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1; |
|||
eval CREATE TABLE t3(`a` INT NOT NULL, `b` INT NOT NULL, |
|||
`c` INT DEFAULT 500, |
|||
PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1; |
|||
|
|||
--echo ************* EXECUTION WITH INSERTS ************* |
|||
connection master; |
|||
INSERT INTO t1(a) VALUES (1); |
|||
INSERT INTO t1(a, b) VALUES (2, NULL); |
|||
INSERT INTO t1(a, b) VALUES (3, 1); |
|||
|
|||
INSERT INTO t2(a) VALUES (1); |
|||
INSERT INTO t2(a, b) VALUES (2, NULL); |
|||
INSERT INTO t2(a, b) VALUES (3, 1); |
|||
|
|||
INSERT INTO t3(a) VALUES (1); |
|||
INSERT INTO t3(a, b) VALUES (2, NULL); |
|||
INSERT INTO t3(a, b) VALUES (3, 1); |
|||
INSERT INTO t3(a, b) VALUES (4, 1); |
|||
REPLACE INTO t3(a, b) VALUES (5, null); |
|||
|
|||
REPLACE INTO t3(a, b) VALUES (3, null); |
|||
UPDATE t3 SET b = NULL where a = 4; |
|||
|
|||
--echo ************* SHOWING THE RESULT SETS ************* |
|||
connection master; |
|||
sync_slave_with_master; |
|||
|
|||
connection master; |
|||
SELECT * FROM t1 ORDER BY a; |
|||
connection slave; |
|||
SELECT * FROM t1 ORDER BY a; |
|||
connection master; |
|||
SELECT * FROM t2 ORDER BY a; |
|||
connection slave; |
|||
SELECT * FROM t2 ORDER BY a; |
|||
connection master; |
|||
SELECT * FROM t3 ORDER BY a; |
|||
connection slave; |
|||
SELECT * FROM t3 ORDER BY a; |
|||
|
|||
connection master; |
|||
|
|||
DROP TABLE t1; |
|||
DROP TABLE t2; |
|||
DROP TABLE t3; |
|||
|
|||
sync_slave_with_master; |
@ -0,0 +1,202 @@ |
|||
stop slave; |
|||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; |
|||
reset master; |
|||
reset slave; |
|||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; |
|||
start slave; |
|||
SET SQL_LOG_BIN= 0; |
|||
CREATE TABLE t1(`a` INT, `b` DATE DEFAULT NULL, |
|||
`c` INT DEFAULT NULL, |
|||
PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; |
|||
CREATE TABLE t2(`a` INT, `b` DATE DEFAULT NULL, |
|||
PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; |
|||
CREATE TABLE t3(`a` INT, `b` DATE DEFAULT NULL, |
|||
PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; |
|||
CREATE TABLE t4(`a` INT, `b` DATE DEFAULT NULL, |
|||
`c` INT DEFAULT NULL, |
|||
PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; |
|||
SET SQL_LOG_BIN= 1; |
|||
CREATE TABLE t1(`a` INT, `b` DATE DEFAULT NULL, |
|||
`c` INT DEFAULT NULL, |
|||
PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; |
|||
CREATE TABLE t2(`a` INT, `b` DATE DEFAULT NULL, |
|||
PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; |
|||
CREATE TABLE t3(`a` INT, `b` DATE DEFAULT '0000-00-00', |
|||
`c` INT DEFAULT 500, |
|||
PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; |
|||
CREATE TABLE t4(`a` INT, `b` DATE DEFAULT '0000-00-00', |
|||
PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; |
|||
************* EXECUTION WITH INSERTS ************* |
|||
INSERT INTO t1(a,b,c) VALUES (1, null, 1); |
|||
INSERT INTO t1(a,b,c) VALUES (2,'1111-11-11', 2); |
|||
INSERT INTO t1(a,b) VALUES (3, null); |
|||
INSERT INTO t1(a,c) VALUES (4, 4); |
|||
INSERT INTO t1(a) VALUES (5); |
|||
INSERT INTO t2(a,b) VALUES (1, null); |
|||
INSERT INTO t2(a,b) VALUES (2,'1111-11-11'); |
|||
INSERT INTO t2(a) VALUES (3); |
|||
INSERT INTO t3(a,b) VALUES (1, null); |
|||
INSERT INTO t3(a,b) VALUES (2,'1111-11-11'); |
|||
INSERT INTO t3(a) VALUES (3); |
|||
INSERT INTO t4(a,b,c) VALUES (1, null, 1); |
|||
INSERT INTO t4(a,b,c) VALUES (2,'1111-11-11', 2); |
|||
INSERT INTO t4(a,b) VALUES (3, null); |
|||
INSERT INTO t4(a,c) VALUES (4, 4); |
|||
INSERT INTO t4(a) VALUES (5); |
|||
************* SHOWING THE RESULT SETS WITH INSERTS ************* |
|||
TABLES t1 and t2 must be equal otherwise an error will be thrown. |
|||
Comparing tables master:test.t1 and slave:test.t1 |
|||
Comparing tables master:test.t2 and slave:test.t2 |
|||
TABLES t2 and t3 must be different. |
|||
SELECT * FROM t3 ORDER BY a; |
|||
a b |
|||
1 NULL |
|||
2 1111-11-11 |
|||
3 NULL |
|||
SELECT * FROM t3 ORDER BY a; |
|||
a b c |
|||
1 NULL 500 |
|||
2 1111-11-11 500 |
|||
3 NULL 500 |
|||
SELECT * FROM t4 ORDER BY a; |
|||
a b c |
|||
1 NULL 1 |
|||
2 1111-11-11 2 |
|||
3 NULL NULL |
|||
4 NULL 4 |
|||
5 NULL NULL |
|||
SELECT * FROM t4 ORDER BY a; |
|||
a b |
|||
1 NULL |
|||
2 1111-11-11 |
|||
3 NULL |
|||
4 NULL |
|||
5 NULL |
|||
************* EXECUTION WITH UPDATES and REPLACES ************* |
|||
DELETE FROM t1; |
|||
INSERT INTO t1(a,b,c) VALUES (1,'1111-11-11', 1); |
|||
REPLACE INTO t1(a,b,c) VALUES (2,'1111-11-11', 2); |
|||
UPDATE t1 set b= NULL, c= 300 where a= 1; |
|||
REPLACE INTO t1(a,b,c) VALUES (2, NULL, 300); |
|||
************* SHOWING THE RESULT SETS WITH UPDATES and REPLACES ************* |
|||
TABLES t1 and t2 must be equal otherwise an error will be thrown. |
|||
Comparing tables master:test.t1 and slave:test.t1 |
|||
************* CLEANING ************* |
|||
DROP TABLE t1; |
|||
DROP TABLE t2; |
|||
DROP TABLE t3; |
|||
DROP TABLE t4; |
|||
SET SQL_LOG_BIN= 0; |
|||
CREATE TABLE t1 (`a` INT, `b` BIT DEFAULT NULL, `c` BIT DEFAULT NULL, |
|||
PRIMARY KEY (`a`)) ENGINE= Innodb; |
|||
SET SQL_LOG_BIN= 1; |
|||
CREATE TABLE t1 (`a` INT, `b` BIT DEFAULT b'01', `c` BIT DEFAULT NULL, |
|||
PRIMARY KEY (`a`)) ENGINE= Innodb; |
|||
************* EXECUTION WITH INSERTS ************* |
|||
INSERT INTO t1(a,b,c) VALUES (1, null, b'01'); |
|||
INSERT INTO t1(a,b,c) VALUES (2,b'00', b'01'); |
|||
INSERT INTO t1(a,b) VALUES (3, null); |
|||
INSERT INTO t1(a,c) VALUES (4, b'01'); |
|||
INSERT INTO t1(a) VALUES (5); |
|||
************* SHOWING THE RESULT SETS WITH INSERTS ************* |
|||
TABLES t1 and t2 must be different. |
|||
SELECT a,b+0,c+0 FROM t1 ORDER BY a; |
|||
a b+0 c+0 |
|||
1 NULL 1 |
|||
2 0 1 |
|||
3 NULL NULL |
|||
4 NULL 1 |
|||
5 NULL NULL |
|||
SELECT a,b+0,c+0 FROM t1 ORDER BY a; |
|||
a b+0 c+0 |
|||
1 NULL 1 |
|||
2 0 1 |
|||
3 NULL NULL |
|||
4 NULL 1 |
|||
5 NULL NULL |
|||
************* EXECUTION WITH UPDATES and REPLACES ************* |
|||
DELETE FROM t1; |
|||
INSERT INTO t1(a,b,c) VALUES (1,b'00', b'01'); |
|||
REPLACE INTO t1(a,b,c) VALUES (2,b'00',b'01'); |
|||
UPDATE t1 set b= NULL, c= b'00' where a= 1; |
|||
REPLACE INTO t1(a,b,c) VALUES (2, NULL, b'00'); |
|||
************* SHOWING THE RESULT SETS WITH UPDATES and REPLACES ************* |
|||
TABLES t1 and t2 must be equal otherwise an error will be thrown. |
|||
Comparing tables master:test.t1 and slave:test.t1 |
|||
DROP TABLE t1; |
|||
################################################################################ |
|||
# NULL ---> NOT NULL (STRICT MODE) |
|||
# UNCOMMENT THIS AFTER FIXING BUG#43992 |
|||
################################################################################ |
|||
################################################################################ |
|||
# NULL ---> NOT NULL (NON-STRICT MODE) |
|||
################################################################################ |
|||
SET SQL_LOG_BIN= 0; |
|||
CREATE TABLE t1(`a` INT NOT NULL, `b` INT, |
|||
PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; |
|||
CREATE TABLE t2(`a` INT NOT NULL, `b` INT, |
|||
PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; |
|||
CREATE TABLE t3(`a` INT NOT NULL, `b` INT, |
|||
PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; |
|||
SET SQL_LOG_BIN= 1; |
|||
CREATE TABLE t1(`a` INT NOT NULL, `b` INT NOT NULL, |
|||
`c` INT NOT NULL, |
|||
PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; |
|||
CREATE TABLE t2(`a` INT NOT NULL, `b` INT NOT NULL, |
|||
`c` INT, |
|||
PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; |
|||
CREATE TABLE t3(`a` INT NOT NULL, `b` INT NOT NULL, |
|||
`c` INT DEFAULT 500, |
|||
PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1; |
|||
************* EXECUTION WITH INSERTS ************* |
|||
INSERT INTO t1(a) VALUES (1); |
|||
INSERT INTO t1(a, b) VALUES (2, NULL); |
|||
INSERT INTO t1(a, b) VALUES (3, 1); |
|||
INSERT INTO t2(a) VALUES (1); |
|||
INSERT INTO t2(a, b) VALUES (2, NULL); |
|||
INSERT INTO t2(a, b) VALUES (3, 1); |
|||
INSERT INTO t3(a) VALUES (1); |
|||
INSERT INTO t3(a, b) VALUES (2, NULL); |
|||
INSERT INTO t3(a, b) VALUES (3, 1); |
|||
INSERT INTO t3(a, b) VALUES (4, 1); |
|||
REPLACE INTO t3(a, b) VALUES (5, null); |
|||
REPLACE INTO t3(a, b) VALUES (3, null); |
|||
UPDATE t3 SET b = NULL where a = 4; |
|||
************* SHOWING THE RESULT SETS ************* |
|||
SELECT * FROM t1 ORDER BY a; |
|||
a b |
|||
1 NULL |
|||
2 NULL |
|||
3 1 |
|||
SELECT * FROM t1 ORDER BY a; |
|||
a b c |
|||
1 0 0 |
|||
2 0 0 |
|||
3 1 0 |
|||
SELECT * FROM t2 ORDER BY a; |
|||
a b |
|||
1 NULL |
|||
2 NULL |
|||
3 1 |
|||
SELECT * FROM t2 ORDER BY a; |
|||
a b c |
|||
1 0 NULL |
|||
2 0 NULL |
|||
3 1 NULL |
|||
SELECT * FROM t3 ORDER BY a; |
|||
a b |
|||
1 NULL |
|||
2 NULL |
|||
3 NULL |
|||
4 NULL |
|||
5 NULL |
|||
SELECT * FROM t3 ORDER BY a; |
|||
a b c |
|||
1 0 500 |
|||
2 0 500 |
|||
3 0 500 |
|||
4 0 500 |
|||
5 0 500 |
|||
DROP TABLE t1; |
|||
DROP TABLE t2; |
|||
DROP TABLE t3; |
@ -0,0 +1,202 @@ |
|||
stop slave; |
|||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; |
|||
reset master; |
|||
reset slave; |
|||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; |
|||
start slave; |
|||
SET SQL_LOG_BIN= 0; |
|||
CREATE TABLE t1(`a` INT, `b` DATE DEFAULT NULL, |
|||
`c` INT DEFAULT NULL, |
|||
PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1; |
|||
CREATE TABLE t2(`a` INT, `b` DATE DEFAULT NULL, |
|||
PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1; |
|||
CREATE TABLE t3(`a` INT, `b` DATE DEFAULT NULL, |
|||
PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1; |
|||
CREATE TABLE t4(`a` INT, `b` DATE DEFAULT NULL, |
|||
`c` INT DEFAULT NULL, |
|||
PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1; |
|||
SET SQL_LOG_BIN= 1; |
|||
CREATE TABLE t1(`a` INT, `b` DATE DEFAULT NULL, |
|||
`c` INT DEFAULT NULL, |
|||
PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1; |
|||
CREATE TABLE t2(`a` INT, `b` DATE DEFAULT NULL, |
|||
PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1; |
|||
CREATE TABLE t3(`a` INT, `b` DATE DEFAULT '0000-00-00', |
|||
`c` INT DEFAULT 500, |
|||
PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1; |
|||
CREATE TABLE t4(`a` INT, `b` DATE DEFAULT '0000-00-00', |
|||
PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1; |
|||
************* EXECUTION WITH INSERTS ************* |
|||
INSERT INTO t1(a,b,c) VALUES (1, null, 1); |
|||
INSERT INTO t1(a,b,c) VALUES (2,'1111-11-11', 2); |
|||
INSERT INTO t1(a,b) VALUES (3, null); |
|||
INSERT INTO t1(a,c) VALUES (4, 4); |
|||
INSERT INTO t1(a) VALUES (5); |
|||
INSERT INTO t2(a,b) VALUES (1, null); |
|||
INSERT INTO t2(a,b) VALUES (2,'1111-11-11'); |
|||
INSERT INTO t2(a) VALUES (3); |
|||
INSERT INTO t3(a,b) VALUES (1, null); |
|||
INSERT INTO t3(a,b) VALUES (2,'1111-11-11'); |
|||
INSERT INTO t3(a) VALUES (3); |
|||
INSERT INTO t4(a,b,c) VALUES (1, null, 1); |
|||
INSERT INTO t4(a,b,c) VALUES (2,'1111-11-11', 2); |
|||
INSERT INTO t4(a,b) VALUES (3, null); |
|||
INSERT INTO t4(a,c) VALUES (4, 4); |
|||
INSERT INTO t4(a) VALUES (5); |
|||
************* SHOWING THE RESULT SETS WITH INSERTS ************* |
|||
TABLES t1 and t2 must be equal otherwise an error will be thrown. |
|||
Comparing tables master:test.t1 and slave:test.t1 |
|||
Comparing tables master:test.t2 and slave:test.t2 |
|||
TABLES t2 and t3 must be different. |
|||
SELECT * FROM t3 ORDER BY a; |
|||
a b |
|||
1 NULL |
|||
2 1111-11-11 |
|||
3 NULL |
|||
SELECT * FROM t3 ORDER BY a; |
|||
a b c |
|||
1 NULL 500 |
|||
2 1111-11-11 500 |
|||
3 NULL 500 |
|||
SELECT * FROM t4 ORDER BY a; |
|||
a b c |
|||
1 NULL 1 |
|||
2 1111-11-11 2 |
|||
3 NULL NULL |
|||
4 NULL 4 |
|||
5 NULL NULL |
|||
SELECT * FROM t4 ORDER BY a; |
|||
a b |
|||
1 NULL |
|||
2 1111-11-11 |
|||
3 NULL |
|||
4 NULL |
|||
5 NULL |
|||
************* EXECUTION WITH UPDATES and REPLACES ************* |
|||
DELETE FROM t1; |
|||
INSERT INTO t1(a,b,c) VALUES (1,'1111-11-11', 1); |
|||
REPLACE INTO t1(a,b,c) VALUES (2,'1111-11-11', 2); |
|||
UPDATE t1 set b= NULL, c= 300 where a= 1; |
|||
REPLACE INTO t1(a,b,c) VALUES (2, NULL, 300); |
|||
************* SHOWING THE RESULT SETS WITH UPDATES and REPLACES ************* |
|||
TABLES t1 and t2 must be equal otherwise an error will be thrown. |
|||
Comparing tables master:test.t1 and slave:test.t1 |
|||
************* CLEANING ************* |
|||
DROP TABLE t1; |
|||
DROP TABLE t2; |
|||
DROP TABLE t3; |
|||
DROP TABLE t4; |
|||
SET SQL_LOG_BIN= 0; |
|||
CREATE TABLE t1 (`a` INT, `b` BIT DEFAULT NULL, `c` BIT DEFAULT NULL, |
|||
PRIMARY KEY (`a`)) ENGINE= MyISAM; |
|||
SET SQL_LOG_BIN= 1; |
|||
CREATE TABLE t1 (`a` INT, `b` BIT DEFAULT b'01', `c` BIT DEFAULT NULL, |
|||
PRIMARY KEY (`a`)) ENGINE= MyISAM; |
|||
************* EXECUTION WITH INSERTS ************* |
|||
INSERT INTO t1(a,b,c) VALUES (1, null, b'01'); |
|||
INSERT INTO t1(a,b,c) VALUES (2,b'00', b'01'); |
|||
INSERT INTO t1(a,b) VALUES (3, null); |
|||
INSERT INTO t1(a,c) VALUES (4, b'01'); |
|||
INSERT INTO t1(a) VALUES (5); |
|||
************* SHOWING THE RESULT SETS WITH INSERTS ************* |
|||
TABLES t1 and t2 must be different. |
|||
SELECT a,b+0,c+0 FROM t1 ORDER BY a; |
|||
a b+0 c+0 |
|||
1 NULL 1 |
|||
2 0 1 |
|||
3 NULL NULL |
|||
4 NULL 1 |
|||
5 NULL NULL |
|||
SELECT a,b+0,c+0 FROM t1 ORDER BY a; |
|||
a b+0 c+0 |
|||
1 NULL 1 |
|||
2 0 1 |
|||
3 NULL NULL |
|||
4 NULL 1 |
|||
5 NULL NULL |
|||
************* EXECUTION WITH UPDATES and REPLACES ************* |
|||
DELETE FROM t1; |
|||
INSERT INTO t1(a,b,c) VALUES (1,b'00', b'01'); |
|||
REPLACE INTO t1(a,b,c) VALUES (2,b'00',b'01'); |
|||
UPDATE t1 set b= NULL, c= b'00' where a= 1; |
|||
REPLACE INTO t1(a,b,c) VALUES (2, NULL, b'00'); |
|||
************* SHOWING THE RESULT SETS WITH UPDATES and REPLACES ************* |
|||
TABLES t1 and t2 must be equal otherwise an error will be thrown. |
|||
Comparing tables master:test.t1 and slave:test.t1 |
|||
DROP TABLE t1; |
|||
################################################################################ |
|||
# NULL ---> NOT NULL (STRICT MODE) |
|||
# UNCOMMENT THIS AFTER FIXING BUG#43992 |
|||
################################################################################ |
|||
################################################################################ |
|||
# NULL ---> NOT NULL (NON-STRICT MODE) |
|||
################################################################################ |
|||
SET SQL_LOG_BIN= 0; |
|||
CREATE TABLE t1(`a` INT NOT NULL, `b` INT, |
|||
PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1; |
|||
CREATE TABLE t2(`a` INT NOT NULL, `b` INT, |
|||
PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1; |
|||
CREATE TABLE t3(`a` INT NOT NULL, `b` INT, |
|||
PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1; |
|||
SET SQL_LOG_BIN= 1; |
|||
CREATE TABLE t1(`a` INT NOT NULL, `b` INT NOT NULL, |
|||
`c` INT NOT NULL, |
|||
PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1; |
|||
CREATE TABLE t2(`a` INT NOT NULL, `b` INT NOT NULL, |
|||
`c` INT, |
|||
PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1; |
|||
CREATE TABLE t3(`a` INT NOT NULL, `b` INT NOT NULL, |
|||
`c` INT DEFAULT 500, |
|||
PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1; |
|||
************* EXECUTION WITH INSERTS ************* |
|||
INSERT INTO t1(a) VALUES (1); |
|||
INSERT INTO t1(a, b) VALUES (2, NULL); |
|||
INSERT INTO t1(a, b) VALUES (3, 1); |
|||
INSERT INTO t2(a) VALUES (1); |
|||
INSERT INTO t2(a, b) VALUES (2, NULL); |
|||
INSERT INTO t2(a, b) VALUES (3, 1); |
|||
INSERT INTO t3(a) VALUES (1); |
|||
INSERT INTO t3(a, b) VALUES (2, NULL); |
|||
INSERT INTO t3(a, b) VALUES (3, 1); |
|||
INSERT INTO t3(a, b) VALUES (4, 1); |
|||
REPLACE INTO t3(a, b) VALUES (5, null); |
|||
REPLACE INTO t3(a, b) VALUES (3, null); |
|||
UPDATE t3 SET b = NULL where a = 4; |
|||
************* SHOWING THE RESULT SETS ************* |
|||
SELECT * FROM t1 ORDER BY a; |
|||
a b |
|||
1 NULL |
|||
2 NULL |
|||
3 1 |
|||
SELECT * FROM t1 ORDER BY a; |
|||
a b c |
|||
1 0 0 |
|||
2 0 0 |
|||
3 1 0 |
|||
SELECT * FROM t2 ORDER BY a; |
|||
a b |
|||
1 NULL |
|||
2 NULL |
|||
3 1 |
|||
SELECT * FROM t2 ORDER BY a; |
|||
a b c |
|||
1 0 NULL |
|||
2 0 NULL |
|||
3 1 NULL |
|||
SELECT * FROM t3 ORDER BY a; |
|||
a b |
|||
1 NULL |
|||
2 NULL |
|||
3 NULL |
|||
4 NULL |
|||
5 NULL |
|||
SELECT * FROM t3 ORDER BY a; |
|||
a b c |
|||
1 0 500 |
|||
2 0 500 |
|||
3 0 500 |
|||
4 0 500 |
|||
5 0 500 |
|||
DROP TABLE t1; |
|||
DROP TABLE t2; |
|||
DROP TABLE t3; |
@ -0,0 +1,19 @@ |
|||
################################################################################# |
|||
# This test checks if the replication between "null" fields to either "null" |
|||
# fields or "not null" fields works properly. In the first case, the execution |
|||
# should work fine. In the second case, it may fail according to the sql_mode |
|||
# being used. |
|||
# |
|||
# The test is devided in three main parts: |
|||
# |
|||
# 1 - NULL --> NULL (no failures) |
|||
# 2 - NULL --> NOT NULL ( sql-mode = STRICT and failures) |
|||
# 3 - NULL --> NOT NULL ( sql-mode != STRICT and no failures) |
|||
# |
|||
################################################################################# |
|||
--source include/master-slave.inc |
|||
--source include/have_innodb.inc |
|||
--source include/have_binlog_format_row.inc |
|||
|
|||
let $engine=Innodb; |
|||
--source extra/rpl_tests/rpl_not_null.test |
@ -0,0 +1,18 @@ |
|||
################################################################################# |
|||
# This test checks if the replication between "null" fields to either "null" |
|||
# fields or "not null" fields works properly. In the first case, the execution |
|||
# should work fine. In the second case, it may fail according to the sql_mode |
|||
# being used. |
|||
# |
|||
# The test is devided in three main parts: |
|||
# |
|||
# 1 - NULL --> NULL (no failures) |
|||
# 2 - NULL --> NOT NULL ( sql-mode = STRICT and failures) |
|||
# 3 - NULL --> NOT NULL ( sql-mode != STRICT and no failures) |
|||
# |
|||
################################################################################# |
|||
--source include/master-slave.inc |
|||
--source include/have_binlog_format_row.inc |
|||
|
|||
let $engine=MyISAM; |
|||
--source extra/rpl_tests/rpl_not_null.test |
Write
Preview
Loading…
Cancel
Save
Reference in new issue