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;
}