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 bc1354410f1 Refactor constructor of CreateFunctionStatement to empty
buildAttributes (#38310)
bc1354410f1 is described below
commit bc1354410f17a9f0dafb1df258b1473361b8999d
Author: Liang Zhang <[email protected]>
AuthorDate: Tue Mar 3 14:51:54 2026 +0800
Refactor constructor of CreateFunctionStatement to empty buildAttributes
(#38310)
---
.../statement/type/DorisDDLStatementVisitor.java | 7 +++----
.../statement/type/FirebirdDDLStatementVisitor.java | 2 +-
.../statement/type/HiveDDLStatementVisitor.java | 2 +-
.../statement/type/MySQLDDLStatementVisitor.java | 5 +----
.../statement/type/OpenGaussDDLStatementVisitor.java | 2 +-
.../statement/type/OracleDDLStatementVisitor.java | 6 ++----
.../type/PostgreSQLDDLStatementVisitor.java | 2 +-
.../statement/type/SQLServerDDLStatementVisitor.java | 2 +-
.../type/ddl/function/CreateFunctionStatement.java | 20 ++++++++++----------
.../doris/ddl/DorisCreateFunctionStatement.java | 7 +++++--
.../ddl/function/OracleCreateFunctionStatement.java | 8 ++++++--
11 files changed, 32 insertions(+), 31 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 500316eddfd..f3e21e0234e 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
@@ -1437,9 +1437,9 @@ public final class DorisDDLStatementVisitor extends
DorisStatementVisitor implem
@Override
public ASTNode visitCreateFunction(final CreateFunctionContext ctx) {
- DorisCreateFunctionStatement result = new
DorisCreateFunctionStatement(getDatabaseType());
- result.setFunctionName((FunctionNameSegment)
visit(ctx.functionName()));
- if (null != ctx.routineBody()) {
+ 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));
@@ -1451,7 +1451,6 @@ public final class DorisDDLStatementVisitor extends
DorisStatementVisitor implem
paramIndex++;
}
}
- result.setRoutineBody((RoutineBodySegment)
visit(ctx.routineBody()));
} else {
if (null != ctx.GLOBAL()) {
result.setGlobal(true);
diff --git
a/parser/sql/engine/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDDLStatementVisitor.java
b/parser/sql/engine/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDDLStatementVisitor.java
index 49743463be0..c7cdde99624 100644
---
a/parser/sql/engine/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDDLStatementVisitor.java
+++
b/parser/sql/engine/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDDLStatementVisitor.java
@@ -259,7 +259,7 @@ public final class FirebirdDDLStatementVisitor extends
FirebirdStatementVisitor
@Override
public ASTNode visitCreateFunction(final CreateFunctionContext ctx) {
- return new CreateFunctionStatement(getDatabaseType());
+ return new CreateFunctionStatement(getDatabaseType(), null, null,
Collections.emptyList());
}
@Override
diff --git
a/parser/sql/engine/dialect/hive/src/main/java/org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDDLStatementVisitor.java
b/parser/sql/engine/dialect/hive/src/main/java/org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDDLStatementVisitor.java
index 8c74bb97586..87ecb79631b 100644
---
a/parser/sql/engine/dialect/hive/src/main/java/org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDDLStatementVisitor.java
+++
b/parser/sql/engine/dialect/hive/src/main/java/org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDDLStatementVisitor.java
@@ -414,7 +414,7 @@ public final class HiveDDLStatementVisitor extends
HiveStatementVisitor implemen
@Override
public ASTNode visitCreateFunction(final CreateFunctionContext ctx) {
- return new CreateFunctionStatement(getDatabaseType());
+ return new CreateFunctionStatement(getDatabaseType(), null, null,
Collections.emptyList());
}
@Override
diff --git
a/parser/sql/engine/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/type/MySQLDDLStatementVisitor.java
b/parser/sql/engine/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/type/MySQLDDLStatementVisitor.java
index 9ac4f189b28..a536d30b987 100644
---
a/parser/sql/engine/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/type/MySQLDDLStatementVisitor.java
+++
b/parser/sql/engine/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/type/MySQLDDLStatementVisitor.java
@@ -792,10 +792,7 @@ public final class MySQLDDLStatementVisitor extends
MySQLStatementVisitor implem
@Override
public ASTNode visitCreateFunction(final CreateFunctionContext ctx) {
- CreateFunctionStatement result = new
CreateFunctionStatement(getDatabaseType());
- result.setFunctionName((FunctionNameSegment)
visit(ctx.functionName()));
- result.setRoutineBody((RoutineBodySegment) visit(ctx.routineBody()));
- return result;
+ return new CreateFunctionStatement(getDatabaseType(),
(FunctionNameSegment) visit(ctx.functionName()), (RoutineBodySegment)
visit(ctx.routineBody()), Collections.emptyList());
}
@SuppressWarnings("unchecked")
diff --git
a/parser/sql/engine/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java
b/parser/sql/engine/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java
index dba99c8c10e..aeaae3a78f7 100644
---
a/parser/sql/engine/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java
+++
b/parser/sql/engine/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java
@@ -650,7 +650,7 @@ public final class OpenGaussDDLStatementVisitor extends
OpenGaussStatementVisito
@Override
public ASTNode visitCreateFunction(final CreateFunctionContext ctx) {
- return new CreateFunctionStatement(getDatabaseType());
+ return new CreateFunctionStatement(getDatabaseType(), null, null,
Collections.emptyList());
}
@Override
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 8f10fa7de31..f5bbd661bae 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
@@ -1075,10 +1075,8 @@ public final class OracleDDLStatementVisitor extends
OracleStatementVisitor impl
getSqlStatementsInPlsql().sort(Comparator.comparingInt(SQLStatementSegment::getStartIndex));
getProcedureCallNames().sort(Comparator.comparingInt(ProcedureCallNameSegment::getStartIndex));
getDynamicSqlStatementExpressions().sort(Comparator.comparingInt(ExpressionSegment::getStartIndex));
- OracleCreateFunctionStatement result = new
OracleCreateFunctionStatement(getDatabaseType(), getSqlStatementsInPlsql(),
getProcedureCallNames());
- result.setFunctionName(visitFunctionName(ctx.plsqlFunctionSource()));
-
result.getDynamicSqlStatementExpressions().addAll(getDynamicSqlStatementExpressions());
- return result;
+ return new OracleCreateFunctionStatement(
+ getDatabaseType(), getSqlStatementsInPlsql(),
getProcedureCallNames(), visitFunctionName(ctx.plsqlFunctionSource()), null,
getDynamicSqlStatementExpressions());
}
private FunctionNameSegment visitFunctionName(final
PlsqlFunctionSourceContext ctx) {
diff --git
a/parser/sql/engine/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java
b/parser/sql/engine/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java
index 14ab4df7391..768b864623c 100644
---
a/parser/sql/engine/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java
+++
b/parser/sql/engine/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java
@@ -792,7 +792,7 @@ public final class PostgreSQLDDLStatementVisitor extends
PostgreSQLStatementVisi
@Override
public ASTNode visitCreateFunction(final CreateFunctionContext ctx) {
- return new CreateFunctionStatement(getDatabaseType());
+ return new CreateFunctionStatement(getDatabaseType(), null, null,
Collections.emptyList());
}
@Override
diff --git
a/parser/sql/engine/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/type/SQLServerDDLStatementVisitor.java
b/parser/sql/engine/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/type/SQLServerDDLStatementVisitor.java
index 5c92133b987..a9137d08bd2 100644
---
a/parser/sql/engine/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/type/SQLServerDDLStatementVisitor.java
+++
b/parser/sql/engine/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/type/SQLServerDDLStatementVisitor.java
@@ -375,7 +375,7 @@ public final class SQLServerDDLStatementVisitor extends
SQLServerStatementVisito
@Override
public ASTNode visitCreateFunction(final CreateFunctionContext ctx) {
- return new CreateFunctionStatement(getDatabaseType());
+ return new CreateFunctionStatement(getDatabaseType(), null, null,
Collections.emptyList());
}
@Override
diff --git
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/function/CreateFunctionStatement.java
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/function/CreateFunctionStatement.java
index db648b1c164..b548504574a 100644
---
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/function/CreateFunctionStatement.java
+++
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/function/CreateFunctionStatement.java
@@ -18,7 +18,6 @@
package
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.function;
import lombok.Getter;
-import lombok.Setter;
import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
import
org.apache.shardingsphere.sql.parser.statement.core.extractor.TableExtractor;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.routine.FunctionNameSegment;
@@ -28,7 +27,6 @@ import
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.S
import
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.type.TableSQLStatementAttribute;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.DDLStatement;
-import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
@@ -37,19 +35,23 @@ import java.util.Optional;
* Create function statement.
*/
@Getter
-@Setter
public class CreateFunctionStatement extends DDLStatement {
- private FunctionNameSegment functionName;
+ private final FunctionNameSegment functionName;
- private RoutineBodySegment routineBody;
+ private final RoutineBodySegment routineBody;
- private final List<ExpressionSegment> dynamicSqlStatementExpressions = new
ArrayList<>();
+ private final List<ExpressionSegment> dynamicSqlStatementExpressions;
- private SQLStatementAttributes attributes;
+ private final SQLStatementAttributes attributes;
- public CreateFunctionStatement(final DatabaseType databaseType) {
+ public CreateFunctionStatement(final DatabaseType databaseType,
+ final FunctionNameSegment functionName,
final RoutineBodySegment routineBody, final List<ExpressionSegment>
dynamicSqlStatementExpressions) {
super(databaseType);
+ this.functionName = functionName;
+ this.routineBody = routineBody;
+ this.dynamicSqlStatementExpressions = dynamicSqlStatementExpressions;
+ attributes = new SQLStatementAttributes(new
TableSQLStatementAttribute(null == routineBody ? Collections.emptyList() : new
TableExtractor().extractExistTableFromRoutineBody(routineBody)));
}
/**
@@ -72,7 +74,5 @@ public class CreateFunctionStatement extends DDLStatement {
@Override
public void buildAttributes() {
- attributes = new SQLStatementAttributes(
- new TableSQLStatementAttribute(getRoutineBody().map(optional
-> new
TableExtractor().extractExistTableFromRoutineBody(optional)).orElseGet(Collections::emptyList)));
}
}
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 966e548be1f..50c15023102 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
@@ -20,6 +20,8 @@ package
org.apache.shardingsphere.sql.parser.statement.doris.ddl;
import lombok.Getter;
import lombok.Setter;
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.generic.DataTypeSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.function.CreateFunctionStatement;
@@ -55,8 +57,9 @@ public final class DorisCreateFunctionStatement extends
CreateFunctionStatement
private final Map<String, String> properties = new LinkedHashMap<>();
- public DorisCreateFunctionStatement(final DatabaseType databaseType) {
- super(databaseType);
+ public DorisCreateFunctionStatement(final DatabaseType databaseType,
+ final FunctionNameSegment
functionName, final RoutineBodySegment routineBody, final
List<ExpressionSegment> dynamicSqlStatementExpressions) {
+ super(databaseType, functionName, routineBody,
dynamicSqlStatementExpressions);
}
/**
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 115c093db28..227be85b539 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
@@ -19,6 +19,9 @@ 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;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.function.CreateFunctionStatement;
@@ -35,8 +38,9 @@ public final class OracleCreateFunctionStatement extends
CreateFunctionStatement
private final List<ProcedureCallNameSegment> procedureCallNames;
- public OracleCreateFunctionStatement(final DatabaseType databaseType,
final List<SQLStatementSegment> sqlStatements, final
List<ProcedureCallNameSegment> procedureCallNames) {
- super(databaseType);
+ 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);
this.sqlStatements = sqlStatements;
this.procedureCallNames = procedureCallNames;
}