strongduanmu commented on code in PR #27228:
URL: https://github.com/apache/shardingsphere/pull/27228#discussion_r1267625975
##########
parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDALStatementVisitor.java:
##########
@@ -32,4 +35,21 @@ public final class OracleDALStatementVisitor extends
OracleStatementVisitor impl
public ASTNode visitAlterResourceCost(final AlterResourceCostContext ctx) {
return new OracleAlterResourceCostStatement();
}
+
+ @Override
+ public ASTNode visitExplain(final ExplainContext ctx) {
+ OracleExplainStatement result = new OracleExplainStatement();
+ OracleDMLStatementVisitor visitor = new OracleDMLStatementVisitor();
+ visitor.setParameterMarkerSegments(getParameterMarkerSegments());
+ if (null != ctx.insert()) {
+ result.setStatement((SQLStatement) visitor.visit(ctx.insert()));
+ } else if (null != ctx.delete()) {
+ result.setStatement((SQLStatement) visitor.visit(ctx.delete()));
+ } else if (null != ctx.update()) {
+ result.setStatement((SQLStatement) visitor.visit(ctx.update()));
+ } else if (null != ctx.select()) {
+ result.setStatement((SQLStatement) visitor.visit(ctx.select()));
+ }
+ return result;
Review Comment:
May be you should call
`result.addParameterMarkerSegments(getParameterMarkerSegments());` before
return result.
##########
parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDALStatementVisitor.java:
##########
@@ -32,4 +35,21 @@ public final class OracleDALStatementVisitor extends
OracleStatementVisitor impl
public ASTNode visitAlterResourceCost(final AlterResourceCostContext ctx) {
return new OracleAlterResourceCostStatement();
}
+
+ @Override
+ public ASTNode visitExplain(final ExplainContext ctx) {
+ OracleExplainStatement result = new OracleExplainStatement();
+ OracleDMLStatementVisitor visitor = new OracleDMLStatementVisitor();
+ visitor.setParameterMarkerSegments(getParameterMarkerSegments());
Review Comment:
Maybe we should merge parameterMarkerSegments in OracleDMLStatementVisitor
into parameterMarkerSegments in OracleDALStatementVisitor.
```
getParameterMarkerSegments().addAll(visitor.getParameterMarkerSegments());
```
##########
parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java:
##########
@@ -152,7 +152,11 @@
@Getter(AccessLevel.PROTECTED)
public abstract class OracleStatementVisitor extends
OracleStatementBaseVisitor<ASTNode> {
- private final Collection<ParameterMarkerSegment> parameterMarkerSegments =
new LinkedList<>();
+ private Collection<ParameterMarkerSegment> parameterMarkerSegments = new
LinkedList<>();
+
+ public void setParameterMarkerSegments(final
Collection<ParameterMarkerSegment> parameterMarkerSegments) {
Review Comment:
Maybe we don't need setParameterMarkerSegments method.
##########
parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java:
##########
@@ -152,7 +152,11 @@
@Getter(AccessLevel.PROTECTED)
public abstract class OracleStatementVisitor extends
OracleStatementBaseVisitor<ASTNode> {
- private final Collection<ParameterMarkerSegment> parameterMarkerSegments =
new LinkedList<>();
+ private Collection<ParameterMarkerSegment> parameterMarkerSegments = new
LinkedList<>();
Review Comment:
Please do not remove this final modifier.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]