Skip to content

Commit 5adebee

Browse files
committed
fixes #136
1 parent d99e603 commit 5adebee

File tree

2 files changed

+18
-6
lines changed

2 files changed

+18
-6
lines changed

src/main/javacc/net/sf/jsqlparser/parser/JSqlParserCC.jj

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1114,14 +1114,20 @@ OracleHierarchicalExpression OracleHierarchicalQueryClause():
11141114
{
11151115
OracleHierarchicalExpression result = new OracleHierarchicalExpression();
11161116
Expression expr;
1117+
Expression connectExpr;
11171118
}
11181119
{
1119-
[ <K_START> <K_WITH> expr=AndExpression() {result.setStartExpression(expr);} ]
1120-
<K_CONNECT> <K_BY> [ <K_NOCYCLE> { result.setNoCycle(true); } ]
1121-
expr=AndExpression()
1122-
{ result.setConnectExpression(expr); }
1123-
1124-
{ return result; }
1120+
(
1121+
<K_START> <K_WITH> expr=AndExpression() {result.setStartExpression(expr);}
1122+
<K_CONNECT> <K_BY> [ <K_NOCYCLE> { result.setNoCycle(true); } ] connectExpr=AndExpression()
1123+
|
1124+
<K_CONNECT> <K_BY> [ <K_NOCYCLE> { result.setNoCycle(true); } ] connectExpr=AndExpression()
1125+
[ <K_START> <K_WITH> expr=AndExpression() {result.setStartExpression(expr);} ]
1126+
)
1127+
{
1128+
result.setConnectExpression(connectExpr);
1129+
return result;
1130+
}
11251131
}
11261132

11271133
List<Expression> GroupByColumnReferences():

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1613,6 +1613,12 @@ public void testOracleHierarchicalQuery3() throws JSQLParserException {
16131613
assertSqlCanBeParsedAndDeparsed(stmt);
16141614
}
16151615

1616+
public void testOracleHierarchicalQuery4() throws JSQLParserException {
1617+
String stmt = "SELECT last_name, employee_id, manager_id, LEVEL FROM employees CONNECT BY PRIOR employee_id = manager_id START WITH employee_id = 100 ORDER SIBLINGS BY last_name";
1618+
Statement parsed = CCJSqlParserUtil.parse(new StringReader(stmt));
1619+
assertStatementCanBeDeparsedAs(parsed, "SELECT last_name, employee_id, manager_id, LEVEL FROM employees START WITH employee_id = 100 CONNECT BY PRIOR employee_id = manager_id ORDER SIBLINGS BY last_name");
1620+
}
1621+
16161622
public void testPostgreSQLRegExpCaseSensitiveMatch() throws JSQLParserException {
16171623
String stmt = "SELECT a, b FROM foo WHERE a ~ '[help].*'";
16181624
assertSqlCanBeParsedAndDeparsed(stmt);

0 commit comments

Comments
 (0)