Skip to content

Commit 1c7c343

Browse files
authored
Add parsing for ALTER TABLE tbl_name {DISABLE | ENABLE} KEYS (#2205)
1 parent 48d195b commit 1c7c343

File tree

4 files changed

+40
-1
lines changed

4 files changed

+40
-1
lines changed

src/main/java/net/sf/jsqlparser/statement/alter/AlterExpression.java

+4
Original file line numberDiff line numberDiff line change
@@ -509,6 +509,10 @@ public String toString() {
509509
b.append("DISCARD TABLESPACE");
510510
} else if (operation == AlterOperation.IMPORT_TABLESPACE) {
511511
b.append("IMPORT TABLESPACE");
512+
} else if (operation == AlterOperation.DISABLE_KEYS) {
513+
b.append("DISABLE KEYS");
514+
} else if (operation == AlterOperation.ENABLE_KEYS) {
515+
b.append("ENABLE KEYS");
512516
} else if (operation == AlterOperation.ENGINE) {
513517
b.append("ENGINE ");
514518
if (useEqual) {

src/main/java/net/sf/jsqlparser/statement/alter/AlterOperation.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
package net.sf.jsqlparser.statement.alter;
1111

1212
public enum AlterOperation {
13-
ADD, ALTER, DROP, DROP_PRIMARY_KEY, DROP_UNIQUE, DROP_FOREIGN_KEY, MODIFY, CHANGE, CONVERT, COLLATE, ALGORITHM, RENAME, RENAME_TABLE, RENAME_INDEX, RENAME_KEY, RENAME_CONSTRAINT, COMMENT, COMMENT_WITH_EQUAL_SIGN, UNSPECIFIC, ADD_PARTITION, DROP_PARTITION, TRUNCATE_PARTITION, SET_TABLE_OPTION, ENGINE, FORCE, LOCK, DISCARD_TABLESPACE, IMPORT_TABLESPACE;
13+
ADD, ALTER, DROP, DROP_PRIMARY_KEY, DROP_UNIQUE, DROP_FOREIGN_KEY, MODIFY, CHANGE, CONVERT, COLLATE, ALGORITHM, RENAME, RENAME_TABLE, RENAME_INDEX, RENAME_KEY, RENAME_CONSTRAINT, COMMENT, COMMENT_WITH_EQUAL_SIGN, UNSPECIFIC, ADD_PARTITION, DROP_PARTITION, TRUNCATE_PARTITION, SET_TABLE_OPTION, ENGINE, FORCE, LOCK, DISCARD_TABLESPACE, IMPORT_TABLESPACE, DISABLE_KEYS, ENABLE_KEYS;
1414

1515
public static AlterOperation from(String operation) {
1616
return Enum.valueOf(AlterOperation.class, operation.toUpperCase());

src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt

+14
Original file line numberDiff line numberDiff line change
@@ -8110,6 +8110,20 @@ AlterExpression AlterExpression():
81108110
}
81118111
)
81128112
|
8113+
(
8114+
(tk = <K_DISABLE>)
8115+
(tk2 = <K_KEYS>) {
8116+
alterExp.setOperation(AlterOperation.DISABLE_KEYS);
8117+
}
8118+
)
8119+
|
8120+
(
8121+
(tk = <K_ENABLE>)
8122+
(tk2 = <K_KEYS>) {
8123+
alterExp.setOperation(AlterOperation.ENABLE_KEYS);
8124+
}
8125+
)
8126+
|
81138127
(<K_AUTO_INCREMENT> {alterExp.setOperation(AlterOperation.SET_TABLE_OPTION);}
81148128
["=" { alterExp.setUseEqual(true);} ]
81158129
tk=<S_LONG> {

src/test/java/net/sf/jsqlparser/statement/alter/AlterTest.java

+21
Original file line numberDiff line numberDiff line change
@@ -1479,4 +1479,25 @@ public void testImportTablespace() throws JSQLParserException {
14791479
alter.getAlterExpressions().get(0).getOperation().toString());
14801480
assertSqlCanBeParsedAndDeparsed(sql);
14811481
}
1482+
1483+
@Test
1484+
public void testAlterTableKeys() throws JSQLParserException {
1485+
// Test for DISABLE KEYS
1486+
String sqlDisable = "ALTER TABLE tbl_name DISABLE KEYS";
1487+
Statement stmtDisable = CCJSqlParserUtil.parse(sqlDisable);
1488+
assertTrue(stmtDisable instanceof Alter);
1489+
Alter alterDisable = (Alter) stmtDisable;
1490+
assertEquals("tbl_name", alterDisable.getTable().getFullyQualifiedName());
1491+
AlterExpression alterExpDisable = alterDisable.getAlterExpressions().get(0);
1492+
assertEquals(AlterOperation.DISABLE_KEYS, alterExpDisable.getOperation());
1493+
1494+
// Test for ENABLE KEYS
1495+
String sqlEnable = "ALTER TABLE tbl_name ENABLE KEYS";
1496+
Statement stmtEnable = CCJSqlParserUtil.parse(sqlEnable);
1497+
assertTrue(stmtEnable instanceof Alter);
1498+
Alter alterEnable = (Alter) stmtEnable;
1499+
assertEquals("tbl_name", alterEnable.getTable().getFullyQualifiedName());
1500+
AlterExpression alterExpEnable = alterEnable.getAlterExpressions().get(0);
1501+
assertEquals(AlterOperation.ENABLE_KEYS, alterExpEnable.getOperation());
1502+
}
14821503
}

0 commit comments

Comments
 (0)