Browse Source
Merge whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-ndb
Merge whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-ndb
into whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-ndb-merge sql/ha_ndbcluster.cc: Auto merged sql/mysqld.cc: Auto mergedpull/374/head
19 changed files with 892 additions and 354 deletions
-
445mysql-test/r/ndb_auto_increment.result
-
8mysql-test/r/ndb_charset.result
-
14mysql-test/r/ndb_index_unique.result
-
169mysql-test/r/ndb_insert.result
-
2mysql-test/r/ndb_update.result
-
294mysql-test/t/ndb_auto_increment.test
-
138mysql-test/t/ndb_insert.test
-
3ndb/include/kernel/signaldata/TcKeyRef.hpp
-
3ndb/include/kernel/signaldata/TcRollbackRep.hpp
-
7ndb/include/ndbapi/NdbDictionary.hpp
-
1ndb/src/kernel/blocks/dbtc/Dbtc.hpp
-
17ndb/src/kernel/blocks/dbtc/DbtcMain.cpp
-
9ndb/src/ndbapi/NdbDictionary.cpp
-
7ndb/src/ndbapi/NdbOperationExec.cpp
-
12ndb/src/ndbapi/NdbTransaction.cpp
-
2ndb/src/ndbapi/ndberror.c
-
108sql/ha_ndbcluster.cc
-
3sql/ha_ndbcluster.h
-
4sql/mysqld.cc
@ -0,0 +1,445 @@ |
|||
DROP TABLE IF EXISTS t1,t2; |
|||
DROP TABLE IF EXISTS t1; |
|||
set @old_auto_increment_offset = @@session.auto_increment_offset; |
|||
set @old_auto_increment_increment = @@session.auto_increment_increment; |
|||
set @old_ndb_autoincrement_prefetch_sz = @@session.ndb_autoincrement_prefetch_sz; |
|||
flush status; |
|||
create table t1 (a int not null auto_increment primary key) engine ndb; |
|||
insert into t1 values (NULL); |
|||
select * from t1 order by a; |
|||
a |
|||
1 |
|||
update t1 set a = 5 where a = 1; |
|||
insert into t1 values (NULL); |
|||
select * from t1 order by a; |
|||
a |
|||
5 |
|||
6 |
|||
insert into t1 values (7); |
|||
insert into t1 values (NULL); |
|||
select * from t1 order by a; |
|||
a |
|||
5 |
|||
6 |
|||
7 |
|||
8 |
|||
insert into t1 values (2); |
|||
insert into t1 values (NULL); |
|||
select * from t1 order by a; |
|||
a |
|||
2 |
|||
5 |
|||
6 |
|||
7 |
|||
8 |
|||
9 |
|||
update t1 set a = 4 where a = 2; |
|||
insert into t1 values (NULL); |
|||
select * from t1 order by a; |
|||
a |
|||
4 |
|||
5 |
|||
6 |
|||
7 |
|||
8 |
|||
9 |
|||
10 |
|||
delete from t1 where a = 10; |
|||
insert into t1 values (NULL); |
|||
select * from t1 order by a; |
|||
a |
|||
4 |
|||
5 |
|||
6 |
|||
7 |
|||
8 |
|||
9 |
|||
11 |
|||
replace t1 values (NULL); |
|||
select * from t1 order by a; |
|||
a |
|||
4 |
|||
5 |
|||
6 |
|||
7 |
|||
8 |
|||
9 |
|||
11 |
|||
12 |
|||
replace t1 values (15); |
|||
select * from t1 order by a; |
|||
a |
|||
4 |
|||
5 |
|||
6 |
|||
7 |
|||
8 |
|||
9 |
|||
11 |
|||
12 |
|||
15 |
|||
replace into t1 values (NULL); |
|||
select * from t1 order by a; |
|||
a |
|||
4 |
|||
5 |
|||
6 |
|||
7 |
|||
8 |
|||
9 |
|||
11 |
|||
12 |
|||
15 |
|||
16 |
|||
replace t1 values (15); |
|||
select * from t1 order by a; |
|||
a |
|||
4 |
|||
5 |
|||
6 |
|||
7 |
|||
8 |
|||
9 |
|||
11 |
|||
12 |
|||
15 |
|||
16 |
|||
insert ignore into t1 values (NULL); |
|||
select * from t1 order by a; |
|||
a |
|||
4 |
|||
5 |
|||
6 |
|||
7 |
|||
8 |
|||
9 |
|||
11 |
|||
12 |
|||
15 |
|||
16 |
|||
17 |
|||
insert ignore into t1 values (15), (NULL); |
|||
select * from t1 order by a; |
|||
a |
|||
4 |
|||
5 |
|||
6 |
|||
7 |
|||
8 |
|||
9 |
|||
11 |
|||
12 |
|||
15 |
|||
16 |
|||
17 |
|||
18 |
|||
insert into t1 values (15) |
|||
on duplicate key update a = 20; |
|||
insert into t1 values (NULL); |
|||
select * from t1 order by a; |
|||
a |
|||
4 |
|||
5 |
|||
6 |
|||
7 |
|||
8 |
|||
9 |
|||
11 |
|||
12 |
|||
16 |
|||
17 |
|||
18 |
|||
20 |
|||
21 |
|||
insert into t1 values (NULL) on duplicate key update a = 30; |
|||
select * from t1 order by a; |
|||
a |
|||
4 |
|||
5 |
|||
6 |
|||
7 |
|||
8 |
|||
9 |
|||
11 |
|||
12 |
|||
16 |
|||
17 |
|||
18 |
|||
20 |
|||
21 |
|||
22 |
|||
insert into t1 values (30) on duplicate key update a = 40; |
|||
select * from t1 order by a; |
|||
a |
|||
4 |
|||
5 |
|||
6 |
|||
7 |
|||
8 |
|||
9 |
|||
11 |
|||
12 |
|||
16 |
|||
17 |
|||
18 |
|||
20 |
|||
21 |
|||
22 |
|||
30 |
|||
insert ignore into t1 values(600),(NULL),(NULL),(610),(NULL); |
|||
select * from t1 order by a; |
|||
a |
|||
4 |
|||
5 |
|||
6 |
|||
7 |
|||
8 |
|||
9 |
|||
11 |
|||
12 |
|||
16 |
|||
17 |
|||
18 |
|||
20 |
|||
21 |
|||
22 |
|||
30 |
|||
600 |
|||
601 |
|||
602 |
|||
610 |
|||
611 |
|||
drop table t1; |
|||
create table t1 (a int not null primary key, |
|||
b int not null unique auto_increment) engine ndb; |
|||
insert into t1 values (1, NULL); |
|||
insert into t1 values (3, NULL); |
|||
update t1 set b = 3 where a = 3; |
|||
insert into t1 values (4, NULL); |
|||
select * from t1 order by a; |
|||
a b |
|||
1 1 |
|||
3 3 |
|||
4 4 |
|||
drop table t1; |
|||
CREATE TABLE t1 ( |
|||
pk INT NOT NULL PRIMARY KEY AUTO_INCREMENT, |
|||
b INT NOT NULL, |
|||
c INT NOT NULL UNIQUE |
|||
) ENGINE=NDBCLUSTER; |
|||
CREATE TABLE t2 ( |
|||
pk INT NOT NULL PRIMARY KEY AUTO_INCREMENT, |
|||
b INT NOT NULL, |
|||
c INT NOT NULL UNIQUE |
|||
) ENGINE=MYISAM; |
|||
SET @@session.auto_increment_increment=10; |
|||
INSERT INTO t1 (b,c) VALUES (1,0),(2,1),(3,2); |
|||
INSERT INTO t2 (b,c) VALUES (1,0),(2,1),(3,2); |
|||
SELECT * FROM t1 ORDER BY pk; |
|||
pk b c |
|||
1 1 0 |
|||
11 2 1 |
|||
21 3 2 |
|||
SELECT COUNT(t1.pk) FROM t1, t2 WHERE t1.pk = t2.pk AND t1.b = t2.b AND t1.c = t1.c; |
|||
COUNT(t1.pk) |
|||
3 |
|||
TRUNCATE t1; |
|||
TRUNCATE t2; |
|||
SET @@session.auto_increment_offset=5; |
|||
INSERT INTO t1 (b,c) VALUES (1,0),(2,1),(3,2); |
|||
INSERT INTO t1 (pk,b,c) VALUES (27,4,3),(NULL,5,4),(99,6,5),(NULL,7,6); |
|||
INSERT INTO t2 (b,c) VALUES (1,0),(2,1),(3,2); |
|||
INSERT INTO t2 (pk,b,c) VALUES (27,4,3),(NULL,5,4),(99,6,5),(NULL,7,6); |
|||
SELECT * FROM t1 ORDER BY pk; |
|||
pk b c |
|||
5 1 0 |
|||
15 2 1 |
|||
25 3 2 |
|||
27 4 3 |
|||
35 5 4 |
|||
99 6 5 |
|||
105 7 6 |
|||
SELECT COUNT(t1.pk) FROM t1, t2 WHERE t1.pk = t2.pk AND t1.b = t2.b AND t1.c = t1.c; |
|||
COUNT(t1.pk) |
|||
7 |
|||
TRUNCATE t1; |
|||
TRUNCATE t2; |
|||
SET @@session.auto_increment_increment=2; |
|||
INSERT INTO t1 (b,c) VALUES (1,0),(2,1),(3,2); |
|||
INSERT INTO t2 (b,c) VALUES (1,0),(2,1),(3,2); |
|||
SELECT * FROM t1 ORDER BY pk; |
|||
pk b c |
|||
1 1 0 |
|||
3 2 1 |
|||
5 3 2 |
|||
SELECT COUNT(t1.pk) FROM t1, t2 WHERE t1.pk = t2.pk AND t1.b = t2.b AND t1.c = t1.c; |
|||
COUNT(t1.pk) |
|||
3 |
|||
DROP TABLE t1, t2; |
|||
CREATE TABLE t1 ( |
|||
pk INT NOT NULL PRIMARY KEY AUTO_INCREMENT, |
|||
b INT NOT NULL, |
|||
c INT NOT NULL UNIQUE |
|||
) ENGINE=NDBCLUSTER AUTO_INCREMENT = 7; |
|||
CREATE TABLE t2 ( |
|||
pk INT NOT NULL PRIMARY KEY AUTO_INCREMENT, |
|||
b INT NOT NULL, |
|||
c INT NOT NULL UNIQUE |
|||
) ENGINE=MYISAM AUTO_INCREMENT = 7; |
|||
SET @@session.auto_increment_offset=1; |
|||
SET @@session.auto_increment_increment=1; |
|||
INSERT INTO t1 (b,c) VALUES (1,0),(2,1),(3,2); |
|||
INSERT INTO t2 (b,c) VALUES (1,0),(2,1),(3,2); |
|||
SELECT * FROM t1 ORDER BY pk; |
|||
pk b c |
|||
7 1 0 |
|||
8 2 1 |
|||
9 3 2 |
|||
SELECT COUNT(t1.pk) FROM t1, t2 WHERE t1.pk = t2.pk AND t1.b = t2.b AND t1.c = t1.c; |
|||
COUNT(t1.pk) |
|||
3 |
|||
DROP TABLE t1, t2; |
|||
CREATE TABLE t1 ( |
|||
pk INT NOT NULL PRIMARY KEY AUTO_INCREMENT, |
|||
b INT NOT NULL, |
|||
c INT NOT NULL UNIQUE |
|||
) ENGINE=NDBCLUSTER AUTO_INCREMENT = 3; |
|||
CREATE TABLE t2 ( |
|||
pk INT NOT NULL PRIMARY KEY AUTO_INCREMENT, |
|||
b INT NOT NULL, |
|||
c INT NOT NULL UNIQUE |
|||
) ENGINE=MYISAM AUTO_INCREMENT = 3; |
|||
SET @@session.auto_increment_offset=5; |
|||
SET @@session.auto_increment_increment=10; |
|||
INSERT INTO t1 (b,c) VALUES (1,0),(2,1),(3,2); |
|||
INSERT INTO t2 (b,c) VALUES (1,0),(2,1),(3,2); |
|||
SELECT * FROM t1 ORDER BY pk; |
|||
pk b c |
|||
5 1 0 |
|||
15 2 1 |
|||
25 3 2 |
|||
SELECT COUNT(t1.pk) FROM t1, t2 WHERE t1.pk = t2.pk AND t1.b = t2.b AND t1.c = t1.c; |
|||
COUNT(t1.pk) |
|||
3 |
|||
DROP TABLE t1, t2; |
|||
CREATE TABLE t1 ( |
|||
pk INT NOT NULL PRIMARY KEY AUTO_INCREMENT, |
|||
b INT NOT NULL, |
|||
c INT NOT NULL UNIQUE |
|||
) ENGINE=NDBCLUSTER AUTO_INCREMENT = 7; |
|||
CREATE TABLE t2 ( |
|||
pk INT NOT NULL PRIMARY KEY AUTO_INCREMENT, |
|||
b INT NOT NULL, |
|||
c INT NOT NULL UNIQUE |
|||
) ENGINE=MYISAM AUTO_INCREMENT = 7; |
|||
SET @@session.auto_increment_offset=5; |
|||
SET @@session.auto_increment_increment=10; |
|||
INSERT INTO t1 (b,c) VALUES (1,0),(2,1),(3,2); |
|||
INSERT INTO t2 (b,c) VALUES (1,0),(2,1),(3,2); |
|||
SELECT * FROM t1 ORDER BY pk; |
|||
pk b c |
|||
15 1 0 |
|||
25 2 1 |
|||
35 3 2 |
|||
SELECT COUNT(t1.pk) FROM t1, t2 WHERE t1.pk = t2.pk AND t1.b = t2.b AND t1.c = t1.c; |
|||
COUNT(t1.pk) |
|||
3 |
|||
DROP TABLE t1, t2; |
|||
CREATE TABLE t1 ( |
|||
pk INT NOT NULL PRIMARY KEY AUTO_INCREMENT, |
|||
b INT NOT NULL, |
|||
c INT NOT NULL UNIQUE |
|||
) ENGINE=NDBCLUSTER AUTO_INCREMENT = 5; |
|||
CREATE TABLE t2 ( |
|||
pk INT NOT NULL PRIMARY KEY AUTO_INCREMENT, |
|||
b INT NOT NULL, |
|||
c INT NOT NULL UNIQUE |
|||
) ENGINE=MYISAM AUTO_INCREMENT = 5; |
|||
SET @@session.auto_increment_offset=5; |
|||
SET @@session.auto_increment_increment=10; |
|||
INSERT INTO t1 (b,c) VALUES (1,0),(2,1),(3,2); |
|||
INSERT INTO t2 (b,c) VALUES (1,0),(2,1),(3,2); |
|||
SELECT * FROM t1 ORDER BY pk; |
|||
pk b c |
|||
5 1 0 |
|||
15 2 1 |
|||
25 3 2 |
|||
SELECT COUNT(t1.pk) FROM t1, t2 WHERE t1.pk = t2.pk AND t1.b = t2.b AND t1.c = t1.c; |
|||
COUNT(t1.pk) |
|||
3 |
|||
DROP TABLE t1, t2; |
|||
CREATE TABLE t1 ( |
|||
pk INT NOT NULL PRIMARY KEY AUTO_INCREMENT, |
|||
b INT NOT NULL, |
|||
c INT NOT NULL UNIQUE |
|||
) ENGINE=NDBCLUSTER AUTO_INCREMENT = 100; |
|||
CREATE TABLE t2 ( |
|||
pk INT NOT NULL PRIMARY KEY AUTO_INCREMENT, |
|||
b INT NOT NULL, |
|||
c INT NOT NULL UNIQUE |
|||
) ENGINE=MYISAM AUTO_INCREMENT = 100; |
|||
SET @@session.auto_increment_offset=5; |
|||
SET @@session.auto_increment_increment=10; |
|||
INSERT INTO t1 (b,c) VALUES (1,0),(2,1),(3,2); |
|||
INSERT INTO t2 (b,c) VALUES (1,0),(2,1),(3,2); |
|||
SELECT * FROM t1 ORDER BY pk; |
|||
pk b c |
|||
105 1 0 |
|||
115 2 1 |
|||
125 3 2 |
|||
SELECT COUNT(t1.pk) FROM t1, t2 WHERE t1.pk = t2.pk AND t1.b = t2.b AND t1.c = t1.c; |
|||
COUNT(t1.pk) |
|||
3 |
|||
DROP TABLE t1, t2; |
|||
SET @@session.auto_increment_offset=1; |
|||
SET @@session.auto_increment_increment=1; |
|||
set ndb_autoincrement_prefetch_sz = 32; |
|||
drop table if exists t1; |
|||
SET @@session.auto_increment_offset=1; |
|||
SET @@session.auto_increment_increment=1; |
|||
set ndb_autoincrement_prefetch_sz = 32; |
|||
create table t1 (a int not null auto_increment primary key) engine ndb; |
|||
insert into t1 values (NULL); |
|||
insert into t1 values (NULL); |
|||
select * from t1 order by a; |
|||
a |
|||
1 |
|||
33 |
|||
insert into t1 values (20); |
|||
insert into t1 values (NULL); |
|||
select * from t1 order by a; |
|||
a |
|||
1 |
|||
20 |
|||
33 |
|||
34 |
|||
insert into t1 values (35); |
|||
insert into t1 values (NULL); |
|||
insert into t1 values (NULL); |
|||
ERROR 23000: Duplicate entry '35' for key 1 |
|||
select * from t1 order by a; |
|||
a |
|||
1 |
|||
20 |
|||
21 |
|||
33 |
|||
34 |
|||
35 |
|||
insert into t1 values (100); |
|||
insert into t1 values (NULL); |
|||
insert into t1 values (NULL); |
|||
select * from t1 order by a; |
|||
a |
|||
1 |
|||
20 |
|||
21 |
|||
22 |
|||
33 |
|||
34 |
|||
35 |
|||
100 |
|||
101 |
|||
set auto_increment_offset = @old_auto_increment_offset; |
|||
set auto_increment_increment = @old_auto_increment_increment; |
|||
set ndb_autoincrement_prefetch_sz = @old_ndb_autoincrement_prefetch_sz; |
|||
drop table t1; |
|||
@ -0,0 +1,294 @@ |
|||
-- source include/have_ndb.inc |
|||
-- source include/have_multi_ndb.inc |
|||
-- source include/not_embedded.inc |
|||
|
|||
--disable_warnings |
|||
connection server1; |
|||
DROP TABLE IF EXISTS t1,t2; |
|||
connection server2; |
|||
DROP TABLE IF EXISTS t1; |
|||
connection server1; |
|||
--enable_warnings |
|||
|
|||
set @old_auto_increment_offset = @@session.auto_increment_offset; |
|||
set @old_auto_increment_increment = @@session.auto_increment_increment; |
|||
set @old_ndb_autoincrement_prefetch_sz = @@session.ndb_autoincrement_prefetch_sz; |
|||
|
|||
flush status; |
|||
|
|||
create table t1 (a int not null auto_increment primary key) engine ndb; |
|||
|
|||
# Step 1: Verify simple insert |
|||
insert into t1 values (NULL); |
|||
select * from t1 order by a; |
|||
|
|||
# Step 2: Verify simple update with higher than highest value causes |
|||
# next insert to use updated_value + 1 |
|||
update t1 set a = 5 where a = 1; |
|||
insert into t1 values (NULL); |
|||
select * from t1 order by a; |
|||
|
|||
# Step 3: Verify insert that inserts higher than highest value causes |
|||
# next insert to use inserted_value + 1 |
|||
insert into t1 values (7); |
|||
insert into t1 values (NULL); |
|||
select * from t1 order by a; |
|||
|
|||
# Step 4: Verify that insert into hole, lower than highest value doesn't |
|||
# affect next insert |
|||
insert into t1 values (2); |
|||
insert into t1 values (NULL); |
|||
select * from t1 order by a; |
|||
|
|||
# Step 5: Verify that update into hole, lower than highest value doesn't |
|||
# affect next insert |
|||
update t1 set a = 4 where a = 2; |
|||
insert into t1 values (NULL); |
|||
select * from t1 order by a; |
|||
|
|||
# Step 6: Verify that delete of highest value doesn't cause the next |
|||
# insert to reuse this value |
|||
delete from t1 where a = 10; |
|||
insert into t1 values (NULL); |
|||
select * from t1 order by a; |
|||
|
|||
# Step 7: Verify that REPLACE has the same effect as INSERT |
|||
replace t1 values (NULL); |
|||
select * from t1 order by a; |
|||
replace t1 values (15); |
|||
select * from t1 order by a; |
|||
replace into t1 values (NULL); |
|||
select * from t1 order by a; |
|||
|
|||
# Step 8: Verify that REPLACE has the same effect as UPDATE |
|||
replace t1 values (15); |
|||
select * from t1 order by a; |
|||
|
|||
# Step 9: Verify that IGNORE doesn't affect auto_increment |
|||
insert ignore into t1 values (NULL); |
|||
select * from t1 order by a; |
|||
insert ignore into t1 values (15), (NULL); |
|||
select * from t1 order by a; |
|||
|
|||
# Step 10: Verify that on duplicate key as UPDATE behaves as an |
|||
# UPDATE |
|||
insert into t1 values (15) |
|||
on duplicate key update a = 20; |
|||
insert into t1 values (NULL); |
|||
select * from t1 order by a; |
|||
|
|||
# Step 11: Verify that on duplicate key as INSERT behaves as INSERT |
|||
insert into t1 values (NULL) on duplicate key update a = 30; |
|||
select * from t1 order by a; |
|||
insert into t1 values (30) on duplicate key update a = 40; |
|||
select * from t1 order by a; |
|||
|
|||
#Step 12: Vefify INSERT IGNORE (bug#32055) |
|||
insert ignore into t1 values(600),(NULL),(NULL),(610),(NULL); |
|||
select * from t1 order by a; |
|||
drop table t1; |
|||
|
|||
#Step 13: Verify auto_increment of unique key |
|||
create table t1 (a int not null primary key, |
|||
b int not null unique auto_increment) engine ndb; |
|||
insert into t1 values (1, NULL); |
|||
insert into t1 values (3, NULL); |
|||
update t1 set b = 3 where a = 3; |
|||
insert into t1 values (4, NULL); |
|||
select * from t1 order by a; |
|||
drop table t1; |
|||
|
|||
#Step 14: Verify that auto_increment_increment and auto_increment_offset |
|||
# work as expected |
|||
|
|||
CREATE TABLE t1 ( |
|||
pk INT NOT NULL PRIMARY KEY AUTO_INCREMENT, |
|||
b INT NOT NULL, |
|||
c INT NOT NULL UNIQUE |
|||
) ENGINE=NDBCLUSTER; |
|||
|
|||
CREATE TABLE t2 ( |
|||
pk INT NOT NULL PRIMARY KEY AUTO_INCREMENT, |
|||
b INT NOT NULL, |
|||
c INT NOT NULL UNIQUE |
|||
) ENGINE=MYISAM; |
|||
|
|||
SET @@session.auto_increment_increment=10; |
|||
INSERT INTO t1 (b,c) VALUES (1,0),(2,1),(3,2); |
|||
INSERT INTO t2 (b,c) VALUES (1,0),(2,1),(3,2); |
|||
SELECT * FROM t1 ORDER BY pk; |
|||
SELECT COUNT(t1.pk) FROM t1, t2 WHERE t1.pk = t2.pk AND t1.b = t2.b AND t1.c = t1.c; |
|||
TRUNCATE t1; |
|||
TRUNCATE t2; |
|||
SET @@session.auto_increment_offset=5; |
|||
INSERT INTO t1 (b,c) VALUES (1,0),(2,1),(3,2); |
|||
INSERT INTO t1 (pk,b,c) VALUES (27,4,3),(NULL,5,4),(99,6,5),(NULL,7,6); |
|||
INSERT INTO t2 (b,c) VALUES (1,0),(2,1),(3,2); |
|||
INSERT INTO t2 (pk,b,c) VALUES (27,4,3),(NULL,5,4),(99,6,5),(NULL,7,6); |
|||
SELECT * FROM t1 ORDER BY pk; |
|||
SELECT COUNT(t1.pk) FROM t1, t2 WHERE t1.pk = t2.pk AND t1.b = t2.b AND t1.c = t1.c; |
|||
TRUNCATE t1; |
|||
TRUNCATE t2; |
|||
SET @@session.auto_increment_increment=2; |
|||
INSERT INTO t1 (b,c) VALUES (1,0),(2,1),(3,2); |
|||
INSERT INTO t2 (b,c) VALUES (1,0),(2,1),(3,2); |
|||
SELECT * FROM t1 ORDER BY pk; |
|||
SELECT COUNT(t1.pk) FROM t1, t2 WHERE t1.pk = t2.pk AND t1.b = t2.b AND t1.c = t1.c; |
|||
DROP TABLE t1, t2; |
|||
|
|||
CREATE TABLE t1 ( |
|||
pk INT NOT NULL PRIMARY KEY AUTO_INCREMENT, |
|||
b INT NOT NULL, |
|||
c INT NOT NULL UNIQUE |
|||
) ENGINE=NDBCLUSTER AUTO_INCREMENT = 7; |
|||
|
|||
CREATE TABLE t2 ( |
|||
pk INT NOT NULL PRIMARY KEY AUTO_INCREMENT, |
|||
b INT NOT NULL, |
|||
c INT NOT NULL UNIQUE |
|||
) ENGINE=MYISAM AUTO_INCREMENT = 7; |
|||
|
|||
SET @@session.auto_increment_offset=1; |
|||
SET @@session.auto_increment_increment=1; |
|||
INSERT INTO t1 (b,c) VALUES (1,0),(2,1),(3,2); |
|||
INSERT INTO t2 (b,c) VALUES (1,0),(2,1),(3,2); |
|||
SELECT * FROM t1 ORDER BY pk; |
|||
SELECT COUNT(t1.pk) FROM t1, t2 WHERE t1.pk = t2.pk AND t1.b = t2.b AND t1.c = t1.c; |
|||
DROP TABLE t1, t2; |
|||
|
|||
CREATE TABLE t1 ( |
|||
pk INT NOT NULL PRIMARY KEY AUTO_INCREMENT, |
|||
b INT NOT NULL, |
|||
c INT NOT NULL UNIQUE |
|||
) ENGINE=NDBCLUSTER AUTO_INCREMENT = 3; |
|||
|
|||
CREATE TABLE t2 ( |
|||
pk INT NOT NULL PRIMARY KEY AUTO_INCREMENT, |
|||
b INT NOT NULL, |
|||
c INT NOT NULL UNIQUE |
|||
) ENGINE=MYISAM AUTO_INCREMENT = 3; |
|||
|
|||
SET @@session.auto_increment_offset=5; |
|||
SET @@session.auto_increment_increment=10; |
|||
INSERT INTO t1 (b,c) VALUES (1,0),(2,1),(3,2); |
|||
INSERT INTO t2 (b,c) VALUES (1,0),(2,1),(3,2); |
|||
SELECT * FROM t1 ORDER BY pk; |
|||
SELECT COUNT(t1.pk) FROM t1, t2 WHERE t1.pk = t2.pk AND t1.b = t2.b AND t1.c = t1.c; |
|||
DROP TABLE t1, t2; |
|||
|
|||
CREATE TABLE t1 ( |
|||
pk INT NOT NULL PRIMARY KEY AUTO_INCREMENT, |
|||
b INT NOT NULL, |
|||
c INT NOT NULL UNIQUE |
|||
) ENGINE=NDBCLUSTER AUTO_INCREMENT = 7; |
|||
|
|||
CREATE TABLE t2 ( |
|||
pk INT NOT NULL PRIMARY KEY AUTO_INCREMENT, |
|||
b INT NOT NULL, |
|||
c INT NOT NULL UNIQUE |
|||
) ENGINE=MYISAM AUTO_INCREMENT = 7; |
|||
|
|||
SET @@session.auto_increment_offset=5; |
|||
SET @@session.auto_increment_increment=10; |
|||
INSERT INTO t1 (b,c) VALUES (1,0),(2,1),(3,2); |
|||
INSERT INTO t2 (b,c) VALUES (1,0),(2,1),(3,2); |
|||
SELECT * FROM t1 ORDER BY pk; |
|||
SELECT COUNT(t1.pk) FROM t1, t2 WHERE t1.pk = t2.pk AND t1.b = t2.b AND t1.c = t1.c; |
|||
DROP TABLE t1, t2; |
|||
|
|||
CREATE TABLE t1 ( |
|||
pk INT NOT NULL PRIMARY KEY AUTO_INCREMENT, |
|||
b INT NOT NULL, |
|||
c INT NOT NULL UNIQUE |
|||
) ENGINE=NDBCLUSTER AUTO_INCREMENT = 5; |
|||
|
|||
CREATE TABLE t2 ( |
|||
pk INT NOT NULL PRIMARY KEY AUTO_INCREMENT, |
|||
b INT NOT NULL, |
|||
c INT NOT NULL UNIQUE |
|||
) ENGINE=MYISAM AUTO_INCREMENT = 5; |
|||
|
|||
SET @@session.auto_increment_offset=5; |
|||
SET @@session.auto_increment_increment=10; |
|||
INSERT INTO t1 (b,c) VALUES (1,0),(2,1),(3,2); |
|||
INSERT INTO t2 (b,c) VALUES (1,0),(2,1),(3,2); |
|||
SELECT * FROM t1 ORDER BY pk; |
|||
SELECT COUNT(t1.pk) FROM t1, t2 WHERE t1.pk = t2.pk AND t1.b = t2.b AND t1.c = t1.c; |
|||
DROP TABLE t1, t2; |
|||
|
|||
CREATE TABLE t1 ( |
|||
pk INT NOT NULL PRIMARY KEY AUTO_INCREMENT, |
|||
b INT NOT NULL, |
|||
c INT NOT NULL UNIQUE |
|||
) ENGINE=NDBCLUSTER AUTO_INCREMENT = 100; |
|||
|
|||
CREATE TABLE t2 ( |
|||
pk INT NOT NULL PRIMARY KEY AUTO_INCREMENT, |
|||
b INT NOT NULL, |
|||
c INT NOT NULL UNIQUE |
|||
) ENGINE=MYISAM AUTO_INCREMENT = 100; |
|||
|
|||
SET @@session.auto_increment_offset=5; |
|||
SET @@session.auto_increment_increment=10; |
|||
INSERT INTO t1 (b,c) VALUES (1,0),(2,1),(3,2); |
|||
INSERT INTO t2 (b,c) VALUES (1,0),(2,1),(3,2); |
|||
SELECT * FROM t1 ORDER BY pk; |
|||
SELECT COUNT(t1.pk) FROM t1, t2 WHERE t1.pk = t2.pk AND t1.b = t2.b AND t1.c = t1.c; |
|||
DROP TABLE t1, t2; |
|||
|
|||
#Step 15: Now verify that behaviour on multiple MySQL Servers behave |
|||
# properly. Start by dropping table and recreating it to start |
|||
# counters and id caches from zero again. |
|||
--disable_warnings |
|||
connection server2; |
|||
SET @@session.auto_increment_offset=1; |
|||
SET @@session.auto_increment_increment=1; |
|||
set ndb_autoincrement_prefetch_sz = 32; |
|||
drop table if exists t1; |
|||
connection server1; |
|||
SET @@session.auto_increment_offset=1; |
|||
SET @@session.auto_increment_increment=1; |
|||
set ndb_autoincrement_prefetch_sz = 32; |
|||
--enable_warnings |
|||
|
|||
|
|||
create table t1 (a int not null auto_increment primary key) engine ndb; |
|||
# Basic test, ensure that the second server gets a new range. |
|||
#Generate record with key = 1 |
|||
insert into t1 values (NULL); |
|||
connection server2; |
|||
#Generate record with key = 33 |
|||
insert into t1 values (NULL); |
|||
connection server1; |
|||
select * from t1 order by a; |
|||
|
|||
#This insert should not affect the range of the second server |
|||
insert into t1 values (20); |
|||
connection server2; |
|||
insert into t1 values (NULL); |
|||
select * from t1 order by a; |
|||
|
|||
connection server1; |
|||
#This insert should remove cached values but also skip values already |
|||
#taken by server2, given that there is no method of communicating with |
|||
#the other server it should also cause a conflict |
|||
connection server1; |
|||
|
|||
insert into t1 values (35); |
|||
insert into t1 values (NULL); |
|||
connection server2; |
|||
--error ER_DUP_ENTRY |
|||
insert into t1 values (NULL); |
|||
select * from t1 order by a; |
|||
|
|||
insert into t1 values (100); |
|||
insert into t1 values (NULL); |
|||
connection server1; |
|||
insert into t1 values (NULL); |
|||
select * from t1 order by a; |
|||
|
|||
set auto_increment_offset = @old_auto_increment_offset; |
|||
set auto_increment_increment = @old_auto_increment_increment; |
|||
set ndb_autoincrement_prefetch_sz = @old_ndb_autoincrement_prefetch_sz; |
|||
|
|||
drop table t1; |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue