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

panjuan 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 d3af1239d7e Remove useless ScanNodeExecutorContext and 
TableScanExecutor interface in executor module (#26322)
d3af1239d7e is described below

commit d3af1239d7e8324d6648c6310c91c61118bfc969
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Tue Jun 13 16:33:35 2023 +0800

    Remove useless ScanNodeExecutorContext and TableScanExecutor interface in 
executor module (#26322)
---
 .../sqlfederation/engine/SQLFederationEngine.java  | 10 ++---
 .../EnumerablePushDownTableScanExecutor.java}      | 43 +++++++++++++--------
 ...numerablePushDownTableScanExecutorContext.java} |  6 +--
 .../SQLOptimizerRexNodeVisitor.java                |  2 +-
 .../{rexnode => util}/StringToRexNodeUtils.java    |  2 +-
 .../executor/ScanNodeExecutorContext.java          | 21 ----------
 .../optimizer/executor/TableScanExecutor.java      | 45 ----------------------
 .../metadata/schema/SQLFederationDatabase.java     | 10 ++---
 .../metadata/schema/SQLFederationTable.java        | 16 ++++----
 .../EnumerablePushDownTableScan.java               |  2 +-
 .../transformation/PushFilterIntoScanRule.java     |  2 +-
 .../transformation/PushProjectIntoScanRule.java    |  2 +-
 .../AbstractUnsupportedOperationResultSet.java     |  2 +-
 ...bstractUnsupportedUpdateOperationResultSet.java |  2 +-
 .../resultset/SQLFederationResultSet.java          |  2 +-
 .../resultset/SQLFederationResultSetMetaData.java  |  2 +-
 .../{executor => }/resultset/WrapperAdapter.java   |  2 +-
 .../EnumerablePushDownTableScanExecutorTest.java}  | 12 +++---
 .../SQLFederationResultSetTest.java                |  3 +-
 19 files changed, 66 insertions(+), 120 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 4989f97dddb..b38c59eaadb 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
@@ -46,14 +46,13 @@ import 
org.apache.shardingsphere.infra.util.spi.type.ordered.OrderedSPILoader;
 import 
org.apache.shardingsphere.sqlfederation.executor.SQLFederationDataContext;
 import 
org.apache.shardingsphere.sqlfederation.executor.SQLFederationExecutorContext;
 import 
org.apache.shardingsphere.sqlfederation.executor.TableScanExecutorContext;
-import 
org.apache.shardingsphere.sqlfederation.executor.TranslatableTableScanExecutor;
-import 
org.apache.shardingsphere.sqlfederation.executor.resultset.SQLFederationResultSet;
+import 
org.apache.shardingsphere.sqlfederation.executor.enumerable.EnumerablePushDownTableScanExecutor;
+import 
org.apache.shardingsphere.sqlfederation.resultset.SQLFederationResultSet;
 import 
org.apache.shardingsphere.sqlfederation.optimizer.SQLFederationCompilerEngine;
 import 
org.apache.shardingsphere.sqlfederation.optimizer.SQLFederationExecutionPlan;
 import 
org.apache.shardingsphere.sqlfederation.optimizer.compiler.SQLStatementCompiler;
 import 
org.apache.shardingsphere.sqlfederation.optimizer.context.OptimizerContext;
 import 
org.apache.shardingsphere.sqlfederation.optimizer.context.planner.OptimizerPlannerContext;
-import 
org.apache.shardingsphere.sqlfederation.optimizer.executor.TableScanExecutor;
 import 
org.apache.shardingsphere.sqlfederation.optimizer.metadata.schema.SQLFederationTable;
 import 
org.apache.shardingsphere.sqlfederation.optimizer.planner.cache.ExecutionPlanCacheKey;
 import org.apache.shardingsphere.sqlfederation.rule.SQLFederationRule;
