Skip to content

Commit 0aaccd6

Browse files
author
Stefan Steinhauser
committed
feat: Implement grammar to support Select as FromItem
Refs: #2071
1 parent ff885ba commit 0aaccd6

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3052,21 +3052,23 @@ FromItem FromItem() #FromItem:
30523052
}
30533053
{
30543054
(
3055-
LOOKAHEAD(3) fromItem = Values()
3055+
LOOKAHEAD(3, { !getAsBoolean(Feature.allowUnparenthesizedSubSelects) }) fromItem = Values()
30563056
|
30573057
LOOKAHEAD( TableFunction() ) fromItem=TableFunction()
30583058
|
30593059
LOOKAHEAD(3) fromItem=Table()
30603060
|
30613061
LOOKAHEAD( ParenthesedFromItem() ) fromItem = ParenthesedFromItem()
30623062
|
3063-
LOOKAHEAD(3) (
3063+
LOOKAHEAD(3, { !getAsBoolean(Feature.allowUnparenthesizedSubSelects) }) (
30643064
fromItem=ParenthesedSelect()
30653065
[ LOOKAHEAD(2) pivot=Pivot() { fromItem.setPivot(pivot); } ]
30663066
[ LOOKAHEAD(2) unpivot=UnPivot() { fromItem.setUnPivot(unpivot); } ]
30673067
)
30683068
|
30693069
fromItem=LateralSubSelect()
3070+
|
3071+
LOOKAHEAD({ getAsBoolean(Feature.allowUnparenthesizedSubSelects) }) fromItem=Select()
30703072
)
30713073

30723074
[ LOOKAHEAD(2) alias=Alias() { fromItem.setAlias(alias); } ]

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5963,7 +5963,11 @@ void testGroupByWithHaving() throws JSQLParserException {
59635963
@ValueSource(strings = {
59645964
"SELECT SELECT 1",
59655965
"SELECT 1 WHERE 1 = SELECT 1",
5966-
"SELECT 1 WHERE 1 IN SELECT 1"
5966+
"SELECT 1 WHERE 1 IN SELECT 1",
5967+
"SELECT * FROM SELECT 1",
5968+
"SELECT * FROM SELECT SELECT 1",
5969+
"SELECT * FROM SELECT 1 WHERE 1 = SELECT 1",
5970+
"SELECT * FROM SELECT 1 WHERE 1 IN SELECT 1"
59675971
})
59685972
public void testUnparenthesizedSubSelect(String sqlStr) throws JSQLParserException {
59695973
TestUtils.assertSqlCanBeParsedAndDeparsed(sqlStr, true,

0 commit comments

Comments
 (0)