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

Reply via email to