Skip to content

Commit 4c4ff28

Browse files
fix: GRANT to PUBLIC (allow keyword)
- fixes #2230 Signed-off-by: Andreas Reichel <andreas@manticore-projects.com>
1 parent c9c844a commit 4c4ff28

File tree

3 files changed

+22
-17
lines changed

3 files changed

+22
-17
lines changed

src/main/java/net/sf/jsqlparser/statement/grant/Grant.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public class Grant implements Statement {
2424

2525
private String role;
2626
private List<String> privileges;
27-
private List<String> objectName = new ArrayList<>();
27+
private final List<String> objectName = new ArrayList<>();
2828
private List<String> users;
2929

3030
@Override

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

+14-16
Original file line numberDiff line numberDiff line change
@@ -8831,23 +8831,21 @@ Grant Grant():
88318831
(
88328832
(
88338833
[readGrantTypes(privileges) (<K_COMMA> readGrantTypes(privileges))*]
8834-
<K_ON>
8835-
(
8836-
objName=RelObjectNames() { grant.setObjectName(objName.getNames()); }
8837-
)
8838-
)
8839-
|
8840-
(
8841-
tk=<S_IDENTIFIER> { grant.setRole(tk.image); }
8842-
)
8834+
<K_ON> objName=RelObjectNames() { grant.setObjectName(objName.getNames()); }
8835+
)
8836+
|
8837+
(
8838+
tk=<S_IDENTIFIER> { grant.setRole(tk.image); }
88438839
)
8844-
<K_TO> (users = UsersList() {grant.setUsers(users);})
8840+
)
8841+
<K_TO> users = UsersList()
88458842
{
8846-
if(privileges.size() > 0) {
8847-
grant.setPrivileges(privileges);
8848-
}
8849-
return grant;
8850-
}
8843+
grant.setUsers(users);
8844+
if(privileges.size() > 0) {
8845+
grant.setPrivileges(privileges);
8846+
}
8847+
return grant;
8848+
}
88518849
}
88528850

88538851
List<String> UsersList():
@@ -8856,7 +8854,7 @@ List<String> UsersList():
88568854
String user = null;
88578855
}
88588856
{
8859-
user=RelObjectName() { users.add(user); }
8857+
user=RelObjectNameExt() { users.add(user); }
88608858
( "," user=ColumnsNamesListItem() { users.add(user); } )*
88618859
{
88628860
return users;

src/test/java/net/sf/jsqlparser/statement/grant/GrantTest.java

+7
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import net.sf.jsqlparser.JSQLParserException;
1414
import net.sf.jsqlparser.parser.CCJSqlParserManager;
1515
import static net.sf.jsqlparser.test.TestUtils.*;
16+
import static net.sf.jsqlparser.test.TestUtils.assertSqlCanBeParsedAndDeparsed;
1617
import static org.junit.jupiter.api.Assertions.assertEquals;
1718
import org.junit.jupiter.api.Test;
1819

@@ -97,4 +98,10 @@ public void testGrantQueryWithRole() throws JSQLParserException {
9798
public void testGrantSchemaParsingIssue1080() throws JSQLParserException {
9899
assertSqlCanBeParsedAndDeparsed("GRANT SELECT ON schema_name.table_name TO XYZ");
99100
}
101+
102+
@Test
103+
void testPublicKeywordIssue2230() throws JSQLParserException {
104+
String sqlStr = "grant select on da380_now to public;";
105+
assertSqlCanBeParsedAndDeparsed(sqlStr, true);
106+
}
100107
}

0 commit comments

Comments
 (0)