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]

Reply via email to