@@ -193,11 +192,12 @@ public final class SQLFederationEngine implements 
AutoCloseable {
                                            final JDBCExecutorCallback<? 
extends ExecuteResult> callback, final SQLFederationExecutorContext 
federationContext,
                                            final OptimizerContext 
optimizerContext) {
         TableScanExecutorContext executorContext = new 
TableScanExecutorContext(databaseName, schemaName, metaData.getProps(), 
federationContext);
-        TableScanExecutor executor = new 
TranslatableTableScanExecutor(prepareEngine, jdbcExecutor, callback, 
optimizerContext, metaData.getGlobalRuleMetaData(), executorContext, 
statistics);
+        EnumerablePushDownTableScanExecutor pushDownTableScanExecutor =
+                new EnumerablePushDownTableScanExecutor(prepareEngine, 
jdbcExecutor, callback, optimizerContext, metaData.getGlobalRuleMetaData(), 
executorContext, statistics);
         for (String each : 
federationContext.getQueryContext().getSqlStatementContext().getTablesContext().getTableNames())
 {
             Table table = sqlFederationSchema.getTable(each);
             if (table instanceof SQLFederationTable) {
-                ((SQLFederationTable) table).setExecutor(executor);
+                ((SQLFederationTable) 
table).setPushDownTableScanExecutor(pushDownTableScanExecutor);
             }
         }
     }
diff --git 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/TranslatableTableScanExecutor.java
 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/enumerable/EnumerablePushDownTableScanExecutor.java
similarity index 93%
rename from 
kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/TranslatableTableScanExecutor.java
rename to 
kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/enumerable/EnumerablePushDownTableScanExecutor.java
index 8866a2d1354..ec9a33a64e9 100644
--- 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/TranslatableTableScanExecutor.java
+++ 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/enumerable/EnumerablePushDownTableScanExecutor.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sqlfederation.executor;
+package org.apache.shardingsphere.sqlfederation.executor.enumerable;
 
 import com.google.common.base.Strings;
 import com.google.gson.Gson;
@@ -74,15 +74,16 @@ import 
org.apache.shardingsphere.infra.session.connection.ConnectionContext;
 import org.apache.shardingsphere.infra.session.query.QueryContext;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.wrapper.SQLWrapperException;
 import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
+import org.apache.shardingsphere.sqlfederation.executor.SQLDialectFactory;
+import 
org.apache.shardingsphere.sqlfederation.executor.SQLFederationDataContext;
+import 
org.apache.shardingsphere.sqlfederation.executor.SQLFederationExecutorContext;
+import 
org.apache.shardingsphere.sqlfederation.executor.TableScanExecutorContext;
+import 
org.apache.shardingsphere.sqlfederation.executor.util.StringToRexNodeUtils;
 import org.apache.shardingsphere.sqlfederation.executor.row.EmptyRowEnumerator;
 import org.apache.shardingsphere.sqlfederation.executor.row.MemoryEnumerator;
 import 
org.apache.shardingsphere.sqlfederation.executor.row.SQLFederationRowEnumerator;
 import 
org.apache.shardingsphere.sqlfederation.optimizer.context.OptimizerContext;
-import 
org.apache.shardingsphere.sqlfederation.optimizer.executor.ScanNodeExecutorContext;
-import 
org.apache.shardingsphere.sqlfederation.optimizer.executor.TableScanExecutor;
-import 
org.apache.shardingsphere.sqlfederation.optimizer.executor.TranslatableScanNodeExecutorContext;
 import 
org.apache.shardingsphere.sqlfederation.optimizer.metadata.schema.SQLFederationSchema;
-import 
org.apache.shardingsphere.sqlfederation.executor.rexnode.StringToRexNodeUtils;
 import 
org.apache.shardingsphere.sqlfederation.optimizer.planner.util.SQLFederationPlannerUtils;
 
 import java.sql.Connection;
@@ -101,10 +102,10 @@ import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 /**
- * Translatable table scan executor.
+ * Enumerable push down table scan executor.
  */
 @RequiredArgsConstructor
