Skip to content

Commit cdf0f09

Browse files
Fixes #1381 (#1383)
Allow Complex Expressions as SelectItem
1 parent 60a7d10 commit cdf0f09

File tree

2 files changed

+18
-5
lines changed

2 files changed

+18
-5
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2022,8 +2022,8 @@ SelectExpressionItem SelectExpressionItem():
20222022
Alias alias = null;
20232023
}
20242024
{
2025-
expression=Condition() { selectExpressionItem = new SelectExpressionItem(); selectExpressionItem.setExpression(expression); }
2026-
[alias=Alias() { selectExpressionItem.setAlias(alias); }] { return selectExpressionItem; }
2025+
expression=Expression() { selectExpressionItem = new SelectExpressionItem(); selectExpressionItem.setExpression(expression); }
2026+
[alias=Alias() { selectExpressionItem.setAlias(alias); }] { return selectExpressionItem; }
20272027
}
20282028

20292029
SelectItem SelectItem() #SelectItem:

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

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -384,8 +384,6 @@ public void testLimit2() throws JSQLParserException {
384384
offset = ((PlainSelect) select.getSelectBody()).getLimit().getOffset();
385385
rowCount = ((PlainSelect) select.getSelectBody()).getLimit().getRowCount();
386386

387-
System.out.println(rowCount.getClass().getName());
388-
389387
assertNull(offset);
390388
Assertions.assertTrue( rowCount instanceof AllValue);
391389

@@ -4895,7 +4893,7 @@ public void testCaseElseExpressionIssue1375() throws JSQLParserException {
48954893
assertSqlCanBeParsedAndDeparsed(
48964894
"SELECT * FROM t1 WHERE CASE WHEN 1 = 1 THEN c1 = 'a' ELSE c2 = 'b' AND c4 = 'd' END", true);
48974895
}
4898-
4896+
48994897
public void testComplexInExpressionIssue905() throws JSQLParserException {
49004898
assertSqlCanBeParsedAndDeparsed(
49014899
"select * " +
@@ -4922,4 +4920,19 @@ public void testComplexInExpressionIssue905() throws JSQLParserException {
49224920
"from table_a " +
49234921
"where (a, b, c) in ((1, 2, 3), (3, 4, 5))", true);
49244922
}
4923+
4924+
@Test
4925+
public void testLogicalExpressionSelectItemIssue1381() throws JSQLParserException {
4926+
assertSqlCanBeParsedAndDeparsed(
4927+
"SELECT ( 1 + 1 ) = ( 1 + 2 )", true);
4928+
4929+
assertSqlCanBeParsedAndDeparsed(
4930+
"SELECT ( 1 = 1 ) = ( 1 = 2 )", true);
4931+
4932+
assertSqlCanBeParsedAndDeparsed(
4933+
"SELECT ( ( 1 = 1 ) AND ( 1 = 2 ) )", true);
4934+
4935+
assertSqlCanBeParsedAndDeparsed(
4936+
"SELECT ( 1 = 1 ) AND ( 1 = 2 )", true);
4937+
}
49254938
}

0 commit comments

Comments
 (0)