Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
Next Next commit
Fix parsing statements with multidimensional array
  • Loading branch information
lis412 committed Nov 2, 2022
commit 47b4e26288c5fd04acce05670c401ed4da82587d
14 changes: 13 additions & 1 deletion src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt
Original file line number Diff line number Diff line change
Expand Up @@ -3895,6 +3895,7 @@ Expression BitwiseXor():
}

Expression ArrayExpression(Expression obj): {
Expression expr;
Expression idxExpr = null;
Expression startExpr = null;
Expression stopExpr = null;
Expand All @@ -3906,7 +3907,18 @@ Expression ArrayExpression(Expression obj): {
[stopExpr = SimpleExpression()]
]
"]"
{ return new ArrayExpression(obj, idxExpr, startExpr, stopExpr); }
{ expr = new ArrayExpression(obj, idxExpr, startExpr, stopExpr); }
(
"["
[LOOKAHEAD(3) idxExpr = SimpleExpression()]
[
(":" { startExpr=idxExpr; idxExpr=null; })
[stopExpr = SimpleExpression()]
]
"]"
{ expr = new ArrayExpression(expr, idxExpr, startExpr, stopExpr); }
)*
{ return expr; }
}

Expression PrimaryExpression() #PrimaryExpression:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5294,4 +5294,9 @@ public void testSelectStatementWithoutForUpdateAndSkipLockedTokens() throws JSQL
assertFalse(plainSelect.isForUpdate());
assertFalse(plainSelect.isSkipLocked());
}

@Test
public void testSelectMultidimensionalArrayStatement() throws JSQLParserException {
assertSqlCanBeParsedAndDeparsed("SELECT f1, f2[1][1], f3[1][2][3] FROM test");
}
}