Skip to content

Commit a312dcd

Browse files
Refactor Parenthesed SelectBody and FromItem (#1754)
* Fixes #1684: Support CREATE MATERIALIZED VIEW with AUTO REFRESH Support parsing create view statements in Redshift with AUTO REFRESH option. * Reduce cyclomatic complexity in CreateView.toString Extract adding the force option into a dedicated method resulting in the cyclomatic complexity reduction of the CreateView.toString method. * Enhanced Keywords Add Keywords and document, which keywords are allowed for what purpose * Fix incorrect tests * Define Reserved Keywords explicitly Derive All Keywords from Grammar directly Generate production for Object Names (semi-) automatically Add parametrized Keyword Tests * Fix test resources * Adjust Gradle to JUnit 5 Parallel Test execution Gradle Caching Explicitly request for latest JavaCC 7.0.10 * Do not mark SpeedTest for concurrent execution * Remove unused imports * Adjust Gradle to JUnit 5 Parallel Test execution Gradle Caching Explicitly request for latest JavaCC 7.0.10 * Do not mark SpeedTest for concurrent execution * Remove unused imports * Sphinx Documentation Update the MANTICORE Sphinx Theme, but ignore it in GIT Add the content to the Sphinx sites Add a Gradle function to derive Stable and Snapshot version from GIT Tags Add a Gradle GIT change task Add a Gradle sphinx task Add a special Test case for illustrating the use of JSQLParser * doc: request for `Conventional Commit` messages * feat: make important Classes Serializable Implement Serializable for persisting via ObjectOutputStream * chore: Make Serializable * doc: Better integration of the RR diagrams - apply neutral Sphinx theme - insert the RR diagrams into the sphinx sources - better documentation on Gradle dependencies - link GitHub repository * Merge * feat: Oracle Alternative Quoting - add support for Oracle Alternative Quoting e.g. `q'(...)'` - fixes #1718 - add a Logo and FavIcon to the Website - document recent changes on Quoting/Escaping - add an example on building SQL from Java - rework the README.md, promote the Website - add Spotless Formatter, using Google Java Style (with Tab=4 Spaces) * style: Appease PMD/Codacy * doc: fix the issue template - fix the issue template - fix the -SNAPSHOT version number * Update issue templates * Update issue templates * feat: Support more Statement Separators - `GO` - Slash `/` - Two empty lines * feat: FETCH uses EXPRESSION - `FETCH` uses `EXPRESSION` instead of SimpleJDBCParameter only - Visit/Accept `FETCH` `EXPRESSION` instead of `append` to String - Visit/Accept `OFFSET` `EXPRESSION` instead of `append` to String - Gradle: remove obsolete/incompatible `jvmArgs` from Test() * style: apply Spotless * test: commit missing test * fix: JSon Operator can use Simple Function Supports `Function() ->> Literal` (although `Function()` would not allow Nested Expression Parameters) fixes #1571 * style: Reformat changed files and headers * style: Remove unused variable * feat: Add support for Hangul "\uAC00"-"\uD7A3" fixes #1747 * style: expose `SetStatement` key-value list fixes #1746 * style: Appease PMD/Codacy * feat: `ConflictTarget` allows multiple `IndexColumnNames` fixes #1749 fixes #1633 fixes #955 * doc: fix reference in the Java Doc * build: better Upload Groovy Task * feat: ParenthesedSelectBody and ParenthesedFromItem - First properly working version - Work in progress, 13 tests failing * feat: ParenthesedSelectBody and ParenthesedFromItem - delete unneeded ParenthesedJoin - rename ParenthesisFromItem into ParenthesedFromItem * feat: ParenthesedSelectBody and ParenthesedFromItem - fix `NULLS FIRST` and `NULLS LAST` * feat: ParenthesedSelectBody and ParenthesedFromItem - fix Oracle Hints * feat: ParenthesedSelectBody and ParenthesedFromItem - parse `SetOperation` only after a (first plain) SelectBody has found, this fixes the performance issue - one more special Oracle Test succeeds - 5 remaining test failures * feat: ParenthesedSelectBody and ParenthesedFromItem - extract `OrderByElements` into `SelectBody` - one more special Oracle Test succeeds - all tests succeed * style: Appease PMD/Codacy * style: Appease PMD/Codacy * feat: Refactor SelectBody implementations - `SelectBody` implements `FromItem` - get rid of `SubSelect` and `SpecialSubSelect` - `Merge` can use `FromItem` instead of `SubSelect` or `Table` - `LateralSubSelect` extends `ParenthesedSelectBody` directly - Simplify the `Select` statement, although it is still redundant since `SelectBody` also could implement `Statement` directly - `WithItem` can use `SelectBody` directly, which allows for nested `WithItems` BREAKING-CHANGE: Lots of redundant methods and intermediate removed * feat: Refactor SelectBody implementations - `SelectBody` implements `Statement` and so makes `Select` redundant - get rid of `ValuesList` - refactor `ValuesStatement` into `Values` which just implements `SelectBody` (and becomes a `Statement` and a `FromItem`), move to `select` package BREAKING-CHANGE: Lots of redundant methods and intermediate removed * style: Code cleanup - remove 3 unused/obsolete productions - appease PMD/Codacy * feat: Merge `SelectBody` into `Select` Statement - former `SelectBody` implements `Statement` and so becomes `Select` - this reduces the AST by 1 hierarchy level * style: Remove unused import * test: @disabled invalid Test * style: Appease PMD/Codacy * test: Add a SubSelect Parsing Test --------- Co-authored-by: zaza <tzarna@gmail.com>
1 parent 0e98333 commit a312dcd

File tree

108 files changed

+4105
-5009
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

108 files changed

+4105
-5009
lines changed

README.md

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,22 +19,20 @@ SELECT 1 FROM dual WHERE a = b
1919

2020
```text
2121
SQL Text
22-
└─Statements: net.sf.jsqlparser.statement.select.Select
23-
└─selectBody: net.sf.jsqlparser.statement.select.PlainSelect
24-
├─selectItems -> Collection<SelectExpressionItem>
25-
│ └─selectItems: net.sf.jsqlparser.statement.select.SelectExpressionItem
26-
│ └─LongValue: 1
27-
├─Table: dual
28-
└─where: net.sf.jsqlparser.expression.operators.relational.EqualsTo
29-
├─Column: a
30-
└─Column: b
22+
└─Statements: net.sf.jsqlparser.statement.select.PlainSelect
23+
├─selectItems -> Collection<SelectExpressionItem>
24+
│ └─selectItems: net.sf.jsqlparser.statement.select.SelectExpressionItem
25+
│ └─LongValue: 1
26+
├─Table: dual
27+
└─where: net.sf.jsqlparser.expression.operators.relational.EqualsTo
28+
├─Column: a
29+
└─Column: b
3130
```
3231

3332
```java
3433
Statement statement = CCJSqlParserUtil.parse(sqlStr);
35-
if (statement instanceof Select) {
36-
Select select = (Select) statement;
37-
PlainSelect plainSelect = (PlainSelect) select.getSelectBody();
34+
if (statement instanceof PlainSelect) {
35+
PlainSelect plainSelect = (PlainSelect) statement;
3836

3937
SelectExpressionItem selectExpressionItem =
4038
(SelectExpressionItem) plainSelect.getSelectItems().get(0);

config/formatter/eclipse-java-google-style.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@
6565
<setting id="org.eclipse.jdt.core.formatter.comment.format_line_comments" value="true"/>
6666
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value="do not insert"/>
6767
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/>
68-
<setting id="org.eclipse.jdt.core.formatter.join_wrapped_lines" value="true"/>
68+
<setting id="org.eclipse.jdt.core.formatter.join_wrapped_lines" value="false"/>
6969
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/>
7070
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="16"/>
7171
<setting id="org.eclipse.jdt.core.formatter.wrap_non_simple_local_variable_annotation" value="true"/>

src/main/java/net/sf/jsqlparser/expression/AnyComparisonExpression.java

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
import net.sf.jsqlparser.expression.operators.relational.ItemsList;
1313
import net.sf.jsqlparser.parser.ASTNodeAccessImpl;
14-
import net.sf.jsqlparser.statement.select.SubSelect;
14+
import net.sf.jsqlparser.statement.select.ParenthesedSelect;
1515

1616
/**
1717
* Combines ANY and SOME expressions.
@@ -22,10 +22,10 @@ public class AnyComparisonExpression extends ASTNodeAccessImpl implements Expres
2222

2323
private final ItemsList itemsList;
2424
private boolean useBracketsForValues = false;
25-
private final SubSelect subSelect;
25+
private final ParenthesedSelect subSelect;
2626
private final AnyType anyType;
2727

28-
public AnyComparisonExpression(AnyType anyType, SubSelect subSelect) {
28+
public AnyComparisonExpression(AnyType anyType, ParenthesedSelect subSelect) {
2929
this.anyType = anyType;
3030
this.subSelect = subSelect;
3131
this.itemsList = null;
@@ -37,7 +37,7 @@ public AnyComparisonExpression(AnyType anyType, ItemsList itemsList) {
3737
this.subSelect = null;
3838
}
3939

40-
public SubSelect getSubSelect() {
40+
public ParenthesedSelect getSubSelect() {
4141
return subSelect;
4242
}
4343

@@ -46,13 +46,13 @@ public ItemsList getItemsList() {
4646
}
4747

4848
public boolean isUsingItemsList() {
49-
return itemsList!=null;
49+
return itemsList != null;
5050
}
5151

5252
public boolean isUsingSubSelect() {
53-
return subSelect!=null;
53+
return subSelect != null;
5454
}
55-
55+
5656
public boolean isUsingBracketsForValues() {
5757
return useBracketsForValues;
5858
}
@@ -77,11 +77,8 @@ public AnyType getAnyType() {
7777

7878
@Override
7979
public String toString() {
80-
String s = anyType.name()
81-
+ " ("
82-
+ ( subSelect!=null
83-
? subSelect.toString()
84-
: "VALUES " + itemsList.toString())
80+
String s = anyType.name() + " ("
81+
+ (subSelect != null ? subSelect.toString() : "VALUES " + itemsList.toString())
8582
+ " )";
8683
return s;
8784
}

src/main/java/net/sf/jsqlparser/expression/ExpressionVisitor.java

Lines changed: 39 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,46 @@
99
*/
1010
package net.sf.jsqlparser.expression;
1111

12-
import net.sf.jsqlparser.expression.operators.arithmetic.*;
12+
import net.sf.jsqlparser.expression.operators.arithmetic.Addition;
13+
import net.sf.jsqlparser.expression.operators.arithmetic.BitwiseAnd;
14+
import net.sf.jsqlparser.expression.operators.arithmetic.BitwiseLeftShift;
15+
import net.sf.jsqlparser.expression.operators.arithmetic.BitwiseOr;
16+
import net.sf.jsqlparser.expression.operators.arithmetic.BitwiseRightShift;
17+
import net.sf.jsqlparser.expression.operators.arithmetic.BitwiseXor;
18+
import net.sf.jsqlparser.expression.operators.arithmetic.Concat;
19+
import net.sf.jsqlparser.expression.operators.arithmetic.Division;
20+
import net.sf.jsqlparser.expression.operators.arithmetic.IntegerDivision;
21+
import net.sf.jsqlparser.expression.operators.arithmetic.Modulo;
22+
import net.sf.jsqlparser.expression.operators.arithmetic.Multiplication;
23+
import net.sf.jsqlparser.expression.operators.arithmetic.Subtraction;
1324
import net.sf.jsqlparser.expression.operators.conditional.AndExpression;
1425
import net.sf.jsqlparser.expression.operators.conditional.OrExpression;
1526
import net.sf.jsqlparser.expression.operators.conditional.XorExpression;
16-
import net.sf.jsqlparser.expression.operators.relational.*;
27+
import net.sf.jsqlparser.expression.operators.relational.Between;
28+
import net.sf.jsqlparser.expression.operators.relational.EqualsTo;
29+
import net.sf.jsqlparser.expression.operators.relational.ExistsExpression;
30+
import net.sf.jsqlparser.expression.operators.relational.FullTextSearch;
31+
import net.sf.jsqlparser.expression.operators.relational.GeometryDistance;
32+
import net.sf.jsqlparser.expression.operators.relational.GreaterThan;
33+
import net.sf.jsqlparser.expression.operators.relational.GreaterThanEquals;
34+
import net.sf.jsqlparser.expression.operators.relational.InExpression;
35+
import net.sf.jsqlparser.expression.operators.relational.IsBooleanExpression;
36+
import net.sf.jsqlparser.expression.operators.relational.IsDistinctExpression;
37+
import net.sf.jsqlparser.expression.operators.relational.IsNullExpression;
38+
import net.sf.jsqlparser.expression.operators.relational.JsonOperator;
39+
import net.sf.jsqlparser.expression.operators.relational.LikeExpression;
40+
import net.sf.jsqlparser.expression.operators.relational.Matches;
41+
import net.sf.jsqlparser.expression.operators.relational.MinorThan;
42+
import net.sf.jsqlparser.expression.operators.relational.MinorThanEquals;
43+
import net.sf.jsqlparser.expression.operators.relational.NotEqualsTo;
44+
import net.sf.jsqlparser.expression.operators.relational.RegExpMatchOperator;
45+
import net.sf.jsqlparser.expression.operators.relational.RegExpMySQLOperator;
46+
import net.sf.jsqlparser.expression.operators.relational.SimilarToExpression;
1747
import net.sf.jsqlparser.schema.Column;
1848
import net.sf.jsqlparser.statement.select.AllColumns;
1949
import net.sf.jsqlparser.statement.select.AllTableColumns;
20-
import net.sf.jsqlparser.statement.select.SubSelect;
50+
import net.sf.jsqlparser.statement.select.ParenthesedSelect;
51+
import net.sf.jsqlparser.statement.select.Select;
2152

2253
public interface ExpressionVisitor {
2354

@@ -69,7 +100,7 @@ public interface ExpressionVisitor {
69100

70101
void visit(Between between);
71102

72-
void visit (OverlapsCondition overlapsCondition);
103+
void visit(OverlapsCondition overlapsCondition);
73104

74105
void visit(EqualsTo equalsTo);
75106

@@ -93,9 +124,9 @@ public interface ExpressionVisitor {
93124

94125
void visit(NotEqualsTo notEqualsTo);
95126

96-
void visit(Column tableColumn);
127+
void visit(ParenthesedSelect selectBody);
97128

98-
void visit(SubSelect subSelect);
129+
void visit(Column tableColumn);
99130

100131
void visit(CaseExpression caseExpression);
101132

@@ -194,4 +225,6 @@ public interface ExpressionVisitor {
194225
void visit(IsDistinctExpression isDistinctExpression);
195226

196227
void visit(GeometryDistance geometryDistance);
228+
229+
void visit(Select selectBody);
197230
}

src/main/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapter.java

Lines changed: 67 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -9,30 +9,66 @@
99
*/
1010
package net.sf.jsqlparser.expression;
1111

12-
import net.sf.jsqlparser.expression.operators.arithmetic.*;
12+
import net.sf.jsqlparser.expression.operators.arithmetic.Addition;
13+
import net.sf.jsqlparser.expression.operators.arithmetic.BitwiseAnd;
14+
import net.sf.jsqlparser.expression.operators.arithmetic.BitwiseLeftShift;
15+
import net.sf.jsqlparser.expression.operators.arithmetic.BitwiseOr;
16+
import net.sf.jsqlparser.expression.operators.arithmetic.BitwiseRightShift;
17+
import net.sf.jsqlparser.expression.operators.arithmetic.BitwiseXor;
18+
import net.sf.jsqlparser.expression.operators.arithmetic.Concat;
19+
import net.sf.jsqlparser.expression.operators.arithmetic.Division;
20+
import net.sf.jsqlparser.expression.operators.arithmetic.IntegerDivision;
21+
import net.sf.jsqlparser.expression.operators.arithmetic.Modulo;
22+
import net.sf.jsqlparser.expression.operators.arithmetic.Multiplication;
23+
import net.sf.jsqlparser.expression.operators.arithmetic.Subtraction;
1324
import net.sf.jsqlparser.expression.operators.conditional.AndExpression;
1425
import net.sf.jsqlparser.expression.operators.conditional.OrExpression;
1526
import net.sf.jsqlparser.expression.operators.conditional.XorExpression;
16-
import net.sf.jsqlparser.expression.operators.relational.*;
27+
import net.sf.jsqlparser.expression.operators.relational.Between;
28+
import net.sf.jsqlparser.expression.operators.relational.EqualsTo;
29+
import net.sf.jsqlparser.expression.operators.relational.ExistsExpression;
30+
import net.sf.jsqlparser.expression.operators.relational.ExpressionList;
31+
import net.sf.jsqlparser.expression.operators.relational.FullTextSearch;
32+
import net.sf.jsqlparser.expression.operators.relational.GeometryDistance;
33+
import net.sf.jsqlparser.expression.operators.relational.GreaterThan;
34+
import net.sf.jsqlparser.expression.operators.relational.GreaterThanEquals;
35+
import net.sf.jsqlparser.expression.operators.relational.InExpression;
36+
import net.sf.jsqlparser.expression.operators.relational.IsBooleanExpression;
37+
import net.sf.jsqlparser.expression.operators.relational.IsDistinctExpression;
38+
import net.sf.jsqlparser.expression.operators.relational.IsNullExpression;
39+
import net.sf.jsqlparser.expression.operators.relational.ItemsListVisitor;
40+
import net.sf.jsqlparser.expression.operators.relational.JsonOperator;
41+
import net.sf.jsqlparser.expression.operators.relational.LikeExpression;
42+
import net.sf.jsqlparser.expression.operators.relational.Matches;
43+
import net.sf.jsqlparser.expression.operators.relational.MinorThan;
44+
import net.sf.jsqlparser.expression.operators.relational.MinorThanEquals;
45+
import net.sf.jsqlparser.expression.operators.relational.MultiExpressionList;
46+
import net.sf.jsqlparser.expression.operators.relational.NamedExpressionList;
47+
import net.sf.jsqlparser.expression.operators.relational.NotEqualsTo;
48+
import net.sf.jsqlparser.expression.operators.relational.RegExpMatchOperator;
49+
import net.sf.jsqlparser.expression.operators.relational.RegExpMySQLOperator;
50+
import net.sf.jsqlparser.expression.operators.relational.SimilarToExpression;
1751
import net.sf.jsqlparser.schema.Column;
1852
import net.sf.jsqlparser.statement.create.table.ColumnDefinition;
1953
import net.sf.jsqlparser.statement.select.AllColumns;
2054
import net.sf.jsqlparser.statement.select.AllTableColumns;
2155
import net.sf.jsqlparser.statement.select.ExpressionListItem;
2256
import net.sf.jsqlparser.statement.select.FunctionItem;
2357
import net.sf.jsqlparser.statement.select.OrderByElement;
58+
import net.sf.jsqlparser.statement.select.ParenthesedSelect;
2459
import net.sf.jsqlparser.statement.select.Pivot;
2560
import net.sf.jsqlparser.statement.select.PivotVisitor;
2661
import net.sf.jsqlparser.statement.select.PivotXml;
62+
import net.sf.jsqlparser.statement.select.Select;
2763
import net.sf.jsqlparser.statement.select.SelectExpressionItem;
2864
import net.sf.jsqlparser.statement.select.SelectItemVisitor;
2965
import net.sf.jsqlparser.statement.select.SelectVisitor;
30-
import net.sf.jsqlparser.statement.select.SubSelect;
3166
import net.sf.jsqlparser.statement.select.UnPivot;
3267
import net.sf.jsqlparser.statement.select.WithItem;
3368

3469
@SuppressWarnings({"PMD.CyclomaticComplexity", "PMD.UncommentedEmptyMethodBody"})
35-
public class ExpressionVisitorAdapter implements ExpressionVisitor, ItemsListVisitor, PivotVisitor, SelectItemVisitor {
70+
public class ExpressionVisitorAdapter
71+
implements ExpressionVisitor, ItemsListVisitor, PivotVisitor, SelectItemVisitor {
3672

3773
private SelectVisitor selectVisitor;
3874

@@ -237,17 +273,17 @@ public void visit(Column column) {
237273
}
238274

239275
@Override
240-
public void visit(SubSelect subSelect) {
276+
public void visit(ParenthesedSelect selectBody) {
241277
if (selectVisitor != null) {
242-
if (subSelect.getWithItemsList() != null) {
243-
for (WithItem item : subSelect.getWithItemsList()) {
278+
if (selectBody.getWithItemsList() != null) {
279+
for (WithItem item : selectBody.getWithItemsList()) {
244280
item.accept(selectVisitor);
245281
}
246282
}
247-
subSelect.getSelectBody().accept(selectVisitor);
283+
selectBody.accept(selectVisitor);
248284
}
249-
if (subSelect.getPivot() != null) {
250-
subSelect.getPivot().accept(this);
285+
if (selectBody.getPivot() != null) {
286+
selectBody.getPivot().accept(this);
251287
}
252288
}
253289

@@ -274,7 +310,7 @@ public void visit(WhenClause expr) {
274310
public void visit(ExistsExpression expr) {
275311
expr.getRightExpression().accept(this);
276312
}
277-
313+
278314
@Override
279315
public void visit(AnyComparisonExpression expr) {
280316

@@ -356,8 +392,7 @@ public void visit(ExtractExpression expr) {
356392
}
357393

358394
@Override
359-
public void visit(IntervalExpression expr) {
360-
}
395+
public void visit(IntervalExpression expr) {}
361396

362397
@Override
363398
public void visit(OracleHierarchicalExpression expr) {
@@ -502,16 +537,13 @@ public void visit(UnPivot unpivot) {
502537
}
503538

504539
@Override
505-
public void visit(AllColumns allColumns) {
506-
}
540+
public void visit(AllColumns allColumns) {}
507541

508542
@Override
509-
public void visit(AllTableColumns allTableColumns) {
510-
}
543+
public void visit(AllTableColumns allTableColumns) {}
511544

512545
@Override
513-
public void visit(AllValue allValue) {
514-
}
546+
public void visit(AllValue allValue) {}
515547

516548
@Override
517549
public void visit(IsDistinctExpression isDistinctExpression) {
@@ -526,9 +558,9 @@ public void visit(SelectExpressionItem selectExpressionItem) {
526558
@Override
527559
public void visit(RowConstructor rowConstructor) {
528560
if (rowConstructor.getColumnDefinitions().isEmpty()) {
529-
for (Expression expression: rowConstructor.getExprList().getExpressions()) {
561+
for (Expression expression : rowConstructor.getExprList().getExpressions()) {
530562
expression.accept(this);
531-
}
563+
}
532564
} else {
533565
for (ColumnDefinition columnDefinition : rowConstructor.getColumnDefinitions()) {
534566
columnDefinition.accept(this);
@@ -557,12 +589,10 @@ public void visit(TimeKeyExpression timeKeyExpression) {
557589
}
558590

559591
@Override
560-
public void visit(DateTimeLiteralExpression literal) {
561-
}
592+
public void visit(DateTimeLiteralExpression literal) {}
562593

563594
@Override
564-
public void visit(NextValExpression nextVal) {
565-
}
595+
public void visit(NextValExpression nextVal) {}
566596

567597
@Override
568598
public void visit(CollateExpression col) {
@@ -617,19 +647,19 @@ public void visit(TimezoneExpression expr) {
617647
@Override
618648
public void visit(JsonAggregateFunction expression) {
619649
Expression expr = expression.getExpression();
620-
if (expr!=null) {
650+
if (expr != null) {
621651
expr.accept(this);
622652
}
623-
653+
624654
expr = expression.getFilterExpression();
625-
if (expr!=null) {
655+
if (expr != null) {
626656
expr.accept(this);
627657
}
628658
}
629659

630660
@Override
631661
public void visit(JsonFunction expression) {
632-
for (JsonFunctionExpression expr: expression.getExpressions()) {
662+
for (JsonFunctionExpression expr : expression.getExpressions()) {
633663
expr.getExpression().accept(this);
634664
}
635665
}
@@ -638,7 +668,7 @@ public void visit(JsonFunction expression) {
638668
public void visit(ConnectByRootOperator connectByRootOperator) {
639669
connectByRootOperator.getColumn().accept(this);
640670
}
641-
671+
642672
@Override
643673
public void visit(OracleNamedFunctionParameter oracleNamedFunctionParameter) {
644674
oracleNamedFunctionParameter.getExpression().accept(this);
@@ -649,7 +679,12 @@ public void visit(GeometryDistance geometryDistance) {
649679
visitBinaryExpression(geometryDistance);
650680
}
651681

682+
@Override
683+
public void visit(Select selectBody) {
684+
685+
}
686+
652687
public void visit(ColumnDefinition columnDefinition) {
653-
columnDefinition.accept(this);
654-
}
688+
columnDefinition.accept(this);
689+
}
655690
}

0 commit comments

Comments
 (0)