This is an automated email from the ASF dual-hosted git repository.
zhaojinchao 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 e75b626b0cc Minor refactor for SQLFederationEngine and
SQLFederationDataTypeBuilder (#35350)
e75b626b0cc is described below
commit e75b626b0cc6567abc922415091abdf4ec08943e
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Fri May 9 17:11:41 2025 +0800
Minor refactor for SQLFederationEngine and SQLFederationDataTypeBuilder
(#35350)
---
.../sqlfederation/engine/SQLFederationEngine.java | 6 +--
.../executor/utils/EnumeratorUtils.java | 4 +-
.../SQLFederationDataTypeBuilder.java} | 10 ++--
.../metadata/schema/SQLFederationDatabase.java | 53 ----------------------
.../metadata/schema/SQLFederationSchema.java | 4 +-
.../metadata/schema/SQLFederationTable.java | 4 +-
6 files changed, 12 insertions(+), 69 deletions(-)
diff --git
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/engine/SQLFederationEngine.java
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/engine/SQLFederationEngine.java
index 1de5a662efd..0605230cc3e 100644
---
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/engine/SQLFederationEngine.java
+++
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/engine/SQLFederationEngine.java
@@ -82,8 +82,6 @@ import java.util.Optional;
@Getter
public final class SQLFederationEngine implements AutoCloseable {
- private static final int DEFAULT_METADATA_VERSION = 0;
-
private static final JavaTypeFactory DEFAULT_DATA_TYPE_FACTORY = new
JavaTypeFactoryImpl();
private final ProcessEngine processEngine = new ProcessEngine();
@@ -218,7 +216,6 @@ public final class SQLFederationEngine implements
AutoCloseable {
final
SelectStatementContext selectStatementContext, final String sql, final
Convention convention) {
SQLStatementCompiler sqlStatementCompiler = new
SQLStatementCompiler(converter, convention);
SQLFederationCompilerEngine compilerEngine = new
SQLFederationCompilerEngine(databaseName, schemaName,
sqlFederationRule.getConfiguration().getExecutionPlanCache());
- // TODO open useCache flag when ShardingSphereTable contains version
return compilerEngine.compile(buildCacheKey(metaData, databaseName,
schemaName, selectStatementContext, sql, sqlStatementCompiler), false);
}
@@ -235,8 +232,7 @@ public final class SQLFederationEngine implements
AutoCloseable {
for (String each :
selectStatementContext.getTablesContext().getTableNames()) {
ShardingSphereTable table = schema.getTable(each);
ShardingSpherePreconditions.checkNotNull(table, () -> new
NoSuchTableException(each));
- // TODO replace DEFAULT_METADATA_VERSION with actual version in
ShardingSphereTable
- result.getTableMetaDataVersions().put(new
QualifiedTable(schema.getName(), table.getName()), DEFAULT_METADATA_VERSION);
+ result.getTableMetaDataVersions().put(new
QualifiedTable(schema.getName(), table.getName()), 0);
}
return result;
}
diff --git
a/kernel/sql-federation/executor/src/main/java/org/apache/shardingsphere/sqlfederation/executor/utils/EnumeratorUtils.java
b/kernel/sql-federation/executor/src/main/java/org/apache/shardingsphere/sqlfederation/executor/utils/EnumeratorUtils.java
index dd60ff2c7cf..64fa788258d 100644
---
a/kernel/sql-federation/executor/src/main/java/org/apache/shardingsphere/sqlfederation/executor/utils/EnumeratorUtils.java
+++
b/kernel/sql-federation/executor/src/main/java/org/apache/shardingsphere/sqlfederation/executor/utils/EnumeratorUtils.java
@@ -23,7 +23,7 @@ import
org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import
org.apache.shardingsphere.infra.exception.kernel.data.UnsupportedDataTypeConversionException;
import
org.apache.shardingsphere.infra.executor.sql.execute.result.query.impl.driver.jdbc.type.util.ResultSetUtils;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereColumn;
-import
org.apache.shardingsphere.sqlfederation.optimizer.metadata.util.SQLFederationDataTypeUtils;
+import
org.apache.shardingsphere.sqlfederation.optimizer.metadata.datatype.SQLFederationDataTypeBuilder;
import java.sql.SQLFeatureNotSupportedException;
import java.util.HashMap;
@@ -55,7 +55,7 @@ public final class EnumeratorUtils {
private static Optional<Class<?>> getSQLTypeClass(final
List<ShardingSphereColumn> columns, final DatabaseType databaseType, final int
index) {
try {
- return
Optional.of(SQLFederationDataTypeUtils.getSqlTypeClass(databaseType,
columns.get(index)));
+ return
Optional.of(SQLFederationDataTypeBuilder.getSqlTypeClass(databaseType,
columns.get(index)));
} catch (final IllegalArgumentException ex) {
return Optional.empty();
}
diff --git
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/util/SQLFederationDataTypeUtils.java
b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/datatype/SQLFederationDataTypeBuilder.java
similarity index 91%
rename from
kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/util/SQLFederationDataTypeUtils.java
rename to
kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/datatype/SQLFederationDataTypeBuilder.java
index 3fbbea38a70..ca940870134 100644
---
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/util/SQLFederationDataTypeUtils.java
+++
b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/datatype/SQLFederationDataTypeBuilder.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.sqlfederation.optimizer.metadata.util;
+package org.apache.shardingsphere.sqlfederation.optimizer.metadata.datatype;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
@@ -29,20 +29,20 @@ import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSp
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
/**
- * SQL federation data type utility class.
+ * SQL federation data type builder.
*/
@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class SQLFederationDataTypeUtils {
+public final class SQLFederationDataTypeBuilder {
/**
- * Create rel data type.
+ * Build rel data type.
*
* @param table ShardingSphere table
* @param protocolType protocol type
* @param typeFactory type factory
* @return rel data type
*/
- public static RelDataType createRelDataType(final ShardingSphereTable
table, final DatabaseType protocolType, final RelDataTypeFactory typeFactory) {
+ public static RelDataType build(final ShardingSphereTable table, final
DatabaseType protocolType, final RelDataTypeFactory typeFactory) {
Builder fieldInfoBuilder = typeFactory.builder();
for (ShardingSphereColumn each : table.getAllColumns()) {
fieldInfoBuilder.add(each.getName(), getRelDataType(protocolType,
each, typeFactory));
diff --git
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/schema/SQLFederationDatabase.java
b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/schema/SQLFederationDatabase.java
deleted file mode 100644
index 0ea31dd5195..00000000000
---
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/schema/SQLFederationDatabase.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.sqlfederation.optimizer.metadata.schema;
-
-import com.cedarsoftware.util.CaseInsensitiveMap;
-import lombok.Getter;
-import org.apache.calcite.adapter.java.JavaTypeFactory;
-import org.apache.calcite.schema.Schema;
-import org.apache.calcite.schema.impl.AbstractSchema;
-import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
-import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
-
-import java.util.Map;
-
-/**
- * SQL federation database.
- */
-@Getter
-public final class SQLFederationDatabase extends AbstractSchema {
-
- private final String name;
-
- private final Map<String, Schema> subSchemaMap;
-
- public SQLFederationDatabase(final ShardingSphereDatabase database, final
DatabaseType protocolType, final JavaTypeFactory javaTypeFactory) {
- name = database.getName();
- subSchemaMap = createSubSchemaMap(database, protocolType,
javaTypeFactory);
- }
-
- private Map<String, Schema> createSubSchemaMap(final
ShardingSphereDatabase database, final DatabaseType protocolType, final
JavaTypeFactory javaTypeFactory) {
- Map<String, Schema> result = new
CaseInsensitiveMap<>(database.getAllSchemas().size(), 1F);
- for (ShardingSphereSchema each : database.getAllSchemas()) {
- result.put(each.getName(), new SQLFederationSchema(each.getName(),
each, protocolType, javaTypeFactory));
- }
- return result;
- }
-}
diff --git
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/schema/SQLFederationSchema.java
b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/schema/SQLFederationSchema.java
index 853bc8f475a..f5106f8c0c6 100644
---
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/schema/SQLFederationSchema.java
+++
b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/schema/SQLFederationSchema.java
@@ -29,7 +29,7 @@ import
org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereView;
-import
org.apache.shardingsphere.sqlfederation.optimizer.metadata.util.SQLFederationDataTypeUtils;
+import
org.apache.shardingsphere.sqlfederation.optimizer.metadata.datatype.SQLFederationDataTypeBuilder;
import java.util.Collections;
import java.util.Map;
@@ -62,7 +62,7 @@ public final class SQLFederationSchema extends AbstractSchema
{
}
private ViewTable getViewTable(final ShardingSphereSchema schema, final
ShardingSphereTable table, final DatabaseType protocolType, final
JavaTypeFactory javaTypeFactory) {
- RelDataType relDataType =
SQLFederationDataTypeUtils.createRelDataType(table, protocolType,
javaTypeFactory);
+ RelDataType relDataType = SQLFederationDataTypeBuilder.build(table,
protocolType, javaTypeFactory);
ShardingSphereView view = schema.getView(table.getName());
return new ViewTable(javaTypeFactory.getJavaClass(relDataType),
RelDataTypeImpl.proto(relDataType), view.getViewDefinition(),
Collections.emptyList(), Collections.emptyList());
}
diff --git
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/schema/SQLFederationTable.java
b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/schema/SQLFederationTable.java
index e66e7190d68..2bb3d91c67d 100644
---
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/schema/SQLFederationTable.java
+++
b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/schema/SQLFederationTable.java
@@ -49,7 +49,7 @@ import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSp
import
org.apache.shardingsphere.sqlfederation.optimizer.metadata.schema.table.EmptyRowEnumerator;
import
org.apache.shardingsphere.sqlfederation.optimizer.metadata.schema.table.ScanExecutor;
import
org.apache.shardingsphere.sqlfederation.optimizer.metadata.schema.table.ScanExecutorContext;
-import
org.apache.shardingsphere.sqlfederation.optimizer.metadata.util.SQLFederationDataTypeUtils;
+import
org.apache.shardingsphere.sqlfederation.optimizer.metadata.datatype.SQLFederationDataTypeBuilder;
import java.lang.reflect.Type;
import java.util.Collection;
@@ -70,7 +70,7 @@ public final class SQLFederationTable extends AbstractTable
implements Modifiabl
@Override
public RelDataType getRowType(final RelDataTypeFactory typeFactory) {
- return SQLFederationDataTypeUtils.createRelDataType(table,
protocolType, typeFactory);
+ return SQLFederationDataTypeBuilder.build(table, protocolType,
typeFactory);
}
@Override