From e0b3a180da5b1f883203892952e3bd651f0426c3 Mon Sep 17 00:00:00 2001 From: Tobias Warneke Date: Sun, 22 Nov 2020 20:39:48 +0100 Subject: [PATCH] fixes #1065 --- src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt | 6 +++--- .../java/net/sf/jsqlparser/statement/select/SelectTest.java | 2 ++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt index 3baf10af6..2b964c285 100644 --- a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt +++ b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt @@ -2735,9 +2735,9 @@ Expression InExpression() #InExpression : ( // syntactic lookahead for a multi expression list, ie: ((a,b),(c,d)) LOOKAHEAD(3) multiExpressionList = MultiInExpressions() - | LOOKAHEAD(Function()) rightExpression = Function() - | token= { rightExpression = new StringValue(token.image); } - | "(" (LOOKAHEAD(3) rightItemsList=SubSelect() | rightItemsList=SimpleExpressionList() )")" + | LOOKAHEAD(3) rightExpression = Function() + | LOOKAHEAD(2) token= { rightExpression = new StringValue(token.image); } + | LOOKAHEAD(3) "(" (LOOKAHEAD(3) rightItemsList=SubSelect() | rightItemsList=SimpleExpressionList() )")" | rightExpression = SimpleExpression() ) { diff --git a/src/test/java/net/sf/jsqlparser/statement/select/SelectTest.java b/src/test/java/net/sf/jsqlparser/statement/select/SelectTest.java index a8589b436..d5357d279 100644 --- a/src/test/java/net/sf/jsqlparser/statement/select/SelectTest.java +++ b/src/test/java/net/sf/jsqlparser/statement/select/SelectTest.java @@ -4330,6 +4330,7 @@ public void testIssue1068() throws JSQLParserException { @Test public void selectWithSingleIn() throws JSQLParserException { assertSqlCanBeParsedAndDeparsed("SELECT 1 FROM dual WHERE a IN 1"); + } @Test public void testKeywordSequenceIssue1075() throws JSQLParserException { @@ -4338,5 +4339,6 @@ public void testKeywordSequenceIssue1075() throws JSQLParserException { @Test public void testKeywordSequenceIssue1074() throws JSQLParserException { + assertSqlCanBeParsedAndDeparsed("SELECT * FROM t_user WITH (NOLOCK)"); } }