diff --git a/src/main/java/net/sf/jsqlparser/statement/alter/AlterExpression.java b/src/main/java/net/sf/jsqlparser/statement/alter/AlterExpression.java index 29db90fc3..387790eb2 100644 --- a/src/main/java/net/sf/jsqlparser/statement/alter/AlterExpression.java +++ b/src/main/java/net/sf/jsqlparser/statement/alter/AlterExpression.java @@ -509,6 +509,10 @@ public String toString() { b.append("DISCARD TABLESPACE"); } else if (operation == AlterOperation.IMPORT_TABLESPACE) { b.append("IMPORT TABLESPACE"); + } else if (operation == AlterOperation.DISABLE_KEYS) { + b.append("DISABLE KEYS"); + } else if (operation == AlterOperation.ENABLE_KEYS) { + b.append("ENABLE KEYS"); } else if (operation == AlterOperation.ENGINE) { b.append("ENGINE "); if (useEqual) { diff --git a/src/main/java/net/sf/jsqlparser/statement/alter/AlterOperation.java b/src/main/java/net/sf/jsqlparser/statement/alter/AlterOperation.java index b97ea36e3..523b62793 100644 --- a/src/main/java/net/sf/jsqlparser/statement/alter/AlterOperation.java +++ b/src/main/java/net/sf/jsqlparser/statement/alter/AlterOperation.java @@ -10,7 +10,7 @@ package net.sf.jsqlparser.statement.alter; public enum AlterOperation { - 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; + 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; public static AlterOperation from(String operation) { return Enum.valueOf(AlterOperation.class, operation.toUpperCase()); diff --git a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt index 6a4416e23..9c774070f 100644 --- a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt +++ b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt @@ -8110,6 +8110,20 @@ AlterExpression AlterExpression(): } ) | + ( + (tk = ) + (tk2 = ) { + alterExp.setOperation(AlterOperation.DISABLE_KEYS); + } + ) + | + ( + (tk = ) + (tk2 = ) { + alterExp.setOperation(AlterOperation.ENABLE_KEYS); + } + ) + | ( {alterExp.setOperation(AlterOperation.SET_TABLE_OPTION);} ["=" { alterExp.setUseEqual(true);} ] tk= { diff --git a/src/test/java/net/sf/jsqlparser/statement/alter/AlterTest.java b/src/test/java/net/sf/jsqlparser/statement/alter/AlterTest.java index 1b31004a6..b532f46bd 100644 --- a/src/test/java/net/sf/jsqlparser/statement/alter/AlterTest.java +++ b/src/test/java/net/sf/jsqlparser/statement/alter/AlterTest.java @@ -1479,4 +1479,25 @@ public void testImportTablespace() throws JSQLParserException { alter.getAlterExpressions().get(0).getOperation().toString()); assertSqlCanBeParsedAndDeparsed(sql); } + + @Test + public void testAlterTableKeys() throws JSQLParserException { + // Test for DISABLE KEYS + String sqlDisable = "ALTER TABLE tbl_name DISABLE KEYS"; + Statement stmtDisable = CCJSqlParserUtil.parse(sqlDisable); + assertTrue(stmtDisable instanceof Alter); + Alter alterDisable = (Alter) stmtDisable; + assertEquals("tbl_name", alterDisable.getTable().getFullyQualifiedName()); + AlterExpression alterExpDisable = alterDisable.getAlterExpressions().get(0); + assertEquals(AlterOperation.DISABLE_KEYS, alterExpDisable.getOperation()); + + // Test for ENABLE KEYS + String sqlEnable = "ALTER TABLE tbl_name ENABLE KEYS"; + Statement stmtEnable = CCJSqlParserUtil.parse(sqlEnable); + assertTrue(stmtEnable instanceof Alter); + Alter alterEnable = (Alter) stmtEnable; + assertEquals("tbl_name", alterEnable.getTable().getFullyQualifiedName()); + AlterExpression alterExpEnable = alterEnable.getAlterExpressions().get(0); + assertEquals(AlterOperation.ENABLE_KEYS, alterExpEnable.getOperation()); + } }