@@ -1584,6 +1584,20 @@ ExpressionList SimpleExpressionList():
15841584 }
15851585}
15861586
1587+ ExpressionList SimpleExpressionListAtLeastTwoItems():
1588+ {
1589+ ExpressionList retval = new ExpressionList();
1590+ List<Expression> expressions = new ArrayList<Expression>();
1591+ Expression expr = null;
1592+ }
1593+ {
1594+ expr=SimpleExpression() { expressions.add(expr); } ("," expr=SimpleExpression() { expressions.add(expr); })+
1595+ {
1596+ retval.setExpressions(expressions);
1597+ return retval;
1598+ }
1599+ }
1600+
15871601Expression ComparisonItem() :
15881602{
15891603 Expression retval = null;
@@ -1592,7 +1606,8 @@ Expression ComparisonItem() :
15921606 (
15931607 retval=AllComparisonExpression()
15941608 | LOOKAHEAD(AnyComparisonExpression()) retval=AnyComparisonExpression()
1595- | retval=SimpleExpression()
1609+ | LOOKAHEAD(3) retval=SimpleExpression()
1610+ | retval=RowConstructor()
15961611 )
15971612
15981613 {
@@ -1615,10 +1630,12 @@ Expression AllComparisonExpression() :
16151630Expression AnyComparisonExpression() :
16161631{
16171632 AnyComparisonExpression retval = null;
1633+ AnyType anyType;
16181634 SubSelect subselect = null;
16191635}
16201636{
1621- (<K_ANY> | <K_SOME>) "(" subselect=SubSelect() ")" { retval = new AnyComparisonExpression(subselect); }
1637+ (<K_ANY> { anyType = AnyType.ANY; } | <K_SOME> { anyType = AnyType.SOME; } )
1638+ "(" subselect=SubSelect() ")" { retval = new AnyComparisonExpression(anyType, subselect); }
16221639 {
16231640 return retval;
16241641 }
@@ -1792,7 +1809,7 @@ Expression PrimaryExpression():
17921809
17931810 | retval=CaseWhenExpression()
17941811
1795- | "?" { retval = new JdbcParameter(); } [ token = <S_LONG> { ((JdbcParameter)retval).setIndex(Integer.valueOf(token.image)); } ]
1812+ | "?" { retval = new JdbcParameter(); } [ LOOKAHEAD(2) token = <S_LONG> { ((JdbcParameter)retval).setIndex(Integer.valueOf(token.image)); } ]
17961813
17971814 | LOOKAHEAD(2) retval=JdbcNamedParameter()
17981815
@@ -2125,6 +2142,23 @@ WhenClause WhenThenValue():
21252142 }
21262143}
21272144
2145+ RowConstructor RowConstructor(): {
2146+ ExpressionList list = null;
2147+ RowConstructor rowConstructor = new RowConstructor();
2148+ } {
2149+ //("(" list =SimpleExpressionListAtLeastTwoItems() ")"
2150+ //|
2151+ [ <K_ROW> { rowConstructor.setName("ROW");} ]
2152+ "("
2153+ list = SimpleExpressionList()
2154+ ")"
2155+
2156+ {
2157+ rowConstructor.setExprList(list);
2158+ return rowConstructor;
2159+ }
2160+ }
2161+
21282162Execute Execute(): {
21292163 String funcName = null;
21302164 ExpressionList expressionList = null;
0 commit comments