Skip to content

Commit

Permalink
fix(tianmu): fix ALTER table DROP primary key is forbidden (#1034)
Browse files Browse the repository at this point in the history
  • Loading branch information
adofsauron committed Dec 2, 2022
1 parent 7f96549 commit 5fdda07
Show file tree
Hide file tree
Showing 3 changed files with 128 additions and 0 deletions.
26 changes: 26 additions & 0 deletions mysql-test/suite/tianmu/r/issue1034.result
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
USE test;
set global tianmu_index_search=on;
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (id int) ENGINE=TIANMU;
ALTER TABLE t1 ADD PRIMARY KEY(id);
ALTER TABLE t1 DROP PRIMARY KEY;
ALTER TABLE t1 ADD PRIMARY KEY(id);
ALTER TABLE t1 DROP PRIMARY KEY;
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (id int PRIMARY KEY) ENGINE=TIANMU;
ALTER TABLE t1 DROP PRIMARY KEY;
ALTER TABLE t1 ADD PRIMARY KEY(id);
ALTER TABLE t1 DROP PRIMARY KEY;
set global tianmu_index_search=off;
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (id int) ENGINE=TIANMU;
ALTER TABLE t1 ADD PRIMARY KEY(id);
ALTER TABLE t1 DROP PRIMARY KEY;
ALTER TABLE t1 ADD PRIMARY KEY(id);
ALTER TABLE t1 DROP PRIMARY KEY;
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (id int PRIMARY KEY) ENGINE=TIANMU;
ALTER TABLE t1 DROP PRIMARY KEY;
ALTER TABLE t1 ADD PRIMARY KEY(id);
ALTER TABLE t1 DROP PRIMARY KEY;
DROP TABLE t1;
98 changes: 98 additions & 0 deletions mysql-test/suite/tianmu/t/issue1034.test
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
--source include/have_tianmu.inc

USE test;

--disable_warnings

## test with enable the tianmu PRIMARY KEY index

set global tianmu_index_search=on;

## DDL no PRIMARY KEY

DROP TABLE IF EXISTS t1;

CREATE TABLE t1 (id int) ENGINE=TIANMU;

## ADD pk

ALTER TABLE t1 ADD PRIMARY KEY(id);

## DROP pk

ALTER TABLE t1 DROP PRIMARY KEY;

## re ADD pk

ALTER TABLE t1 ADD PRIMARY KEY(id);

## re DROP pk

ALTER TABLE t1 DROP PRIMARY KEY;

## DDL has PRIMARY KEY

DROP TABLE IF EXISTS t1;

CREATE TABLE t1 (id int PRIMARY KEY) ENGINE=TIANMU;

## DROP pk

ALTER TABLE t1 DROP PRIMARY KEY;

## re ADD pk

ALTER TABLE t1 ADD PRIMARY KEY(id);

## re DROP pk

ALTER TABLE t1 DROP PRIMARY KEY;

## test with disable the tianmu PRIMARY KEY index

set global tianmu_index_search=off;

## DDL no PRIMARY KEY

DROP TABLE IF EXISTS t1;

CREATE TABLE t1 (id int) ENGINE=TIANMU;

## ADD pk

ALTER TABLE t1 ADD PRIMARY KEY(id);

## DROP pk

ALTER TABLE t1 DROP PRIMARY KEY;

## re ADD pk

ALTER TABLE t1 ADD PRIMARY KEY(id);

## re DROP pk

ALTER TABLE t1 DROP PRIMARY KEY;

## DDL has PRIMARY KEY

DROP TABLE IF EXISTS t1;

CREATE TABLE t1 (id int PRIMARY KEY) ENGINE=TIANMU;

## DROP pk

ALTER TABLE t1 DROP PRIMARY KEY;

## re ADD pk

ALTER TABLE t1 ADD PRIMARY KEY(id);

## re DROP pk

ALTER TABLE t1 DROP PRIMARY KEY;

## clean test TABLE

DROP TABLE t1;

4 changes: 4 additions & 0 deletions storage/tianmu/handler/ha_tianmu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1573,6 +1573,10 @@ enum_alter_inplace_result ha_tianmu::check_if_supported_inplace_alter([[maybe_un
// support alter table: mix add/drop column、order column and other syntaxs to use
if (ha_alter_info->handler_flags & TIANMU_SUPPORTED_ALTER_ADD_DROP_ORDER)
DBUG_RETURN(HA_ALTER_INPLACE_NOT_SUPPORTED);
if (ha_alter_info->handler_flags & Alter_inplace_info::ADD_PK_INDEX)
DBUG_RETURN(HA_ALTER_INPLACE_NOT_SUPPORTED);
if (ha_alter_info->handler_flags & Alter_inplace_info::DROP_PK_INDEX)
DBUG_RETURN(HA_ALTER_INPLACE_NOT_SUPPORTED);

DBUG_RETURN(HA_ALTER_ERROR);
}
Expand Down

0 comments on commit 5fdda07

Please sign in to comment.