From dacf64b6780be14c38b81e3c13228df0d3e60fa7 Mon Sep 17 00:00:00 2001 From: "jmiller@mysql.com" <> Date: Wed, 8 Feb 2006 16:47:46 +0100 Subject: [PATCH] Implement suggestions from lars review --- mysql-test/extra/rpl_tests/rpl_insert_id.test | 17 ++-- .../extra/rpl_tests/rpl_insert_id_pk.test | 87 +++++++++++++++++++ mysql-test/extra/rpl_tests/rpl_row_blob.test | 9 +- mysql-test/r/rpl_insert_id.result | 8 +- mysql-test/r/rpl_insert_id_pk.result | 75 ++++++++++++++++ mysql-test/r/rpl_row_blob_innodb.result | 4 +- mysql-test/r/rpl_row_blob_myisam.result | 4 +- mysql-test/t/rpl_insert_id_pk-slave.opt | 1 + mysql-test/t/rpl_insert_id_pk.test | 6 ++ 9 files changed, 193 insertions(+), 18 deletions(-) create mode 100644 mysql-test/extra/rpl_tests/rpl_insert_id_pk.test create mode 100644 mysql-test/r/rpl_insert_id_pk.result create mode 100644 mysql-test/t/rpl_insert_id_pk-slave.opt create mode 100644 mysql-test/t/rpl_insert_id_pk.test diff --git a/mysql-test/extra/rpl_tests/rpl_insert_id.test b/mysql-test/extra/rpl_tests/rpl_insert_id.test index 69addb16e43..a832076fbe2 100644 --- a/mysql-test/extra/rpl_tests/rpl_insert_id.test +++ b/mysql-test/extra/rpl_tests/rpl_insert_id.test @@ -1,8 +1,14 @@ ########################################################### -# 2006-02-01: By JBM: Added 1022, ORDER BY and PK for NDB +# 2006-02-01: By JBM: Added 1022, ORDER BY ########################################################### # See if queries that use both auto_increment and LAST_INSERT_ID() # are replicated well +############################################################ +# REQUIREMENT +# Auto increment should work for a table with an auto_increment +# column and index but without primary key. +############################################################## + # We also check how the foreign_key_check variable is replicated @@ -10,8 +16,8 @@ #should work for both SBR and RBR connection master; -create table t1(a int auto_increment, PRIMARY key(a)); -create table t2(b int auto_increment, c int, PRIMARY key(b)); +create table t1(a int auto_increment, key(a)); +create table t2(b int auto_increment, c int, key(b)); insert into t1 values (1),(2),(3); insert into t1 values (null); insert into t2 values (null,last_insert_id()); @@ -47,8 +53,8 @@ connection master; drop table t2; drop table t1; -create table t1(a int auto_increment, PRIMARY key(a)); -create table t2(b int auto_increment, c int, PRIMARY key(b)); +create table t1(a int auto_increment, key(a)); +create table t2(b int auto_increment, c int, key(b)); insert into t1 values (10); insert into t1 values (null),(null),(null); insert into t2 values (5,0); @@ -74,6 +80,7 @@ connection master; SET TIMESTAMP=1000000000; CREATE TABLE t1 ( a INT UNIQUE ); SET FOREIGN_KEY_CHECKS=0; +# Duplicate Key Errors --error 1022, 1062 INSERT INTO t1 VALUES (1),(1); sync_slave_with_master; diff --git a/mysql-test/extra/rpl_tests/rpl_insert_id_pk.test b/mysql-test/extra/rpl_tests/rpl_insert_id_pk.test new file mode 100644 index 00000000000..a36c402b630 --- /dev/null +++ b/mysql-test/extra/rpl_tests/rpl_insert_id_pk.test @@ -0,0 +1,87 @@ +########################################################### +# 2006-02-08: By JBM: +########################################################### +# See if queries that use both auto_increment and LAST_INSERT_ID() +# are replicated well +############################################################ +# REQUIREMENT +# Auto increment should work for a table with auto_increment column +# and primary key. +############################################################## + +# We also check how the foreign_key_check variable is replicated + +-- source include/master-slave.inc +#should work for both SBR and RBR + +connection master; +create table t1(a int auto_increment, primary key(a)); +create table t2(b int auto_increment, c int, primary key(b)); +insert into t1 values (1),(2),(3); +insert into t1 values (null); +insert into t2 values (null,last_insert_id()); +save_master_pos; +connection slave; +sync_with_master; +select * from t1 ORDER BY a; +select * from t2 ORDER BY b; +connection master; +#check if multi-line inserts, +#which set last_insert_id to the first id inserted, +#are replicated the same way +drop table t1; +drop table t2; +--disable_warnings +eval create table t1(a int auto_increment, key(a)) engine=$engine_type; +eval create table t2(b int auto_increment, c int, key(b), foreign key(b) references t1(a)) engine=$engine_type; +--enable_warnings +SET FOREIGN_KEY_CHECKS=0; +insert into t1 values (10); +insert into t1 values (null),(null),(null); +insert into t2 values (5,0); +insert into t2 values (null,last_insert_id()); +SET FOREIGN_KEY_CHECKS=1; +save_master_pos; +connection slave; +sync_with_master; +select * from t1; +select * from t2; +connection master; + +# check if INSERT SELECT in auto_increment is well replicated (bug #490) + +drop table t2; +drop table t1; +create table t1(a int auto_increment, primary key(a)); +create table t2(b int auto_increment, c int, primary key(b)); +insert into t1 values (10); +insert into t1 values (null),(null),(null); +insert into t2 values (5,0); +insert into t2 (c) select * from t1 ORDER BY a; +select * from t2 ORDER BY b; +save_master_pos; +connection slave; +sync_with_master; +select * from t1 ORDER BY a; +select * from t2 ORDER BY b; +connection master; +drop table t1; +drop table t2; +save_master_pos; +connection slave; +sync_with_master; + +# +# Bug#8412: Error codes reported in binary log for CHARACTER SET, +# FOREIGN_KEY_CHECKS +# +connection master; +SET TIMESTAMP=1000000000; +CREATE TABLE t1 ( a INT UNIQUE ); +SET FOREIGN_KEY_CHECKS=0; +# Duplicate Key Errors codes +--error 1022, 1062 +INSERT INTO t1 VALUES (1),(1); +sync_slave_with_master; + +# End of 4.1 tests diff --git a/mysql-test/extra/rpl_tests/rpl_row_blob.test b/mysql-test/extra/rpl_tests/rpl_row_blob.test index 5f1e4bea6f3..a1beafc32e1 100644 --- a/mysql-test/extra/rpl_tests/rpl_row_blob.test +++ b/mysql-test/extra/rpl_tests/rpl_row_blob.test @@ -20,12 +20,11 @@ DROP TABLE IF EXISTS test.t2; --echo ***** Table Create Section **** --echo --disable_warnings ---replace_result $engine_type engine_type -CREATE TABLE test.t1 (c1 int not null auto_increment, +--replace_result $engine_type # +eval CREATE TABLE test.t1 (c1 int not null auto_increment, data LONGBLOB, PRIMARY KEY(c1))ENGINE=$engine_type; --enable_warnings --echo - --echo **** Data Insert Section test.t1 ***** --echo INSERT INTO test.t1 VALUES (NULL, NULL); @@ -77,8 +76,8 @@ connection master; --echo **** Create Table test.t2 **** --echo --disable_warnings ---replace_result $engine_type engine_type -CREATE TABLE test.t2 ( +--replace_result $engine_type # +eval CREATE TABLE test.t2 ( c1 INT NOT NULL PRIMARY KEY, c2 TEXT, c3 INT, diff --git a/mysql-test/r/rpl_insert_id.result b/mysql-test/r/rpl_insert_id.result index 0f772a7d288..4504ad8e5a7 100644 --- a/mysql-test/r/rpl_insert_id.result +++ b/mysql-test/r/rpl_insert_id.result @@ -4,8 +4,8 @@ reset master; reset slave; drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; start slave; -create table t1(a int auto_increment, PRIMARY key(a)); -create table t2(b int auto_increment, c int, PRIMARY key(b)); +create table t1(a int auto_increment, key(a)); +create table t2(b int auto_increment, c int, key(b)); insert into t1 values (1),(2),(3); insert into t1 values (null); insert into t2 values (null,last_insert_id()); @@ -40,8 +40,8 @@ b c 6 11 drop table t2; drop table t1; -create table t1(a int auto_increment, PRIMARY key(a)); -create table t2(b int auto_increment, c int, PRIMARY key(b)); +create table t1(a int auto_increment, key(a)); +create table t2(b int auto_increment, c int, key(b)); insert into t1 values (10); insert into t1 values (null),(null),(null); insert into t2 values (5,0); diff --git a/mysql-test/r/rpl_insert_id_pk.result b/mysql-test/r/rpl_insert_id_pk.result new file mode 100644 index 00000000000..0a452d2dd73 --- /dev/null +++ b/mysql-test/r/rpl_insert_id_pk.result @@ -0,0 +1,75 @@ +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; +create table t1(a int auto_increment, primary key(a)); +create table t2(b int auto_increment, c int, primary key(b)); +insert into t1 values (1),(2),(3); +insert into t1 values (null); +insert into t2 values (null,last_insert_id()); +select * from t1 ORDER BY a; +a +1 +2 +3 +4 +select * from t2 ORDER BY b; +b c +1 4 +drop table t1; +drop table t2; +create table t1(a int auto_increment, key(a)) engine=innodb; +create table t2(b int auto_increment, c int, key(b), foreign key(b) references t1(a)) engine=innodb; +SET FOREIGN_KEY_CHECKS=0; +insert into t1 values (10); +insert into t1 values (null),(null),(null); +insert into t2 values (5,0); +insert into t2 values (null,last_insert_id()); +SET FOREIGN_KEY_CHECKS=1; +select * from t1; +a +10 +11 +12 +13 +select * from t2; +b c +5 0 +6 11 +drop table t2; +drop table t1; +create table t1(a int auto_increment, primary key(a)); +create table t2(b int auto_increment, c int, primary key(b)); +insert into t1 values (10); +insert into t1 values (null),(null),(null); +insert into t2 values (5,0); +insert into t2 (c) select * from t1 ORDER BY a; +select * from t2 ORDER BY b; +b c +5 0 +6 10 +7 11 +8 12 +9 13 +select * from t1 ORDER BY a; +a +10 +11 +12 +13 +select * from t2 ORDER BY b; +b c +5 0 +6 10 +7 11 +8 12 +9 13 +drop table t1; +drop table t2; +SET TIMESTAMP=1000000000; +CREATE TABLE t1 ( a INT UNIQUE ); +SET FOREIGN_KEY_CHECKS=0; +INSERT INTO t1 VALUES (1),(1); +Got one of the listed errors diff --git a/mysql-test/r/rpl_row_blob_innodb.result b/mysql-test/r/rpl_row_blob_innodb.result index 713ac8bae81..b9dc831350b 100644 --- a/mysql-test/r/rpl_row_blob_innodb.result +++ b/mysql-test/r/rpl_row_blob_innodb.result @@ -9,7 +9,7 @@ DROP TABLE IF EXISTS test.t2; ***** Table Create Section **** CREATE TABLE test.t1 (c1 int not null auto_increment, -data LONGBLOB, PRIMARY KEY(c1))ENGINE=engine_type; +data LONGBLOB, PRIMARY KEY(c1))ENGINE=#; **** Data Insert Section test.t1 ***** @@ -76,7 +76,7 @@ c1 INT NOT NULL PRIMARY KEY, c2 TEXT, c3 INT, c4 LONGBLOB, -KEY(c3))ENGINE=engine_type; +KEY(c3))ENGINE=#; *** Setup Values For test.t2 *** set @x0 = '01234567012345670123456701234567'; diff --git a/mysql-test/r/rpl_row_blob_myisam.result b/mysql-test/r/rpl_row_blob_myisam.result index 713ac8bae81..b9dc831350b 100644 --- a/mysql-test/r/rpl_row_blob_myisam.result +++ b/mysql-test/r/rpl_row_blob_myisam.result @@ -9,7 +9,7 @@ DROP TABLE IF EXISTS test.t2; ***** Table Create Section **** CREATE TABLE test.t1 (c1 int not null auto_increment, -data LONGBLOB, PRIMARY KEY(c1))ENGINE=engine_type; +data LONGBLOB, PRIMARY KEY(c1))ENGINE=#; **** Data Insert Section test.t1 ***** @@ -76,7 +76,7 @@ c1 INT NOT NULL PRIMARY KEY, c2 TEXT, c3 INT, c4 LONGBLOB, -KEY(c3))ENGINE=engine_type; +KEY(c3))ENGINE=#; *** Setup Values For test.t2 *** set @x0 = '01234567012345670123456701234567'; diff --git a/mysql-test/t/rpl_insert_id_pk-slave.opt b/mysql-test/t/rpl_insert_id_pk-slave.opt new file mode 100644 index 00000000000..627becdbfb5 --- /dev/null +++ b/mysql-test/t/rpl_insert_id_pk-slave.opt @@ -0,0 +1 @@ +--innodb diff --git a/mysql-test/t/rpl_insert_id_pk.test b/mysql-test/t/rpl_insert_id_pk.test new file mode 100644 index 00000000000..148afdac87b --- /dev/null +++ b/mysql-test/t/rpl_insert_id_pk.test @@ -0,0 +1,6 @@ +################################# +# Wrapper for rpl_insert_id.test# +################################# +-- source include/have_innodb.inc +let $engine_type=innodb; +-- source extra/rpl_tests/rpl_insert_id_pk.test