Skip to content

Commit f10b52e

Browse files
davyboyhayesDavid Hayes
andauthored
Fix[2288] - Support parenthesed expressions within Between (#2289)
Supports the SQL of the form: ```sql SELECT * FROM tbl WHERE day BETWEEN CAST(CAST((NOW() + INTERVAL '-30 day') AS date) AS timestamptz) AND CAST(CAST((NOW() + INTERVAL '-1 day') AS date) AS timestamptz); ``` Co-authored-by: David Hayes <dhayes@adobe.com>
1 parent 2ff7342 commit f10b52e

File tree

2 files changed

+11
-5
lines changed

2 files changed

+11
-5
lines changed

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5746,18 +5746,18 @@ Expression Between(Expression leftExpression) :
57465746
)
57475747
]
57485748
(
5749-
LOOKAHEAD( 3 ) betweenExpressionStart = ParenthesedSelect()
5749+
LOOKAHEAD( ParenthesedSelect() ) betweenExpressionStart = ParenthesedSelect()
57505750
|
5751-
LOOKAHEAD( 11 ) betweenExpressionStart = RegularCondition()
5751+
LOOKAHEAD( RegularCondition() ) betweenExpressionStart = RegularCondition()
57525752
|
57535753
betweenExpressionStart = SimpleExpression()
57545754
)
57555755

57565756
<K_AND>
57575757
(
5758-
LOOKAHEAD( 3 ) betweenExpressionEnd = ParenthesedSelect()
5758+
LOOKAHEAD( ParenthesedSelect() ) betweenExpressionEnd = ParenthesedSelect()
57595759
|
5760-
LOOKAHEAD( 11 ) betweenExpressionEnd = RegularCondition()
5760+
LOOKAHEAD( RegularCondition() ) betweenExpressionEnd = RegularCondition()
57615761
|
57625762
betweenExpressionEnd = SimpleExpression()
57635763
)

src/test/resources/simple_parsing.txt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,4 +210,10 @@ AND THIS_EMP.WORKDEPT = DINFO.DEPTNO
210210

211211
select * from Person where deptname='it' AND NOT (age=24)
212212

213-
select * from unnest(array[4,5,6]) with ordinality;
213+
select * from unnest(array[4,5,6]) with ordinality;
214+
215+
SELECT * FROM tbl WHERE
216+
day BETWEEN
217+
CAST(CAST((NOW() + INTERVAL '-30 day') AS date) AS timestamptz)
218+
AND
219+
CAST(CAST((NOW() + INTERVAL '-1 day') AS date) AS timestamptz);

0 commit comments

Comments
 (0)