Skip to content

Commit 5fdda07

Browse files
committed
fix(tianmu): fix ALTER table DROP primary key is forbidden (#1034)
1 parent 7f96549 commit 5fdda07

3 files changed

Lines changed: 128 additions & 0 deletions

File tree

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
USE test;
2+
set global tianmu_index_search=on;
3+
DROP TABLE IF EXISTS t1;
4+
CREATE TABLE t1 (id int) ENGINE=TIANMU;
5+
ALTER TABLE t1 ADD PRIMARY KEY(id);
6+
ALTER TABLE t1 DROP PRIMARY KEY;
7+
ALTER TABLE t1 ADD PRIMARY KEY(id);
8+
ALTER TABLE t1 DROP PRIMARY KEY;
9+
DROP TABLE IF EXISTS t1;
10+
CREATE TABLE t1 (id int PRIMARY KEY) ENGINE=TIANMU;
11+
ALTER TABLE t1 DROP PRIMARY KEY;
12+
ALTER TABLE t1 ADD PRIMARY KEY(id);
13+
ALTER TABLE t1 DROP PRIMARY KEY;
14+
set global tianmu_index_search=off;
15+
DROP TABLE IF EXISTS t1;
16+
CREATE TABLE t1 (id int) ENGINE=TIANMU;
17+
ALTER TABLE t1 ADD PRIMARY KEY(id);
18+
ALTER TABLE t1 DROP PRIMARY KEY;
19+
ALTER TABLE t1 ADD PRIMARY KEY(id);
20+
ALTER TABLE t1 DROP PRIMARY KEY;
21+
DROP TABLE IF EXISTS t1;
22+
CREATE TABLE t1 (id int PRIMARY KEY) ENGINE=TIANMU;
23+
ALTER TABLE t1 DROP PRIMARY KEY;
24+
ALTER TABLE t1 ADD PRIMARY KEY(id);
25+
ALTER TABLE t1 DROP PRIMARY KEY;
26+
DROP TABLE t1;
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
--source include/have_tianmu.inc
2+
3+
USE test;
4+
5+
--disable_warnings
6+
7+
## test with enable the tianmu PRIMARY KEY index
8+
9+
set global tianmu_index_search=on;
10+
11+
## DDL no PRIMARY KEY
12+
13+
DROP TABLE IF EXISTS t1;
14+
15+
CREATE TABLE t1 (id int) ENGINE=TIANMU;
16+
17+
## ADD pk
18+
19+
ALTER TABLE t1 ADD PRIMARY KEY(id);
20+
21+
## DROP pk
22+
23+
ALTER TABLE t1 DROP PRIMARY KEY;
24+
25+
## re ADD pk
26+
27+
ALTER TABLE t1 ADD PRIMARY KEY(id);
28+
29+
## re DROP pk
30+
31+
ALTER TABLE t1 DROP PRIMARY KEY;
32+
33+
## DDL has PRIMARY KEY
34+
35+
DROP TABLE IF EXISTS t1;
36+
37+
CREATE TABLE t1 (id int PRIMARY KEY) ENGINE=TIANMU;
38+
39+
## DROP pk
40+
41+
ALTER TABLE t1 DROP PRIMARY KEY;
42+
43+
## re ADD pk
44+
45+
ALTER TABLE t1 ADD PRIMARY KEY(id);
46+
47+
## re DROP pk
48+
49+
ALTER TABLE t1 DROP PRIMARY KEY;
50+
51+
## test with disable the tianmu PRIMARY KEY index
52+
53+
set global tianmu_index_search=off;
54+
55+
## DDL no PRIMARY KEY
56+
57+
DROP TABLE IF EXISTS t1;
58+
59+
CREATE TABLE t1 (id int) ENGINE=TIANMU;
60+
61+
## ADD pk
62+
63+
ALTER TABLE t1 ADD PRIMARY KEY(id);
64+
65+
## DROP pk
66+
67+
ALTER TABLE t1 DROP PRIMARY KEY;
68+
69+
## re ADD pk
70+
71+
ALTER TABLE t1 ADD PRIMARY KEY(id);
72+
73+
## re DROP pk
74+
75+
ALTER TABLE t1 DROP PRIMARY KEY;
76+
77+
## DDL has PRIMARY KEY
78+
79+
DROP TABLE IF EXISTS t1;
80+
81+
CREATE TABLE t1 (id int PRIMARY KEY) ENGINE=TIANMU;
82+
83+
## DROP pk
84+
85+
ALTER TABLE t1 DROP PRIMARY KEY;
86+
87+
## re ADD pk
88+
89+
ALTER TABLE t1 ADD PRIMARY KEY(id);
90+
91+
## re DROP pk
92+
93+
ALTER TABLE t1 DROP PRIMARY KEY;
94+
95+
## clean test TABLE
96+
97+
DROP TABLE t1;
98+

storage/tianmu/handler/ha_tianmu.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1573,6 +1573,10 @@ enum_alter_inplace_result ha_tianmu::check_if_supported_inplace_alter([[maybe_un
15731573
// support alter table: mix add/drop column、order column and other syntaxs to use
15741574
if (ha_alter_info->handler_flags & TIANMU_SUPPORTED_ALTER_ADD_DROP_ORDER)
15751575
DBUG_RETURN(HA_ALTER_INPLACE_NOT_SUPPORTED);
1576+
if (ha_alter_info->handler_flags & Alter_inplace_info::ADD_PK_INDEX)
1577+
DBUG_RETURN(HA_ALTER_INPLACE_NOT_SUPPORTED);
1578+
if (ha_alter_info->handler_flags & Alter_inplace_info::DROP_PK_INDEX)
1579+
DBUG_RETURN(HA_ALTER_INPLACE_NOT_SUPPORTED);
15761580

15771581
DBUG_RETURN(HA_ALTER_ERROR);
15781582
}

0 commit comments

Comments
 (0)