1--source include/have_rocksdb.inc
2
3#
4# Basic syntax related to primary keys
5#
6
7CREATE TABLE t1 (a INT PRIMARY KEY,
8  b CHAR(8)
9) ENGINE=ROCKSDB;
10
11--replace_column 7 #
12SHOW KEYS IN t1;
13
14INSERT INTO t1 (a,b) VALUES (1,'a'),(2,'b');
15--error ER_DUP_ENTRY
16INSERT INTO t1 (a,b) VALUES (1,'c');
17
18DROP TABLE t1;
19
20--error ER_MULTIPLE_PRI_KEY
21CREATE TABLE t1 (a INT PRIMARY KEY,
22  b CHAR(8) PRIMARY KEY
23) ENGINE=ROCKSDB;
24
25CREATE TABLE t1 (a INT,
26  b CHAR(8),
27  PRIMARY KEY (a,b)
28) ENGINE=ROCKSDB;
29
30--replace_column 7 #
31SHOW INDEX IN t1;
32INSERT INTO t1 (a,b) VALUES (1,'a'),(1,'b'),(2,'a'),(2,'b');
33--error ER_DUP_ENTRY
34INSERT INTO t1 (a,b) VALUES (1,'b');
35  DROP TABLE t1;
36
37# KEY in a column definition means PK!
38
39CREATE TABLE t1 (a INT KEY,
40  b CHAR(8),
41  KEY (b)
42) ENGINE=ROCKSDB;
43
44--replace_column 7 #
45SHOW INDEX IN t1;
46DROP TABLE t1;
47
48CREATE TABLE t1 (a INT,
49  b CHAR(8) PRIMARY KEY
50) ENGINE=ROCKSDB;
51
52--replace_column 7 #
53SHOW INDEX IN t1;
54
55--error ER_MULTIPLE_PRI_KEY
56ALTER TABLE t1 ADD CONSTRAINT PRIMARY KEY pk (a);
57--replace_column 7 #
58SHOW KEYS IN t1;
59DROP TABLE t1;
60
61#
62# Test index prefix length limits.
63#
64set @orig_rocksdb_large_prefix=@@global.rocksdb_large_prefix;
65set @@global.rocksdb_large_prefix=0;
66
67CREATE TABLE t1 (
68  a BLOB(1024),
69  PRIMARY KEY (a(767))
70) ENGINE=ROCKSDB;
71DROP TABLE t1;
72
73--error ER_TOO_LONG_KEY
74CREATE TABLE t1 (
75  a BLOB(1024),
76  PRIMARY KEY (a(768))
77) ENGINE=ROCKSDB;
78
79set @@global.rocksdb_large_prefix=1;
80
81CREATE TABLE t1 (
82  a BLOB(4096),
83  PRIMARY KEY (a(3072))
84) ENGINE=ROCKSDB;
85DROP TABLE t1;
86
87--error ER_TOO_LONG_KEY
88CREATE TABLE t1 (
89  a BLOB(4096),
90  PRIMARY KEY (a(3073))
91) ENGINE=ROCKSDB;
92
93set @@global.rocksdb_large_prefix=@orig_rocksdb_large_prefix;
94