You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2023/06/13 08:33:44 UTC
[shardingsphere] branch master updated: Remove useless ScanNodeExecutorContext and TableScanExecutor interface in executor module (#26322)
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 <du...@apache.org>
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;