Commit 7d4ed302 authored by mskold@mysql.com's avatar mskold@mysql.com

Added more tests for bug#18040: Create unique index cause error 4243

parent 5c950043
drop table if exists t1, t2, t3, t4, t5, t6, t7, t8; drop table if exists t1, t2, t3, t4, t5, t6, t7, t8;
CREATE TABLE t1 ( CREATE TABLE t1 (
a int unsigned NOT NULL PRIMARY KEY, a int NOT NULL PRIMARY KEY,
b int unsigned not null, b int not null,
c int unsigned, c int,
UNIQUE(b) UNIQUE ib(b)
) engine=ndbcluster; ) engine=ndbcluster;
insert t1 values(1, 2, 3), (2, 3, 5), (3, 4, 6), (4, 5, 8), (5,6, 2), (6,7, 2); insert t1 values(1, 2, 3), (2, 3, 5), (3, 4, 6), (4, 5, 8), (5,6, 2), (6,7, 2);
select * from t1 order by b; select * from t1 order by b;
...@@ -22,7 +22,7 @@ select * from t1 where b = 4 order by a; ...@@ -22,7 +22,7 @@ select * from t1 where b = 4 order by a;
a b c a b c
3 4 6 3 4 6
insert into t1 values(8, 2, 3); insert into t1 values(8, 2, 3);
ERROR 23000: Duplicate entry '8' for key 'PRIMARY' ERROR 23000: Can't write, because of unique constraint, to table 't1'
select * from t1 order by a; select * from t1 order by a;
a b c a b c
1 2 3 1 2 3
...@@ -43,6 +43,10 @@ a b c ...@@ -43,6 +43,10 @@ a b c
6 7 2 6 7 2
7 8 3 7 8 3
8 2 3 8 2 3
alter table t1 drop index ib;
insert into t1 values(1, 2, 3);
create unique index ib on t1(b);
ERROR 23000: Can't write, because of unique constraint, to table 't1'
drop table t1; drop table t1;
CREATE TABLE t1 ( CREATE TABLE t1 (
a int unsigned NOT NULL PRIMARY KEY, a int unsigned NOT NULL PRIMARY KEY,
...@@ -89,7 +93,7 @@ a b c ...@@ -89,7 +93,7 @@ a b c
1 1 1 1 1 1
4 4 NULL 4 4 NULL
insert into t1 values(5,1,1); insert into t1 values(5,1,1);
ERROR 23000: Duplicate entry '5' for key 'PRIMARY' ERROR 23000: Can't write, because of unique constraint, to table 't1'
drop table t1; drop table t1;
CREATE TABLE t2 ( CREATE TABLE t2 (
a int unsigned NOT NULL PRIMARY KEY, a int unsigned NOT NULL PRIMARY KEY,
...@@ -112,7 +116,7 @@ select * from t2 where b = 4 order by a; ...@@ -112,7 +116,7 @@ select * from t2 where b = 4 order by a;
a b c a b c
3 4 6 3 4 6
insert into t2 values(8, 2, 3); insert into t2 values(8, 2, 3);
ERROR 23000: Duplicate entry '8' for key 'PRIMARY' ERROR 23000: Can't write, because of unique constraint, to table 't2'
select * from t2 order by a; select * from t2 order by a;
a b c a b c
1 2 3 1 2 3
...@@ -177,7 +181,7 @@ pk a ...@@ -177,7 +181,7 @@ pk a
3 NULL 3 NULL
4 4 4 4
insert into t1 values (5,0); insert into t1 values (5,0);
ERROR 23000: Duplicate entry '5' for key 'PRIMARY' ERROR 23000: Can't write, because of unique constraint, to table 't1'
select * from t1 order by pk; select * from t1 order by pk;
pk a pk a
-1 NULL -1 NULL
...@@ -210,7 +214,7 @@ pk a b c ...@@ -210,7 +214,7 @@ pk a b c
0 NULL 18 NULL 0 NULL 18 NULL
1 3 19 abc 1 3 19 abc
insert into t2 values(2,3,19,'abc'); insert into t2 values(2,3,19,'abc');
ERROR 23000: Duplicate entry '2' for key 'PRIMARY' ERROR 23000: Can't write, because of unique constraint, to table 't2'
select * from t2 order by pk; select * from t2 order by pk;
pk a b c pk a b c
-1 1 17 NULL -1 1 17 NULL
...@@ -630,7 +634,7 @@ create table t1 (a int primary key, b varchar(1000) not null, unique key (b)) ...@@ -630,7 +634,7 @@ create table t1 (a int primary key, b varchar(1000) not null, unique key (b))
engine=ndb charset=utf8; engine=ndb charset=utf8;
insert into t1 values (1, repeat(_utf8 0xe288ab6474, 200)); insert into t1 values (1, repeat(_utf8 0xe288ab6474, 200));
insert into t1 values (2, repeat(_utf8 0xe288ab6474, 200)); insert into t1 values (2, repeat(_utf8 0xe288ab6474, 200));
ERROR 23000: Duplicate entry '2' for key 'PRIMARY' ERROR 23000: Can't write, because of unique constraint, to table 't1'
select a, sha1(b) from t1; select a, sha1(b) from t1;
a sha1(b) a sha1(b)
1 08f5d02c8b8bc244f275bdfc22c42c5cab0d9d7d 1 08f5d02c8b8bc244f275bdfc22c42c5cab0d9d7d
......
...@@ -10,10 +10,10 @@ drop table if exists t1, t2, t3, t4, t5, t6, t7, t8; ...@@ -10,10 +10,10 @@ drop table if exists t1, t2, t3, t4, t5, t6, t7, t8;
# #
CREATE TABLE t1 ( CREATE TABLE t1 (
a int unsigned NOT NULL PRIMARY KEY, a int NOT NULL PRIMARY KEY,
b int unsigned not null, b int not null,
c int unsigned, c int,
UNIQUE(b) UNIQUE ib(b)
) engine=ndbcluster; ) engine=ndbcluster;
insert t1 values(1, 2, 3), (2, 3, 5), (3, 4, 6), (4, 5, 8), (5,6, 2), (6,7, 2); insert t1 values(1, 2, 3), (2, 3, 5), (3, 4, 6), (4, 5, 8), (5,6, 2), (6,7, 2);
...@@ -22,13 +22,19 @@ select * from t1 where b = 4 order by b; ...@@ -22,13 +22,19 @@ select * from t1 where b = 4 order by b;
insert into t1 values(7,8,3); insert into t1 values(7,8,3);
select * from t1 where b = 4 order by a; select * from t1 where b = 4 order by a;
-- error 1062 -- error 1169
insert into t1 values(8, 2, 3); insert into t1 values(8, 2, 3);
select * from t1 order by a; select * from t1 order by a;
delete from t1 where a = 1; delete from t1 where a = 1;
insert into t1 values(8, 2, 3); insert into t1 values(8, 2, 3);
select * from t1 order by a; select * from t1 order by a;
alter table t1 drop index ib;
sleep 10;
insert into t1 values(1, 2, 3);
--error 1169
create unique index ib on t1(b);
drop table t1; drop table t1;
# #
...@@ -53,7 +59,7 @@ select * from t1 use index (bc) where b IS NULL and c IS NULL order by a; ...@@ -53,7 +59,7 @@ select * from t1 use index (bc) where b IS NULL and c IS NULL order by a;
select * from t1 use index (bc) where b IS NULL and c = 2 order by a; select * from t1 use index (bc) where b IS NULL and c = 2 order by a;
select * from t1 use index (bc) where b < 4 order by a; select * from t1 use index (bc) where b < 4 order by a;
select * from t1 use index (bc) where b IS NOT NULL order by a; select * from t1 use index (bc) where b IS NOT NULL order by a;
-- error 1062 -- error 1169
insert into t1 values(5,1,1); insert into t1 values(5,1,1);
drop table t1; drop table t1;
...@@ -76,7 +82,7 @@ select * from t2 where c = 6; ...@@ -76,7 +82,7 @@ select * from t2 where c = 6;
insert into t2 values(7,8,3); insert into t2 values(7,8,3);
select * from t2 where b = 4 order by a; select * from t2 where b = 4 order by a;
-- error 1062 -- error 1169
insert into t2 values(8, 2, 3); insert into t2 values(8, 2, 3);
select * from t2 order by a; select * from t2 order by a;
delete from t2 where a = 1; delete from t2 where a = 1;
...@@ -127,7 +133,7 @@ insert into t1 values (-1,NULL), (0,0), (1,NULL),(2,2),(3,NULL),(4,4); ...@@ -127,7 +133,7 @@ insert into t1 values (-1,NULL), (0,0), (1,NULL),(2,2),(3,NULL),(4,4);
select * from t1 order by pk; select * from t1 order by pk;
--error 1062 --error 1169
insert into t1 values (5,0); insert into t1 values (5,0);
select * from t1 order by pk; select * from t1 order by pk;
delete from t1 where a = 0; delete from t1 where a = 0;
...@@ -146,7 +152,7 @@ insert into t2 values (-1,1,17,NULL),(0,NULL,18,NULL),(1,3,19,'abc'); ...@@ -146,7 +152,7 @@ insert into t2 values (-1,1,17,NULL),(0,NULL,18,NULL),(1,3,19,'abc');
select * from t2 order by pk; select * from t2 order by pk;
--error 1062 --error 1169
insert into t2 values(2,3,19,'abc'); insert into t2 values(2,3,19,'abc');
select * from t2 order by pk; select * from t2 order by pk;
delete from t2 where c IS NOT NULL; delete from t2 where c IS NOT NULL;
...@@ -315,7 +321,7 @@ create table t1 (a int primary key, b varchar(1000) not null, unique key (b)) ...@@ -315,7 +321,7 @@ create table t1 (a int primary key, b varchar(1000) not null, unique key (b))
engine=ndb charset=utf8; engine=ndb charset=utf8;
insert into t1 values (1, repeat(_utf8 0xe288ab6474, 200)); insert into t1 values (1, repeat(_utf8 0xe288ab6474, 200));
--error 1062 --error 1169
insert into t1 values (2, repeat(_utf8 0xe288ab6474, 200)); insert into t1 values (2, repeat(_utf8 0xe288ab6474, 200));
select a, sha1(b) from t1; select a, sha1(b) from t1;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment