Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt
Original file line number Diff line number Diff line change
Expand Up @@ -1287,6 +1287,7 @@ String NonReservedWord() :
| tk=<K_FULLTEXT:"FULLTEXT">
| tk=<K_FUNCTION:"FUNCTION">
| tk=<K_GRANT:"GRANT">
| tk=<K_GROUPS:"GROUPS">
| tk=<K_GROUP_CONCAT:"GROUP_CONCAT">
| tk=<K_GUARD:"GUARD">
| tk=<K_HASH:"HASH">
Expand Down Expand Up @@ -1577,7 +1578,6 @@ TOKEN: /* Reserved SQL Keywords and structural tokens */
| <K_GLOBAL:"GLOBAL">
| <K_GROUP:"GROUP">
| <K_GROUPING:"GROUPING">
| <K_GROUPS:"GROUPS">
| <K_HAVING:"HAVING">
| <K_IF:"IF">
| <K_IIF:"IIF">
Expand Down
11 changes: 11 additions & 0 deletions src/test/java/net/sf/jsqlparser/statement/KeywordsTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -51,4 +51,15 @@ public void testCombinedTokenKeywords() throws JSQLParserException {
String sqlStr = "SELECT current_date(3)";
assertSqlCanBeParsedAndDeparsed(sqlStr, true);
}

// #2473: GROUPS is a non-reserved keyword in PostgreSQL and must stay usable as an
// identifier, although it also introduces the GROUPS window frame unit.
@Test
public void testGroupsAsIdentifier() throws JSQLParserException {
assertSqlCanBeParsedAndDeparsed("SELECT groups FROM mytable", true);
assertSqlCanBeParsedAndDeparsed("SELECT * FROM groups", true);
assertSqlCanBeParsedAndDeparsed("SELECT a AS groups FROM mytable", true);
assertSqlCanBeParsedAndDeparsed("SELECT a groups FROM mytable", true);
assertSqlCanBeParsedAndDeparsed("CREATE TABLE mytable (groups INT)", true);
}
}
Loading