84 lines
2.5 KiB
Plaintext
84 lines
2.5 KiB
Plaintext
--source suite/xengine/include/have_xengine.inc
|
|
--source include/have_debug.inc
|
|
|
|
--disable_warnings
|
|
drop table if exists t1;
|
|
--enable_warnings
|
|
|
|
# test adding duplicate value before unique index
|
|
CREATE TABLE t1 (a INT DEFAULT 0, b INT, PRIMARY KEY ka(a)) ENGINE=XEngine;
|
|
INSERT INTO t1 (a, b) VALUES (1, 5);
|
|
INSERT INTO t1 (a, b) VALUES (2, 6);
|
|
INSERT INTO t1 (a, b) VALUES (3, 7);
|
|
|
|
INSERT INTO t1 (a,b) VALUES (4,5);
|
|
|
|
# should cause error here, duplicate value on b
|
|
--error 1062
|
|
ALTER TABLE t1 ADD UNIQUE INDEX kb(b), ALGORITHM=INPLACE;
|
|
|
|
SHOW CREATE TABLE t1;
|
|
DROP TABLE t1;
|
|
|
|
# test dup value AFTER unique index
|
|
CREATE TABLE t1 (a INT DEFAULT 0, b INT, PRIMARY KEY ka(a)) ENGINE=XEngine;
|
|
INSERT INTO t1 (a, b) VALUES (1, 5);
|
|
INSERT INTO t1 (a, b) VALUES (2, 6);
|
|
INSERT INTO t1 (a, b) VALUES (3, 7);
|
|
ALTER TABLE t1 ADD UNIQUE INDEX kb(b), ALGORITHM=INPLACE;
|
|
|
|
# should error here, duplicate value on b
|
|
--error 1062
|
|
INSERT INTO t1 (a,b) VALUES (4,5);
|
|
|
|
# should succeed
|
|
INSERT INTO t1 (a,b) VALUES (5,8);
|
|
|
|
SHOW CREATE TABLE t1;
|
|
SELECT * FROM t1 FORCE INDEX(kb);
|
|
DROP TABLE t1;
|
|
|
|
# test what happens when duplicate nulls exist
|
|
CREATE TABLE t1 (a INT DEFAULT 0, b INT, PRIMARY KEY ka(a)) ENGINE=XEngine;
|
|
INSERT INTO t1 (a, b) VALUES (1, 5);
|
|
INSERT INTO t1 (a, b) VALUES (2, NULL);
|
|
INSERT INTO t1 (a, b) VALUES (3, NULL);
|
|
|
|
# should pass, because in MySQL we allow multiple NULLS in unique key
|
|
ALTER TABLE t1 ADD UNIQUE INDEX kb(b), ALGORITHM=INPLACE;
|
|
INSERT INTO t1 (a, b) VALUES (4, NULL);
|
|
|
|
SHOW CREATE TABLE t1;
|
|
SELECT COUNT(*) FROM t1 FORCE INDEX(kb);
|
|
DROP TABLE t1;
|
|
|
|
## test case with multi-part key with nulls
|
|
CREATE TABLE t1 (a INT DEFAULT 0, b INT, c INT, PRIMARY KEY ka(a)) ENGINE=XEngine;
|
|
INSERT INTO t1 (a,b,c) VALUES (1,1,NULL);
|
|
INSERT INTO t1 (a,b,c) VALUES (2,1,NULL);
|
|
INSERT INTO t1 (a,b,c) VALUES (3,1,NULL);
|
|
INSERT INTO t1 (a,b,c) VALUES (4,1,5);
|
|
|
|
# should pass
|
|
ALTER TABLE t1 ADD UNIQUE INDEX kbc(b,c), ALGORITHM=INPLACE;
|
|
|
|
SHOW CREATE TABLE t1;
|
|
SELECT COUNT(*) FROM t1 FORCE INDEX(kbc);
|
|
DROP TABLE t1;
|
|
|
|
## test case with table w/ no primary key, and we try to add unique key
|
|
CREATE TABLE t1 (a INT, b INT) ENGINE=XEngine;
|
|
INSERT INTO t1 (a, b) VALUES (1, 5);
|
|
INSERT INTO t1 (a, b) VALUES (2, 6);
|
|
INSERT INTO t1 (a, b) VALUES (3, 7);
|
|
|
|
# should succeed, we can add unique index on table w/ no pk
|
|
ALTER TABLE t1 ADD UNIQUE INDEX kb(b);
|
|
INSERT INTO t1 (a, b) VALUES (4, 8);
|
|
--error ER_DUP_ENTRY
|
|
INSERT INTO t1 (a, b) VALUES (5, 5);
|
|
|
|
SHOW CREATE TABLE t1;
|
|
DROP TABLE t1;
|
|
--source suite/xengine/include/check_xengine_log_error.inc
|