Skip to content

Commit 2065fed

Browse files
authored
Partial support construct tuple as simple expression (#1107)
SELECT (1,2)
1 parent f2e74f1 commit 2065fed

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

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

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3281,6 +3281,7 @@ Expression PrimaryExpression() #PrimaryExpression:
32813281
boolean exclamationMarkNot = false;
32823282
boolean dateExpressionAllowed = true;
32833283
Expression idxExpr;
3284+
ExpressionList list;
32843285
}
32853286
{
32863287
[ <K_NOT> { not=true; } | "!" { not=true; exclamationMarkNot=true; } ]
@@ -3341,7 +3342,14 @@ Expression PrimaryExpression() #PrimaryExpression:
33413342

33423343
| LOOKAHEAD("(" retval=SubSelect() ")") "(" retval=SubSelect() ")"
33433344

3344-
| "(" retval=SimpleExpression() ")" {retval = new Parenthesis(retval); }
3345+
| "(" list = SimpleExpressionList() ")"
3346+
{
3347+
if (list.getExpressions().size() == 1) {
3348+
retval = new Parenthesis(list.getExpressions().get(0));
3349+
} else {
3350+
retval = new RowConstructor().withExprList(list);
3351+
}
3352+
}
33453353
)
33463354

33473355
[

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4441,4 +4441,9 @@ public void testSignedKeywordIssue1100() throws JSQLParserException {
44414441
public void testSignedKeywordIssue995() throws JSQLParserException {
44424442
assertSqlCanBeParsedAndDeparsed("SELECT leading FROM prd_reprint");
44434443
}
4444+
4445+
@Test
4446+
public void testSelectTuple() throws JSQLParserException {
4447+
assertSqlCanBeParsedAndDeparsed("SELECT hyperloglog_distinct((1, 2)) FROM t");
4448+
}
44444449
}

0 commit comments

Comments
 (0)