Skip to content

Commit e186588

Browse files
manticore-projectsAndrei Lisouski
andauthored
Fix parsing statements with multidimensional array PR2 (#1665)
* Fix parsing statements with multidimensional array * fix: Whitelist LOCKED keyword Co-authored-by: Andrei Lisouski <[email protected]>
1 parent af6c270 commit e186588

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

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

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3895,6 +3895,7 @@ Expression BitwiseXor():
38953895
}
38963896

38973897
Expression ArrayExpression(Expression obj): {
3898+
Expression expr;
38983899
Expression idxExpr = null;
38993900
Expression startExpr = null;
39003901
Expression stopExpr = null;
@@ -3906,7 +3907,18 @@ Expression ArrayExpression(Expression obj): {
39063907
[stopExpr = SimpleExpression()]
39073908
]
39083909
"]"
3909-
{ return new ArrayExpression(obj, idxExpr, startExpr, stopExpr); }
3910+
{ expr = new ArrayExpression(obj, idxExpr, startExpr, stopExpr); }
3911+
(
3912+
"["
3913+
[LOOKAHEAD(3) idxExpr = SimpleExpression()]
3914+
[
3915+
(":" { startExpr=idxExpr; idxExpr=null; })
3916+
[stopExpr = SimpleExpression()]
3917+
]
3918+
"]"
3919+
{ expr = new ArrayExpression(expr, idxExpr, startExpr, stopExpr); }
3920+
)*
3921+
{ return expr; }
39103922
}
39113923

39123924
Expression PrimaryExpression() #PrimaryExpression:

src/test/java/net/sf/jsqlparser/statement/select/SelectTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5294,4 +5294,9 @@ public void testSelectStatementWithoutForUpdateAndSkipLockedTokens() throws JSQL
52945294
assertFalse(plainSelect.isForUpdate());
52955295
assertFalse(plainSelect.isSkipLocked());
52965296
}
5297+
5298+
@Test
5299+
public void testSelectMultidimensionalArrayStatement() throws JSQLParserException {
5300+
assertSqlCanBeParsedAndDeparsed("SELECT f1, f2[1][1], f3[1][2][3] FROM test");
5301+
}
52975302
}

0 commit comments

Comments
 (0)