-public final class TranslatableTableScanExecutor implements TableScanExecutor {
+public final class EnumerablePushDownTableScanExecutor {
     
     private static final JavaTypeFactory JAVA_TYPE_FACTORY = new 
JavaTypeFactoryImpl();
     
@@ -126,15 +127,21 @@ public final class TranslatableTableScanExecutor 
implements TableScanExecutor {
     
     private final ProcessEngine processEngine = new ProcessEngine();
     
-    @Override
-    public Enumerable<Object> executeScalar(final ShardingSphereTable table, 
final ScanNodeExecutorContext scanContext) {
+    /**
+     * Execute.
+     *
+     * @param table table meta data
+     * @param scanContext push down table scan context
+     * @return query results
+     */
+    public Enumerable<Object> executeScalar(final ShardingSphereTable table, 
final EnumerablePushDownTableScanExecutorContext scanContext) {
         String databaseName = executorContext.getDatabaseName().toLowerCase();
         String schemaName = executorContext.getSchemaName().toLowerCase();
         DatabaseType databaseType = 
DatabaseTypeEngine.getTrunkDatabaseType(optimizerContext.getParserContext(databaseName).getDatabaseType().getType());
         if (databaseType.getSystemSchemas().contains(schemaName)) {
             return executeByScalarShardingSphereData(databaseName, schemaName, 
table);
         }
-        SqlString sqlString = createSQLString(table, 
(TranslatableScanNodeExecutorContext) scanContext, 
SQLDialectFactory.getSQLDialect(databaseType.getType()));
+        SqlString sqlString = createSQLString(table, scanContext, 
SQLDialectFactory.getSQLDialect(databaseType.getType()));
         SQLFederationExecutorContext federationContext = 
executorContext.getFederationContext();
         QueryContext queryContext = 
createQueryContext(federationContext.getMetaData(), sqlString, databaseType, 
federationContext.getQueryContext().isUseCache());
         ShardingSphereDatabase database = 
federationContext.getMetaData().getDatabase(databaseName);
@@ -212,15 +219,21 @@ public final class TranslatableTableScanExecutor 
implements TableScanExecutor {
         return result;
     }
     
-    @Override
-    public Enumerable<Object[]> execute(final ShardingSphereTable table, final 
ScanNodeExecutorContext scanContext) {
+    /**
+     * Execute.
+     *
+     * @param table table meta data
+     * @param scanContext push down table scan context
+     * @return query results
+     */
+    public Enumerable<Object[]> execute(final ShardingSphereTable table, final 
EnumerablePushDownTableScanExecutorContext scanContext) {
         String databaseName = executorContext.getDatabaseName().toLowerCase();
         String schemaName = executorContext.getSchemaName().toLowerCase();
         DatabaseType databaseType = 
DatabaseTypeEngine.getTrunkDatabaseType(optimizerContext.getParserContext(databaseName).getDatabaseType().getType());
         if (databaseType.getSystemSchemas().contains(schemaName)) {
             return executeByShardingSphereData(databaseName, schemaName, 
table);
         }
-        SqlString sqlString = createSQLString(table, 
(TranslatableScanNodeExecutorContext) scanContext, 
SQLDialectFactory.getSQLDialect(databaseType.getType()));
+        SqlString sqlString = createSQLString(table, scanContext, 
SQLDialectFactory.getSQLDialect(databaseType.getType()));
         SQLFederationExecutorContext federationContext = 
executorContext.getFederationContext();
         QueryContext queryContext = 
createQueryContext(federationContext.getMetaData(), sqlString, databaseType, 
federationContext.getQueryContext().isUseCache());
         ShardingSphereDatabase database = 
federationContext.getMetaData().getDatabase(databaseName);
@@ -288,7 +301,7 @@ public final class TranslatableTableScanExecutor implements 
TableScanExecutor {
         return result;
     }
     
-    private SqlString createSQLString(final ShardingSphereTable table, final 
TranslatableScanNodeExecutorContext scanContext, final SqlDialect sqlDialect) {
+    private SqlString createSQLString(final ShardingSphereTable table, final 
EnumerablePushDownTableScanExecutorContext scanContext, final SqlDialect 
sqlDialect) {
         String conditionSql = new 
RelToSqlConverter(sqlDialect).visitRoot(createRelNode(table, scanContext))
                 
.asStatement().toSqlString(sqlDialect).getSql().replace("u&'\\", "'\\u");
         return new SqlString(sqlDialect, conditionSql);
@@ -312,7 +325,7 @@ public final class TranslatableTableScanExecutor implements 
TableScanExecutor {
         }
     }
     
-    private RelNode createRelNode(final ShardingSphereTable table, final 
TranslatableScanNodeExecutorContext scanContext) {
+    private RelNode createRelNode(final ShardingSphereTable table, final 
EnumerablePushDownTableScanExecutorContext scanContext) {
         String databaseName = executorContext.getDatabaseName();
         String schemaName = executorContext.getSchemaName();
         CalciteConnectionConfig connectionConfig = new 
CalciteConnectionConfigImpl(optimizerContext.getParserContext(databaseName).getDialectProps());
diff --git 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/executor/TranslatableScanNodeExecutorContext.java
 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/enumerable/EnumerablePushDownTableScanExecutorContext.java
similarity index 84%
rename from 
kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/executor/TranslatableScanNodeExecutorContext.java
rename to 
kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/enumerable/EnumerablePushDownTableScanExecutorContext.java
index 0b5c396111b..562752daae9 100644
--- 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/executor/TranslatableScanNodeExecutorContext.java
+++ 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/enumerable/EnumerablePushDownTableScanExecutorContext.java
@@ -15,18 +15,18 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sqlfederation.optimizer.executor;
+package org.apache.shardingsphere.sqlfederation.executor.enumerable;
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import org.apache.calcite.DataContext;
 
 /**
- * Table scan executor context.
+ * Enumerable push down table scan executor context.
  */
 @RequiredArgsConstructor
 @Getter
-public final class TranslatableScanNodeExecutorContext implements 
ScanNodeExecutorContext {
+public final class EnumerablePushDownTableScanExecutorContext {
     
     private final DataContext root;
     
diff --git 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/rexnode/SQLOptimizerRexNodeVisitor.java
 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/util/SQLOptimizerRexNodeVisitor.java
similarity index 99%
rename from 
kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/rexnode/SQLOptimizerRexNodeVisitor.java
rename to 
kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/util/SQLOptimizerRexNodeVisitor.java
index 997a963c8b2..a21d5d14103 100644
--- 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/rexnode/SQLOptimizerRexNodeVisitor.java
+++ 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/util/SQLOptimizerRexNodeVisitor.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sqlfederation.executor.rexnode;
+package org.apache.shardingsphere.sqlfederation.executor.util;
 
 import com.google.common.collect.BoundType;
 import com.google.common.collect.ImmutableRangeSet;
diff --git 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/rexnode/StringToRexNodeUtils.java
 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/util/StringToRexNodeUtils.java
similarity index 97%
rename from 
kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/rexnode/StringToRexNodeUtils.java
rename to 
kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/util/StringToRexNodeUtils.java
index d33f051e00b..0d46def3950 100644
--- 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/rexnode/StringToRexNodeUtils.java
+++ 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/util/StringToRexNodeUtils.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sqlfederation.executor.rexnode;
+package org.apache.shardingsphere.sqlfederation.executor.util;
 
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
diff --git 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/executor/ScanNodeExecutorContext.java
 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/executor/ScanNodeExecutorContext.java
deleted file mode 100644
index 5564c60ee3d..00000000000
--- 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/executor/ScanNodeExecutorContext.java
+++ /dev/null
@@ -1,21 +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.executor;
-
-public interface ScanNodeExecutorContext {
-}
diff --git 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/executor/TableScanExecutor.java
 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/executor/TableScanExecutor.java
deleted file mode 100644
index 8a4fb7a3a34..00000000000
--- 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/executor/TableScanExecutor.java
+++ /dev/null
@@ -1,45 +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.executor;
-
-import org.apache.calcite.linq4j.Enumerable;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
-
-/**
- * Table scan executor.
- */
-public interface TableScanExecutor {
-    
-    /**
-     * Execute.
-     *
-     * @param table table meta data
-     * @param scanContext filterable table scan context
-     * @return query results
-     */
-    Enumerable<Object[]> execute(ShardingSphereTable table, 
ScanNodeExecutorContext scanContext);
-    
-    /**
-     * Execute.
-     *
-     * @param table table meta data
-     * @param scanContext filterable table scan context
-     * @return query results
-     */
-    Enumerable<Object> executeScalar(ShardingSphereTable table, 
ScanNodeExecutorContext scanContext);
-}
diff --git 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/schema/SQLFederationDatabase.java
 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/schema/SQLFederationDatabase.java
index bf1209eed25..56ef1d81dc4 100644
--- 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/schema/SQLFederationDatabase.java
+++ 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/schema/SQLFederationDatabase.java
@@ -18,12 +18,12 @@
 package org.apache.shardingsphere.sqlfederation.optimizer.metadata.schema;
 
 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.type.DatabaseType;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
-import 
org.apache.shardingsphere.sqlfederation.optimizer.executor.TableScanExecutor;
 
 import java.util.LinkedHashMap;
 import java.util.Map;
@@ -39,15 +39,15 @@ public final class SQLFederationDatabase extends 
AbstractSchema {
     
     private final Map<String, Schema> subSchemaMap;
     
-    public SQLFederationDatabase(final ShardingSphereDatabase database, final 
DatabaseType protocolType, final TableScanExecutor executor) {
+    public SQLFederationDatabase(final ShardingSphereDatabase database, final 
DatabaseType protocolType, final JavaTypeFactory javaTypeFactory) {
         name = database.getName();
-        subSchemaMap = createSubSchemaMap(database, protocolType, executor);
+        subSchemaMap = createSubSchemaMap(database, protocolType, 
javaTypeFactory);
     }
     
-    private Map<String, Schema> createSubSchemaMap(final 
ShardingSphereDatabase database, final DatabaseType protocolType, final 
TableScanExecutor executor) {
+    private Map<String, Schema> createSubSchemaMap(final 
ShardingSphereDatabase database, final DatabaseType protocolType, final 
JavaTypeFactory javaTypeFactory) {
         Map<String, Schema> result = new 
LinkedHashMap<>(database.getSchemas().size(), 1F);
         for (Entry<String, ShardingSphereSchema> entry : 
database.getSchemas().entrySet()) {
-            result.put(entry.getKey(), new SQLFederationSchema(entry.getKey(), 
entry.getValue(), protocolType, null));
+            result.put(entry.getKey(), new SQLFederationSchema(entry.getKey(), 
entry.getValue(), protocolType, javaTypeFactory));
         }
         return result;
     }
diff --git 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/schema/SQLFederationTable.java
 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/schema/SQLFederationTable.java
index 77e794ddec4..0d03c43e52e 100644
--- 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/schema/SQLFederationTable.java
+++ 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/schema/SQLFederationTable.java
@@ -38,10 +38,10 @@ import org.apache.calcite.schema.impl.AbstractTable;
 import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
 import 
org.apache.shardingsphere.infra.util.exception.external.sql.type.generic.UnsupportedSQLOperationException;
-import 
org.apache.shardingsphere.sqlfederation.optimizer.executor.TableScanExecutor;
-import 
org.apache.shardingsphere.sqlfederation.optimizer.executor.TranslatableScanNodeExecutorContext;
+import 
org.apache.shardingsphere.sqlfederation.executor.enumerable.EnumerablePushDownTableScanExecutorContext;
+import 
org.apache.shardingsphere.sqlfederation.executor.enumerable.EnumerablePushDownTableScanExecutor;
 import 
org.apache.shardingsphere.sqlfederation.optimizer.metadata.util.SQLFederationDataTypeUtils;
-import 
org.apache.shardingsphere.sqlfederation.optimizer.operator.physical.EnumerablePushDownTableScan;
+import 
org.apache.shardingsphere.sqlfederation.optimizer.operator.physical.enumerable.EnumerablePushDownTableScan;
 import 
org.apache.shardingsphere.sqlfederation.optimizer.statistic.SQLFederationStatistic;
 
 import java.lang.reflect.Type;
@@ -59,7 +59,7 @@ public final class SQLFederationTable extends AbstractTable 
implements Queryable
     private final DatabaseType protocolType;
     
     @Setter
-    private TableScanExecutor executor;
+    private EnumerablePushDownTableScanExecutor pushDownTableScanExecutor;
     
     /**
      * Execute filter and project when query the federation translatable table.
@@ -70,7 +70,7 @@ public final class SQLFederationTable extends AbstractTable 
implements Queryable
      * @return enumerable result
      */
     public Enumerable<Object> projectAndFilterScalar(final DataContext root, 
final String[] filterValues, final int[] projects) {
-        return executor.executeScalar(table, new 
TranslatableScanNodeExecutorContext(root, filterValues, projects));
+        return pushDownTableScanExecutor.executeScalar(table, new 
EnumerablePushDownTableScanExecutorContext(root, filterValues, projects));
     }
     
     /**
@@ -81,7 +81,7 @@ public final class SQLFederationTable extends AbstractTable 
implements Queryable
      * @return enumerable result
      */
     public Enumerable<Object> projectScalar(final DataContext root, final 
int[] projects) {
-        return executor.executeScalar(table, new 
TranslatableScanNodeExecutorContext(root, null, projects));
+        return pushDownTableScanExecutor.executeScalar(table, new 
EnumerablePushDownTableScanExecutorContext(root, null, projects));
     }
     
     /**
@@ -93,7 +93,7 @@ public final class SQLFederationTable extends AbstractTable 
implements Queryable
      * @return enumerable result
      */
     public Enumerable<Object[]> projectAndFilter(final DataContext root, final 
String[] filterValues, final int[] projects) {
-        return executor.execute(table, new 
TranslatableScanNodeExecutorContext(root, filterValues, projects));
+        return pushDownTableScanExecutor.execute(table, new 
EnumerablePushDownTableScanExecutorContext(root, filterValues, projects));
     }
     
     /**
@@ -104,7 +104,7 @@ public final class SQLFederationTable extends AbstractTable 
implements Queryable
      * @return enumerable result
      */
     public Enumerable<Object[]> project(final DataContext root, final int[] 
projects) {
-        return executor.execute(table, new 
TranslatableScanNodeExecutorContext(root, null, projects));
+        return pushDownTableScanExecutor.execute(table, new 
EnumerablePushDownTableScanExecutorContext(root, null, projects));
     }
     
     /**
diff --git 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/operator/physical/EnumerablePushDownTableScan.java
 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/operator/physical/enumerable/EnumerablePushDownTableScan.java
similarity index 99%
rename from 
kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/operator/physical/EnumerablePushDownTableScan.java
rename to 
kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/operator/physical/enumerable/EnumerablePushDownTableScan.java
index 7261790f131..fbff04a45f1 100644
--- 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/operator/physical/EnumerablePushDownTableScan.java
+++ 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/operator/physical/enumerable/EnumerablePushDownTableScan.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sqlfederation.optimizer.operator.physical;
+package 
org.apache.shardingsphere.sqlfederation.optimizer.operator.physical.enumerable;
 
 import com.google.common.collect.ImmutableList;
 import lombok.Getter;
diff --git 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/planner/rule/transformation/PushFilterIntoScanRule.java
 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/planner/rule/transformation/PushFilterIntoScanRule.java
index 25f3a532c36..fe447465149 100644
--- 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/planner/rule/transformation/PushFilterIntoScanRule.java
+++ 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/planner/rule/transformation/PushFilterIntoScanRule.java
@@ -25,7 +25,7 @@ import org.apache.calcite.rel.rules.TransformationRule;
 import org.apache.calcite.rex.RexCall;
 import org.apache.calcite.rex.RexNode;
 import org.apache.calcite.tools.RelBuilderFactory;
-import 
org.apache.shardingsphere.sqlfederation.optimizer.operator.physical.EnumerablePushDownTableScan;
+import 
org.apache.shardingsphere.sqlfederation.optimizer.operator.physical.enumerable.EnumerablePushDownTableScan;
 
 import java.util.Collections;
 import java.util.regex.Pattern;
diff --git 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/planner/rule/transformation/PushProjectIntoScanRule.java
 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/planner/rule/transformation/PushProjectIntoScanRule.java
index fa5552c8913..cb850ab5c30 100644
--- 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/planner/rule/transformation/PushProjectIntoScanRule.java
+++ 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/planner/rule/transformation/PushProjectIntoScanRule.java
@@ -26,7 +26,7 @@ import org.apache.calcite.rel.rules.TransformationRule;
 import org.apache.calcite.rex.RexInputRef;
 import org.apache.calcite.rex.RexNode;
 import org.apache.calcite.tools.RelBuilderFactory;
-import 
org.apache.shardingsphere.sqlfederation.optimizer.operator.physical.EnumerablePushDownTableScan;
+import 
org.apache.shardingsphere.sqlfederation.optimizer.operator.physical.enumerable.EnumerablePushDownTableScan;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/resultset/AbstractUnsupportedOperationResultSet.java
 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/resultset/AbstractUnsupportedOperationResultSet.java
similarity index 99%
rename from 
kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/resultset/AbstractUnsupportedOperationResultSet.java
rename to 
kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/resultset/AbstractUnsupportedOperationResultSet.java
index f0e7ce8d2eb..9b1b9d80d35 100644
--- 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/resultset/AbstractUnsupportedOperationResultSet.java
+++ 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/resultset/AbstractUnsupportedOperationResultSet.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sqlfederation.executor.resultset;
+package org.apache.shardingsphere.sqlfederation.resultset;
 
 import java.io.Reader;
 import java.sql.NClob;
diff --git 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/resultset/AbstractUnsupportedUpdateOperationResultSet.java
 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/resultset/AbstractUnsupportedUpdateOperationResultSet.java
similarity index 99%
rename from 
kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/resultset/AbstractUnsupportedUpdateOperationResultSet.java
rename to 
kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/resultset/AbstractUnsupportedUpdateOperationResultSet.java
index 128e59e36aa..ca646421cab 100644
--- 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/resultset/AbstractUnsupportedUpdateOperationResultSet.java
+++ 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/resultset/AbstractUnsupportedUpdateOperationResultSet.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sqlfederation.executor.resultset;
+package org.apache.shardingsphere.sqlfederation.resultset;
 
 import java.io.InputStream;
 import java.io.Reader;
diff --git 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/resultset/SQLFederationResultSet.java
 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/resultset/SQLFederationResultSet.java
similarity index 99%
rename from 
kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/resultset/SQLFederationResultSet.java
rename to 
kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/resultset/SQLFederationResultSet.java
index bd2e8e495bd..f2ba2c2b73e 100644
--- 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/resultset/SQLFederationResultSet.java
+++ 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/resultset/SQLFederationResultSet.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sqlfederation.executor.resultset;
+package org.apache.shardingsphere.sqlfederation.resultset;
 
 import org.apache.calcite.linq4j.Enumerator;
 import org.apache.calcite.rel.type.RelDataType;
diff --git 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/resultset/SQLFederationResultSetMetaData.java
 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/resultset/SQLFederationResultSetMetaData.java
similarity index 99%
rename from 
kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/resultset/SQLFederationResultSetMetaData.java
rename to 
kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/resultset/SQLFederationResultSetMetaData.java
index 1c608694b8b..b52d391009a 100644
--- 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/resultset/SQLFederationResultSetMetaData.java
+++ 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/resultset/SQLFederationResultSetMetaData.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sqlfederation.executor.resultset;
+package org.apache.shardingsphere.sqlfederation.resultset;
 
 import org.apache.calcite.jdbc.JavaTypeFactoryImpl;
 import org.apache.calcite.rel.type.RelDataType;
diff --git 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/resultset/WrapperAdapter.java
 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/resultset/WrapperAdapter.java
similarity index 95%
rename from 
kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/resultset/WrapperAdapter.java
rename to 
kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/resultset/WrapperAdapter.java
index c393081913b..eb54c2beb6f 100644
--- 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/resultset/WrapperAdapter.java
+++ 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/resultset/WrapperAdapter.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sqlfederation.executor.resultset;
+package org.apache.shardingsphere.sqlfederation.resultset;
 
 import java.sql.SQLException;
 import java.sql.SQLFeatureNotSupportedException;
diff --git 
a/kernel/sql-federation/core/src/test/java/org/apache/shardingsphere/sqlfederation/executor/FilterableTableScanExecutorTest.java
 
b/kernel/sql-federation/core/src/test/java/org/apache/shardingsphere/sqlfederation/executor/enumerable/EnumerablePushDownTableScanExecutorTest.java
similarity index 85%
rename from 
kernel/sql-federation/core/src/test/java/org/apache/shardingsphere/sqlfederation/executor/FilterableTableScanExecutorTest.java
rename to 
kernel/sql-federation/core/src/test/java/org/apache/shardingsphere/sqlfederation/executor/enumerable/EnumerablePushDownTableScanExecutorTest.java
index d6c6b70c0ca..26fe246d060 100644
--- 
a/kernel/sql-federation/core/src/test/java/org/apache/shardingsphere/sqlfederation/executor/FilterableTableScanExecutorTest.java
+++ 
b/kernel/sql-federation/core/src/test/java/org/apache/shardingsphere/sqlfederation/executor/enumerable/EnumerablePushDownTableScanExecutorTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sqlfederation.executor;
+package org.apache.shardingsphere.sqlfederation.executor.enumerable;
 
 import org.apache.calcite.linq4j.Enumerable;
 import org.apache.calcite.linq4j.Enumerator;
@@ -25,8 +25,8 @@ import 
org.apache.shardingsphere.infra.metadata.data.ShardingSphereRowData;
 import org.apache.shardingsphere.infra.metadata.data.ShardingSphereSchemaData;
 import org.apache.shardingsphere.infra.metadata.data.ShardingSphereTableData;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
+import 
org.apache.shardingsphere.sqlfederation.executor.TableScanExecutorContext;
 import 
org.apache.shardingsphere.sqlfederation.optimizer.context.OptimizerContext;
-import 
org.apache.shardingsphere.sqlfederation.optimizer.executor.ScanNodeExecutorContext;
 import org.junit.jupiter.api.Test;
 import org.mockito.Mockito;
 
@@ -39,11 +39,11 @@ import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
-class FilterableTableScanExecutorTest {
+class EnumerablePushDownTableScanExecutorTest {
     
     @Test
     void assertExecuteWithShardingSphereData() {
-        OptimizerContext optimizerContext = 
Mockito.mock(OptimizerContext.class, RETURNS_DEEP_STUBS);
+        OptimizerContext optimizerContext = mock(OptimizerContext.class, 
RETURNS_DEEP_STUBS);
         
when(optimizerContext.getParserContext(any()).getDatabaseType().getType()).thenReturn("PostgreSQL");
         TableScanExecutorContext executorContext = 
Mockito.mock(TableScanExecutorContext.class);
         when(executorContext.getDatabaseName()).thenReturn("db");
@@ -58,8 +58,8 @@ class FilterableTableScanExecutorTest {
         when(schemaData.getTableData().get("test")).thenReturn(tableData);
         ShardingSphereTable shardingSphereTable = 
mock(ShardingSphereTable.class);
         when(shardingSphereTable.getName()).thenReturn("test");
-        Enumerable<Object[]> enumerable = new 
TranslatableTableScanExecutor(null, null, null, optimizerContext, null, 
executorContext, shardingSphereData)
-                .execute(shardingSphereTable, 
Mockito.mock(ScanNodeExecutorContext.class));
+        Enumerable<Object[]> enumerable = new 
EnumerablePushDownTableScanExecutor(null, null, null, optimizerContext, null, 
executorContext, shardingSphereData)
+                .execute(shardingSphereTable, 
mock(EnumerablePushDownTableScanExecutorContext.class));
         try (Enumerator<Object[]> actual = enumerable.enumerator()) {
             actual.moveNext();
             Object[] row = actual.current();
diff --git 
a/kernel/sql-federation/core/src/test/java/org/apache/shardingsphere/sqlfederation/executor/result/SQLFederationResultSetTest.java
 
b/kernel/sql-federation/core/src/test/java/org/apache/shardingsphere/sqlfederation/resultset/SQLFederationResultSetTest.java
similarity index 99%
rename from 
kernel/sql-federation/core/src/test/java/org/apache/shardingsphere/sqlfederation/executor/result/SQLFederationResultSetTest.java
rename to 
kernel/sql-federation/core/src/test/java/org/apache/shardingsphere/sqlfederation/resultset/SQLFederationResultSetTest.java
index 5e7d49aaa4d..6e45ca003ec 100644
--- 
a/kernel/sql-federation/core/src/test/java/org/apache/shardingsphere/sqlfederation/executor/result/SQLFederationResultSetTest.java
+++ 
b/kernel/sql-federation/core/src/test/java/org/apache/shardingsphere/sqlfederation/resultset/SQLFederationResultSetTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.sqlfederation.executor.result;
+package org.apache.shardingsphere.sqlfederation.resultset;
 
 import org.apache.calcite.linq4j.Enumerator;
 import org.apache.calcite.rel.type.RelDataType;
@@ -24,7 +24,6 @@ import 
org.apache.shardingsphere.infra.binder.segment.select.projection.impl.Col
 import org.apache.shardingsphere.infra.binder.segment.table.TablesContext;
 import 
org.apache.shardingsphere.infra.binder.statement.dml.SelectStatementContext;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
-import 
org.apache.shardingsphere.sqlfederation.executor.resultset.SQLFederationResultSet;
 import 
org.apache.shardingsphere.sqlfederation.optimizer.metadata.schema.SQLFederationSchema;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;


Reply via email to