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

zhangliang 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 5f4ca8f5e1c Refactor DorisCreateFunctionStatement and 
OracleCreateFunctionStatement (#38313)
5f4ca8f5e1c is described below

commit 5f4ca8f5e1c3dad118fba9aead088b8f814f9e8d
Author: Liang Zhang <[email protected]>
AuthorDate: Tue Mar 3 15:18:32 2026 +0800

    Refactor DorisCreateFunctionStatement and OracleCreateFunctionStatement 
(#38313)
---
 .../statement/type/DorisDDLStatementVisitor.java   | 28 +++++++++++-----------
 .../statement/type/OracleDDLStatementVisitor.java  |  2 +-
 .../doris/ddl/DorisCreateFunctionStatement.java    |  6 ++---
 .../function/OracleCreateFunctionStatement.java    |  5 ++--
 4 files changed, 20 insertions(+), 21 deletions(-)

diff --git 
a/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDDLStatementVisitor.java
 
b/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDDLStatementVisitor.java
index 6bb688fa766..80cf0587175 100644
--- 
a/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDDLStatementVisitor.java
+++ 
b/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDDLStatementVisitor.java
@@ -1469,20 +1469,8 @@ public final class DorisDDLStatementVisitor extends 
DorisStatementVisitor implem
     @Override
     public ASTNode visitCreateFunction(final CreateFunctionContext ctx) {
         RoutineBodySegment routineBody = null == ctx.routineBody() ? null : 
(RoutineBodySegment) visit(ctx.routineBody());
-        DorisCreateFunctionStatement result = new 
DorisCreateFunctionStatement(getDatabaseType(), (FunctionNameSegment) 
visit(ctx.functionName()), routineBody, Collections.emptyList());
-        if (null != routineBody) {
-            int paramIndex = 0;
-            for (int i = 0; i < ctx.dataType().size(); i++) {
-                DataTypeSegment dataType = (DataTypeSegment) 
visit(ctx.dataType(i));
-                if (i == ctx.dataType().size() - 1 && null != ctx.RETURNS()) {
-                    result.setReturnType(dataType);
-                } else if (paramIndex < ctx.identifier().size()) {
-                    IdentifierValue paramName = (IdentifierValue) 
visit(ctx.identifier(paramIndex));
-                    result.getNamedParameters().put(paramName, dataType);
-                    paramIndex++;
-                }
-            }
-        } else {
+        DorisCreateFunctionStatement result = new 
DorisCreateFunctionStatement(getDatabaseType(), (FunctionNameSegment) 
visit(ctx.functionName()), routineBody);
+        if (null == routineBody) {
             if (null != ctx.GLOBAL()) {
                 result.setGlobal(true);
             }
@@ -1522,6 +1510,18 @@ public final class DorisDDLStatementVisitor extends 
DorisStatementVisitor implem
             if (null != ctx.PROPERTIES()) {
                 fillCreateFunctionProperties(ctx, result);
             }
+        } else {
+            int paramIndex = 0;
+            for (int i = 0; i < ctx.dataType().size(); i++) {
+                DataTypeSegment dataType = (DataTypeSegment) 
visit(ctx.dataType(i));
+                if (i == ctx.dataType().size() - 1 && null != ctx.RETURNS()) {
+                    result.setReturnType(dataType);
+                } else if (paramIndex < ctx.identifier().size()) {
+                    IdentifierValue paramName = (IdentifierValue) 
visit(ctx.identifier(paramIndex));
+                    result.getNamedParameters().put(paramName, dataType);
+                    paramIndex++;
+                }
+            }
         }
         return result;
     }
diff --git 
a/parser/sql/engine/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/type/OracleDDLStatementVisitor.java
 
b/parser/sql/engine/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/type/OracleDDLStatementVisitor.java
index f5bbd661bae..99c03b51f0e 100644
--- 
a/parser/sql/engine/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/type/OracleDDLStatementVisitor.java
+++ 
b/parser/sql/engine/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/type/OracleDDLStatementVisitor.java
@@ -1076,7 +1076,7 @@ public final class OracleDDLStatementVisitor extends 
OracleStatementVisitor impl
         
getProcedureCallNames().sort(Comparator.comparingInt(ProcedureCallNameSegment::getStartIndex));
         
getDynamicSqlStatementExpressions().sort(Comparator.comparingInt(ExpressionSegment::getStartIndex));
         return new OracleCreateFunctionStatement(
-                getDatabaseType(), getSqlStatementsInPlsql(), 
getProcedureCallNames(), visitFunctionName(ctx.plsqlFunctionSource()), null, 
getDynamicSqlStatementExpressions());
+                getDatabaseType(), getSqlStatementsInPlsql(), 
getProcedureCallNames(), visitFunctionName(ctx.plsqlFunctionSource()), 
getDynamicSqlStatementExpressions());
     }
     
     private FunctionNameSegment visitFunctionName(final 
PlsqlFunctionSourceContext ctx) {
diff --git 
a/parser/sql/statement/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/statement/doris/ddl/DorisCreateFunctionStatement.java
 
b/parser/sql/statement/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/statement/doris/ddl/DorisCreateFunctionStatement.java
index 50c15023102..746ee36c914 100644
--- 
a/parser/sql/statement/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/statement/doris/ddl/DorisCreateFunctionStatement.java
+++ 
b/parser/sql/statement/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/statement/doris/ddl/DorisCreateFunctionStatement.java
@@ -27,6 +27,7 @@ import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.DataT
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.function.CreateFunctionStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.core.value.identifier.IdentifierValue;
 
+import java.util.Collections;
 import java.util.LinkedHashMap;
 import java.util.LinkedList;
 import java.util.List;
@@ -57,9 +58,8 @@ public final class DorisCreateFunctionStatement extends 
CreateFunctionStatement
     
     private final Map<String, String> properties = new LinkedHashMap<>();
     
-    public DorisCreateFunctionStatement(final DatabaseType databaseType,
-                                        final FunctionNameSegment 
functionName, final RoutineBodySegment routineBody, final 
List<ExpressionSegment> dynamicSqlStatementExpressions) {
-        super(databaseType, functionName, routineBody, 
dynamicSqlStatementExpressions);
+    public DorisCreateFunctionStatement(final DatabaseType databaseType, final 
FunctionNameSegment functionName, final RoutineBodySegment routineBody) {
+        super(databaseType, functionName, routineBody, 
Collections.emptyList());
     }
     
     /**
diff --git 
a/parser/sql/statement/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/statement/oracle/ddl/function/OracleCreateFunctionStatement.java
 
b/parser/sql/statement/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/statement/oracle/ddl/function/OracleCreateFunctionStatement.java
index 227be85b539..f2f53056c0a 100644
--- 
a/parser/sql/statement/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/statement/oracle/ddl/function/OracleCreateFunctionStatement.java
+++ 
b/parser/sql/statement/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/statement/oracle/ddl/function/OracleCreateFunctionStatement.java
@@ -20,7 +20,6 @@ package 
org.apache.shardingsphere.sql.parser.statement.oracle.ddl.function;
 import lombok.Getter;
 import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.routine.FunctionNameSegment;
-import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.routine.RoutineBodySegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.ExpressionSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.procedure.ProcedureCallNameSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.procedure.SQLStatementSegment;
@@ -39,8 +38,8 @@ public final class OracleCreateFunctionStatement extends 
CreateFunctionStatement
     private final List<ProcedureCallNameSegment> procedureCallNames;
     
     public OracleCreateFunctionStatement(final DatabaseType databaseType, 
final List<SQLStatementSegment> sqlStatements, final 
List<ProcedureCallNameSegment> procedureCallNames,
-                                         final FunctionNameSegment 
functionName, final RoutineBodySegment routineBody, final 
List<ExpressionSegment> dynamicSqlStatementExpressions) {
-        super(databaseType, functionName, routineBody, 
dynamicSqlStatementExpressions);
+                                         final FunctionNameSegment 
functionName, final List<ExpressionSegment> dynamicSqlStatementExpressions) {
+        super(databaseType, functionName, null, 
dynamicSqlStatementExpressions);
         this.sqlStatements = sqlStatements;
         this.procedureCallNames = procedureCallNames;
     }

Reply via email to