Skip to content

Commit 49cde6e

Browse files
committed
[feat] Add 'K_DATA' to KeywordOrIdentifier to allow usages of 'data' as an identifier
Allows for support of data as a column name when changing or dropping a column in an alter table statement
1 parent f19f17e commit 49cde6e

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -886,7 +886,7 @@ TOKEN:
886886
* Supported tokens:
887887
* - <S_IDENTIFIER>: Standard unquoted SQL identifier
888888
* - <S_QUOTED_IDENTIFIER>: Quoted identifier (e.g., `identifier` or "identifier")
889-
* - <K_NAME>, <K_NEXT>, <K_VALUE>, <K_PUBLIC>, <K_STRING>: Specific keywords treated as identifiers
889+
* - <K_NAME>, <K_NEXT>, <K_VALUE>, <K_PUBLIC>, <K_STRING>, <K_DATA>: Specific keywords treated as identifiers
890890
*
891891
* @return Token representing the identifier or keyword used as identifier
892892
*/
@@ -903,6 +903,7 @@ Token KeywordOrIdentifier():
903903
| tk = <K_VALUE>
904904
| tk = <K_PUBLIC>
905905
| tk = <K_STRING>
906+
| tk = <K_DATA>
906907
)
907908
{ return tk; }
908909
}
@@ -9414,7 +9415,7 @@ AlterExpression AlterExpression():
94149415
<K_CHANGE> { alterExp.setOperation(AlterOperation.CHANGE); }
94159416
[ <K_COLUMN> { alterExp.hasColumn(true); alterExp.setOptionalSpecifier("COLUMN"); } ]
94169417
(
9417-
(tk=<S_IDENTIFIER> | tk=<S_QUOTED_IDENTIFIER>)
9418+
(tk=KeywordOrIdentifier())
94189419
alterExpressionColumnDataType = AlterExpressionColumnDataType() { alterExp.withColumnOldName(tk.image).addColDataType(alterExpressionColumnDataType); }
94199420
)
94209421
)
@@ -9448,7 +9449,7 @@ AlterExpression AlterExpression():
94489449
( LOOKAHEAD(2) <K_COLUMN> { alterExp.hasColumn(true); } )?
94499450
[<K_IF> <K_EXISTS> { alterExp.setUsingIfExists(true); } ]
94509451
// @todo: replace with a proper identifier
9451-
(tk=<S_IDENTIFIER> | tk=<S_QUOTED_IDENTIFIER> | tk=<K_NAME>) { alterExp.setColumnName(tk.image); }
9452+
(tk=KeywordOrIdentifier() ) { alterExp.setColumnName(tk.image); }
94529453

94539454
[ "INVALIDATE" { alterExp.addParameters("INVALIDATE"); } ]
94549455

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,11 @@ public void testAlterTableDropColumn2() throws JSQLParserException {
249249
assertEquals("col2", col2Exp.getColumnName());
250250
}
251251

252+
@Test
253+
public void testAlterTableDropColumnIssue2339() throws JSQLParserException {
254+
assertSqlCanBeParsedAndDeparsed("ALTER TABLE test DROP COLUMN Data");
255+
}
256+
252257
@Test
253258
public void testAlterTableDropConstraint() throws JSQLParserException {
254259
final String sql = "ALTER TABLE test DROP CONSTRAINT YYY";
@@ -455,6 +460,11 @@ public void testAlterTableChangeColumn4() throws JSQLParserException {
455460
assertSqlCanBeParsedAndDeparsed("ALTER TABLE tb_test CHANGE c1 c2 INT (10)");
456461
}
457462

463+
@Test
464+
public void testAlterTableChangeColumnIssue2339() throws JSQLParserException {
465+
assertSqlCanBeParsedAndDeparsed("ALTER TABLE tb_test CHANGE data INT (10)");
466+
}
467+
458468
@Test
459469
public void testAlterTableAddColumnWithZone() throws JSQLParserException {
460470
assertSqlCanBeParsedAndDeparsed(

0 commit comments

Comments
 (0)