This is an automated email from the ASF dual-hosted git repository.

duanzhengqiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new 9fe75e86b94 Refactored redundant code in the function visit (#30296)
9fe75e86b94 is described below

commit 9fe75e86b94b7a85a1dc3ab636618b33b9c00b57
Author: LotusMoon <[email protected]>
AuthorDate: Mon Feb 26 19:27:49 2024 +0800

    Refactored redundant code in the function visit (#30296)
---
 .../statement/SQLServerStatementVisitor.java       | 55 +++++++---------------
 1 file changed, 17 insertions(+), 38 deletions(-)

diff --git 
a/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java
 
b/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java
index 7ac2fd263e9..488d1ce266b 100644
--- 
a/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java
+++ 
b/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java
@@ -712,6 +712,16 @@ public abstract class SQLServerStatementVisitor extends 
SQLServerStatementBaseVi
         return new FunctionSegment(ctx.getStart().getStartIndex(), 
ctx.getStop().getStopIndex(), ctx.getChild(0).getChild(0).getText(), 
getOriginalText(ctx));
     }
     
+    private ASTNode getFunctionSegment(final int startIndex, final int 
stopIndex, final String functionName, final String text, final 
List<ExprContext> exprList) {
+        FunctionSegment result = new FunctionSegment(startIndex, stopIndex, 
functionName, text);
+        if (null != exprList) {
+            for (ExprContext each : exprList) {
+                result.getParameters().add((ExpressionSegment) visit(each));
+            }
+        }
+        return result;
+    }
+    
     @Override
     public ASTNode visitTrimFunction(final TrimFunctionContext ctx) {
         FunctionSegment result = new 
FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), 
ctx.TRIM().getText(), getOriginalText(ctx));
@@ -743,24 +753,12 @@ public abstract class SQLServerStatementVisitor extends 
SQLServerStatementBaseVi
     
     @Override
     public ASTNode visitGraphAggFunction(final GraphAggFunctionContext ctx) {
-        FunctionSegment result = new 
FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), 
ctx.graphAggFunctionName().getText(), getOriginalText(ctx));
-        if (null != ctx.expr()) {
-            for (ExprContext each : ctx.expr()) {
-                result.getParameters().add((ExpressionSegment) visit(each));
-            }
-        }
-        return result;
+        return getFunctionSegment(ctx.getStart().getStartIndex(), 
ctx.getStop().getStopIndex(), ctx.graphAggFunctionName().getText(), 
getOriginalText(ctx), ctx.expr());
     }
     
     @Override
     public final ASTNode visitApproxFunction(final ApproxFunctionContext ctx) {
-        FunctionSegment result = new 
FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), 
ctx.funcName.getText(), getOriginalText(ctx));
-        if (null != ctx.expr()) {
-            for (ExprContext each : ctx.expr()) {
-                result.getParameters().add((ExpressionSegment) visit(each));
-            }
-        }
-        return result;
+        return getFunctionSegment(ctx.getStart().getStartIndex(), 
ctx.getStop().getStopIndex(), ctx.funcName.getText(), getOriginalText(ctx), 
ctx.expr());
     }
     
     @Override
@@ -794,12 +792,7 @@ public abstract class SQLServerStatementVisitor extends 
SQLServerStatementBaseVi
     
     @Override
     public final ASTNode visitJsonArrayFunction(final JsonArrayFunctionContext 
ctx) {
-        FunctionSegment result = new 
FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), 
ctx.JSON_ARRAY().getText(), getOriginalText(ctx));
-        if (null != ctx.expr()) {
-            for (ExprContext each : ctx.expr()) {
-                result.getParameters().add((ExpressionSegment) visit(each));
-            }
-        }
+        FunctionSegment result = (FunctionSegment) 
getFunctionSegment(ctx.getStart().getStartIndex(), 
ctx.getStop().getStopIndex(), ctx.JSON_ARRAY().getText(), getOriginalText(ctx), 
ctx.expr());
         if (null != ctx.jsonNullClause()) {
             result.getParameters().add(new 
LiteralExpressionSegment(ctx.jsonNullClause().start.getStartIndex(), 
ctx.jsonNullClause().stop.getStopIndex(), ctx.jsonNullClause().getText()));
         }
@@ -872,19 +865,12 @@ public abstract class SQLServerStatementVisitor extends 
SQLServerStatementBaseVi
     
     @Override
     public final ASTNode visitOpenJsonFunction(final OpenJsonFunctionContext 
ctx) {
-        FunctionSegment result = new 
FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), 
ctx.OPENJSON().getText(), getOriginalText(ctx));
-        for (ExprContext each : ctx.expr()) {
-            result.getParameters().add((ExpressionSegment) visit(each));
-        }
-        return result;
+        return getFunctionSegment(ctx.getStart().getStartIndex(), 
ctx.getStop().getStopIndex(), ctx.OPENJSON().getText(), getOriginalText(ctx), 
ctx.expr());
     }
     
     @Override
     public final ASTNode visitOpenRowSetFunction(final 
OpenRowSetFunctionContext ctx) {
-        FunctionSegment result = new 
FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), 
ctx.OPENROWSET().getText(), getOriginalText(ctx));
-        for (ExprContext each : ctx.expr()) {
-            result.getParameters().add((ExpressionSegment) visit(each));
-        }
+        FunctionSegment result = (FunctionSegment) 
getFunctionSegment(ctx.getStart().getStartIndex(), 
ctx.getStop().getStopIndex(), ctx.OPENROWSET().getText(), getOriginalText(ctx), 
ctx.expr());
         if (null != ctx.tableName()) {
             result.getParameters().add(new 
LiteralExpressionSegment(ctx.tableName().getStart().getStartIndex(), 
ctx.tableName().getStop().getStopIndex(), ctx.tableName().getText()));
         }
@@ -893,19 +879,12 @@ public abstract class SQLServerStatementVisitor extends 
SQLServerStatementBaseVi
     
     @Override
     public ASTNode visitOpenQueryFunction(final OpenQueryFunctionContext ctx) {
-        FunctionSegment result = new 
FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), 
ctx.OPENQUERY().getText(), getOriginalText(ctx));
-        for (ExprContext each : ctx.expr()) {
-            result.getParameters().add((ExpressionSegment) visit(each));
-        }
-        return result;
+        return getFunctionSegment(ctx.getStart().getStartIndex(), 
ctx.getStop().getStopIndex(), ctx.OPENQUERY().getText(), getOriginalText(ctx), 
ctx.expr());
     }
     
     @Override
     public final ASTNode visitRegularFunction(final RegularFunctionContext 
ctx) {
-        FunctionSegment result = new 
FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), 
ctx.regularFunctionName().getText(), getOriginalText(ctx));
-        Collection<ExpressionSegment> expressionSegments = 
ctx.expr().stream().map(each -> (ExpressionSegment) 
visit(each)).collect(Collectors.toList());
-        result.getParameters().addAll(expressionSegments);
-        return result;
+        return getFunctionSegment(ctx.getStart().getStartIndex(), 
ctx.getStop().getStopIndex(), ctx.regularFunctionName().getText(), 
getOriginalText(ctx), ctx.expr());
     }
     
     @Override

Reply via email to