diff --git a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt index 5883319e7..2a28d21ba 100644 --- a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt +++ b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt @@ -1756,7 +1756,7 @@ TOKEN: * Supported tokens: * - : Standard unquoted SQL identifier * - : Quoted identifier (e.g., `identifier` or "identifier") - * - , , , , , : Specific keywords treated as identifiers + * - , , , , , , : Specific keywords treated as identifiers * * @return Token representing the identifier or keyword used as identifier */ @@ -1774,6 +1774,7 @@ Token KeywordOrIdentifier(): | tk = | tk = | tk = + | tk = ) { return 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 ab135ebb2..5ba1a8762 100644 --- a/src/test/java/net/sf/jsqlparser/statement/alter/AlterTest.java +++ b/src/test/java/net/sf/jsqlparser/statement/alter/AlterTest.java @@ -259,6 +259,11 @@ public void testAlterTableDropColumnIssue2339() throws JSQLParserException { assertSqlCanBeParsedAndDeparsed("ALTER TABLE test DROP COLUMN Data"); } + @Test + public void testAlterTableDropColumnIssue2447() throws JSQLParserException { + assertSqlCanBeParsedAndDeparsed("ALTER TABLE test DROP COLUMN type"); + } + @Test public void testAlterTableDropConstraint() throws JSQLParserException { final String sql = "ALTER TABLE test DROP CONSTRAINT YYY"; @@ -469,6 +474,11 @@ public void testAlterTableChangeColumnIssue2339() throws JSQLParserException { assertSqlCanBeParsedAndDeparsed("ALTER TABLE tb_test CHANGE data INT (10)"); } + @Test + public void testAlterTableChangeColumnIssue2447() throws JSQLParserException { + assertSqlCanBeParsedAndDeparsed("ALTER TABLE tb_test CHANGE type INT (10)"); + } + @Test public void testAlterTableAddColumnWithZone() throws JSQLParserException { assertSqlCanBeParsedAndDeparsed( @@ -668,6 +678,18 @@ public void testAlterTableRenameColumn2() throws JSQLParserException { assertEquals(expression.getColumnName(), "full_name"); } + @Test + public void testAlterTableRenameColumnIssue2447() throws JSQLParserException { + String sql = "ALTER TABLE test_table RENAME COLUMN type TO type2"; + assertSqlCanBeParsedAndDeparsed(sql); + + Alter alter = (Alter) CCJSqlParserUtil.parse(sql); + AlterExpression expression = alter.getAlterExpressions().get(0); + assertEquals(expression.getOperation(), AlterOperation.RENAME); + assertEquals(expression.getColOldName(), "type"); + assertEquals(expression.getColumnName(), "type2"); + } + @Test public void testAlterTableForeignKeyIssue981() throws JSQLParserException { assertSqlCanBeParsedAndDeparsed(