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/09 01:25:45 UTC
[shardingsphere] branch master updated: Remove useless calcite linq4j dependency and refactor sql federation class and package (#26206)
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 5ce9d22350f Remove useless calcite linq4j dependency and refactor sql federation class and package (#26206)
5ce9d22350f is described below
commit 5ce9d22350f25373235bf5c96e1a432d95c8f7da
Author: Zhengqiang Duan <du...@apache.org>
AuthorDate: Fri Jun 9 09:25:35 2023 +0800
Remove useless calcite linq4j dependency and refactor sql federation class and package (#26206)
---
infra/merge/pom.xml | 5 -----
.../executor/AdvancedSQLFederationExecutor.java | 4 ++--
.../executor/TranslatableTableScanExecutor.java | 4 ++--
.../SQLFederationDatabase.java} | 10 ++++-----
.../SQLFederationSchema.java} | 12 +++++------
.../SQLFederationTable.java} | 13 ++++++------
.../ShardingSphereViewExpander.java | 2 +-
.../TranslatableTableScan.java | 24 +++++++++++++---------
.../rule}/TranslatableFilterRule.java | 3 ++-
.../rule}/TranslatableProjectFilterRule.java | 3 ++-
.../rule}/TranslatableProjectRule.java | 3 ++-
.../SQLFederationStatistic.java} | 6 +++---
.../optimizer/util/SQLFederationPlannerUtils.java | 8 ++++----
.../result/SQLFederationResultSetTest.java | 4 ++--
.../optimizer/it/SQLOptimizeEngineIT.java | 6 +++---
pom.xml | 5 -----
16 files changed, 55 insertions(+), 57 deletions(-)
diff --git a/infra/merge/pom.xml b/infra/merge/pom.xml
index ef3d0741939..34844703a89 100644
--- a/infra/merge/pom.xml
+++ b/infra/merge/pom.xml
@@ -45,10 +45,5 @@
<version>${project.version}</version>
<scope>test</scope>
</dependency>
-
- <dependency>
- <groupId>org.apache.calcite</groupId>
- <artifactId>calcite-linq4j</artifactId>
- </dependency>
</dependencies>
</project>
diff --git a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/AdvancedSQLFederationExecutor.java b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/AdvancedSQLFederationExecutor.java
index e943941dbba..fcdfc504907 100644
--- a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/AdvancedSQLFederationExecutor.java
+++ b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/AdvancedSQLFederationExecutor.java
@@ -52,7 +52,7 @@ import org.apache.shardingsphere.sqlfederation.optimizer.context.OptimizerContex
import org.apache.shardingsphere.sqlfederation.optimizer.context.OptimizerContextFactory;
import org.apache.shardingsphere.sqlfederation.optimizer.context.parser.OptimizerParserContext;
import org.apache.shardingsphere.sqlfederation.optimizer.executor.TableScanExecutor;
-import org.apache.shardingsphere.sqlfederation.optimizer.metadata.translatable.TranslatableSchema;
+import org.apache.shardingsphere.sqlfederation.optimizer.metadata.schema.SQLFederationSchema;
import org.apache.shardingsphere.sqlfederation.optimizer.util.SQLFederationPlannerUtils;
import org.apache.shardingsphere.sqlfederation.spi.SQLFederationExecutor;
import org.apache.shardingsphere.sqlfederation.spi.SQLFederationExecutorContext;
@@ -126,7 +126,7 @@ public final class AdvancedSQLFederationExecutor implements SQLFederationExecuto
final JDBCExecutorCallback<? extends ExecuteResult> callback, final SQLFederationExecutorContext federationContext) {
TableScanExecutorContext executorContext = new TableScanExecutorContext(databaseName, schemaName, props, federationContext);
TableScanExecutor executor = new TranslatableTableScanExecutor(prepareEngine, jdbcExecutor, callback, optimizerContext, globalRuleMetaData, executorContext, data);
- return new TranslatableSchema(schemaName, schema, protocolType, JAVA_TYPE_FACTORY, executor);
+ return new SQLFederationSchema(schemaName, schema, protocolType, JAVA_TYPE_FACTORY, executor);
}
@SuppressWarnings("unchecked")
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/TranslatableTableScanExecutor.java
index 6ff143b2868..849c5bf0b40 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/TranslatableTableScanExecutor.java
@@ -81,7 +81,7 @@ import org.apache.shardingsphere.sqlfederation.optimizer.context.OptimizerContex
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.translatable.TranslatableSchema;
+import org.apache.shardingsphere.sqlfederation.optimizer.metadata.schema.SQLFederationSchema;
import org.apache.shardingsphere.sqlfederation.optimizer.rexnode.StringToRexNodeUtils;
import org.apache.shardingsphere.sqlfederation.optimizer.util.SQLFederationPlannerUtils;
import org.apache.shardingsphere.sqlfederation.spi.SQLFederationExecutorContext;
@@ -319,7 +319,7 @@ public final class TranslatableTableScanExecutor implements TableScanExecutor {
CalciteConnectionConfig connectionConfig = new CalciteConnectionConfigImpl(optimizerContext.getParserContext(databaseName).getDialectProps());
ShardingSphereDatabase database = executorContext.getFederationContext().getMetaData().getDatabase(databaseName);
CalciteCatalogReader catalogReader = SQLFederationPlannerUtils.createCatalogReader(schemaName,
- new TranslatableSchema(schemaName, database.getSchema(schemaName), database.getProtocolType(), JAVA_TYPE_FACTORY, null), JAVA_TYPE_FACTORY, connectionConfig);
+ new SQLFederationSchema(schemaName, database.getSchema(schemaName), database.getProtocolType(), JAVA_TYPE_FACTORY, null), JAVA_TYPE_FACTORY, connectionConfig);
RelOptCluster relOptCluster = RelOptCluster.create(SQLFederationPlannerUtils.createVolcanoPlanner(), new RexBuilder(JAVA_TYPE_FACTORY));
RelBuilder builder = RelFactories.LOGICAL_BUILDER.create(relOptCluster, catalogReader).scan(table.getName());
if (null != scanContext.getFilterValues()) {
diff --git a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/translatable/TranslatableDatabase.java b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/schema/SQLFederationDatabase.java
similarity index 84%
rename from kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/translatable/TranslatableDatabase.java
rename to kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/schema/SQLFederationDatabase.java
index 4b46c27f542..73edcdee37d 100644
--- a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/translatable/TranslatableDatabase.java
+++ b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/schema/SQLFederationDatabase.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.sqlfederation.optimizer.metadata.translatable;
+package org.apache.shardingsphere.sqlfederation.optimizer.metadata.schema;
import lombok.Getter;
import org.apache.calcite.schema.Schema;
@@ -30,16 +30,16 @@ import java.util.Map;
import java.util.Map.Entry;
/**
- * Translatable database.
+ * SQL federation database.
*/
@Getter
-public final class TranslatableDatabase extends AbstractSchema {
+public final class SQLFederationDatabase extends AbstractSchema {
private final String name;
private final Map<String, Schema> subSchemaMap;
- public TranslatableDatabase(final ShardingSphereDatabase database, final DatabaseType protocolType, final TableScanExecutor executor) {
+ public SQLFederationDatabase(final ShardingSphereDatabase database, final DatabaseType protocolType, final TableScanExecutor executor) {
name = database.getName();
subSchemaMap = createSubSchemaMap(database, protocolType, executor);
}
@@ -47,7 +47,7 @@ public final class TranslatableDatabase extends AbstractSchema {
private Map<String, Schema> createSubSchemaMap(final ShardingSphereDatabase database, final DatabaseType protocolType, final TableScanExecutor executor) {
Map<String, Schema> result = new LinkedHashMap<>(database.getSchemas().size(), 1F);
for (Entry<String, ShardingSphereSchema> entry : database.getSchemas().entrySet()) {
- result.put(entry.getKey(), new TranslatableSchema(entry.getKey(), entry.getValue(), protocolType, null, executor));
+ result.put(entry.getKey(), new SQLFederationSchema(entry.getKey(), entry.getValue(), protocolType, null, executor));
}
return result;
}
diff --git a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/translatable/TranslatableSchema.java b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/schema/SQLFederationSchema.java
similarity index 85%
rename from kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/translatable/TranslatableSchema.java
rename to kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/schema/SQLFederationSchema.java
index 09609d29c7e..0df8670c618 100644
--- a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/translatable/TranslatableSchema.java
+++ b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/schema/SQLFederationSchema.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.sqlfederation.optimizer.metadata.translatable;
+package org.apache.shardingsphere.sqlfederation.optimizer.metadata.schema;
import lombok.Getter;
import org.apache.calcite.adapter.java.JavaTypeFactory;
@@ -29,7 +29,7 @@ import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSp
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.executor.TableScanExecutor;
-import org.apache.shardingsphere.sqlfederation.optimizer.metadata.statistic.FederationStatistic;
+import org.apache.shardingsphere.sqlfederation.optimizer.statistic.SQLFederationStatistic;
import org.apache.shardingsphere.sqlfederation.optimizer.util.SQLFederationDataTypeUtils;
import java.util.Collections;
@@ -37,16 +37,16 @@ import java.util.LinkedHashMap;
import java.util.Map;
/**
- * Translatable schema.
+ * SQL federation schema.
*/
@Getter
-public final class TranslatableSchema extends AbstractSchema {
+public final class SQLFederationSchema extends AbstractSchema {
private final String name;
private final Map<String, Table> tableMap;
- public TranslatableSchema(final String schemaName, final ShardingSphereSchema schema, final DatabaseType protocolType, final JavaTypeFactory javaTypeFactory, final TableScanExecutor executor) {
+ public SQLFederationSchema(final String schemaName, final ShardingSphereSchema schema, final DatabaseType protocolType, final JavaTypeFactory javaTypeFactory, final TableScanExecutor executor) {
name = schemaName;
tableMap = createTableMap(schema, protocolType, javaTypeFactory, executor);
}
@@ -58,7 +58,7 @@ public final class TranslatableSchema extends AbstractSchema {
result.put(each.getName(), getViewTable(schema, each, protocolType, javaTypeFactory));
} else {
// TODO implement table statistic logic after using custom operators
- result.put(each.getName(), new FederationTranslatableTable(each, executor, new FederationStatistic(), protocolType));
+ result.put(each.getName(), new SQLFederationTable(each, executor, new SQLFederationStatistic(), protocolType));
}
}
return result;
diff --git a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/translatable/FederationTranslatableTable.java b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/schema/SQLFederationTable.java
similarity index 93%
rename from kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/translatable/FederationTranslatableTable.java
rename to kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/schema/SQLFederationTable.java
index 0e95bc3ea0c..35e9333eb93 100644
--- a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/translatable/FederationTranslatableTable.java
+++ b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/schema/SQLFederationTable.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.sqlfederation.optimizer.metadata.translatable;
+package org.apache.shardingsphere.sqlfederation.optimizer.metadata.schema;
import lombok.RequiredArgsConstructor;
import org.apache.calcite.DataContext;
@@ -39,22 +39,23 @@ import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSp
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.optimizer.metadata.statistic.FederationStatistic;
+import org.apache.shardingsphere.sqlfederation.optimizer.operator.TranslatableTableScan;
import org.apache.shardingsphere.sqlfederation.optimizer.util.SQLFederationDataTypeUtils;
+import org.apache.shardingsphere.sqlfederation.optimizer.statistic.SQLFederationStatistic;
import java.lang.reflect.Type;
/**
- * Federation translatable table.
+ * SQL federation table.
*/
@RequiredArgsConstructor
-public final class FederationTranslatableTable extends AbstractTable implements QueryableTable, TranslatableTable {
+public final class SQLFederationTable extends AbstractTable implements QueryableTable, TranslatableTable {
private final ShardingSphereTable table;
private final TableScanExecutor executor;
- private final FederationStatistic statistic;
+ private final SQLFederationStatistic statistic;
private final DatabaseType protocolType;
@@ -143,7 +144,7 @@ public final class FederationTranslatableTable extends AbstractTable implements
@Override
public String toString() {
- return "FederationTranslatableTable";
+ return "SQLFederationTable";
}
@Override
diff --git a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/expander/ShardingSphereViewExpander.java b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/view/ShardingSphereViewExpander.java
similarity index 99%
rename from kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/expander/ShardingSphereViewExpander.java
rename to kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/view/ShardingSphereViewExpander.java
index d54dc22215a..9a2416267d2 100644
--- a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/expander/ShardingSphereViewExpander.java
+++ b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/view/ShardingSphereViewExpander.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.sqlfederation.optimizer.metadata.expander;
+package org.apache.shardingsphere.sqlfederation.optimizer.metadata.view;
import lombok.RequiredArgsConstructor;
import org.apache.calcite.plan.RelOptTable.ViewExpander;
diff --git a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/translatable/TranslatableTableScan.java b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/operator/TranslatableTableScan.java
similarity index 89%
rename from kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/translatable/TranslatableTableScan.java
rename to kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/operator/TranslatableTableScan.java
index c0dee6e919e..49f18186036 100644
--- a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/translatable/TranslatableTableScan.java
+++ b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/operator/TranslatableTableScan.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.sqlfederation.optimizer.metadata.translatable;
+package org.apache.shardingsphere.sqlfederation.optimizer.operator;
import com.google.common.collect.ImmutableList;
import lombok.Getter;
@@ -42,6 +42,10 @@ import org.apache.calcite.rel.type.RelDataTypeField;
import org.apache.calcite.rex.RexCall;
import org.apache.calcite.rex.RexInputRef;
import org.apache.calcite.rex.RexNode;
+import org.apache.shardingsphere.sqlfederation.optimizer.metadata.schema.SQLFederationTable;
+import org.apache.shardingsphere.sqlfederation.optimizer.planner.rule.TranslatableFilterRule;
+import org.apache.shardingsphere.sqlfederation.optimizer.planner.rule.TranslatableProjectFilterRule;
+import org.apache.shardingsphere.sqlfederation.optimizer.planner.rule.TranslatableProjectRule;
import java.util.ArrayList;
import java.util.Arrays;
@@ -55,7 +59,7 @@ import java.util.Map;
@Getter
public final class TranslatableTableScan extends TableScan implements EnumerableRel {
- private final FederationTranslatableTable translatableTable;
+ private final SQLFederationTable translatableTable;
private final int[] fields;
@@ -65,7 +69,7 @@ public final class TranslatableTableScan extends TableScan implements Enumerable
private final List<RexNode> expressions;
- public TranslatableTableScan(final RelOptCluster cluster, final RelOptTable table, final FederationTranslatableTable translatableTable, final int[] fields) {
+ public TranslatableTableScan(final RelOptCluster cluster, final RelOptTable table, final SQLFederationTable translatableTable, final int[] fields) {
super(cluster, cluster.traitSetOf(EnumerableConvention.INSTANCE), ImmutableList.of(), table);
this.translatableTable = translatableTable;
this.fields = fields;
@@ -74,7 +78,7 @@ public final class TranslatableTableScan extends TableScan implements Enumerable
this.expressions = new ArrayList<>();
}
- public TranslatableTableScan(final RelOptCluster cluster, final RelOptTable table, final FederationTranslatableTable translatableTable, final int[] fields, final int number) {
+ public TranslatableTableScan(final RelOptCluster cluster, final RelOptTable table, final SQLFederationTable translatableTable, final int[] fields, final int number) {
super(cluster, cluster.traitSetOf(EnumerableConvention.INSTANCE), ImmutableList.of(), table);
this.translatableTable = translatableTable;
this.fields = fields;
@@ -83,7 +87,7 @@ public final class TranslatableTableScan extends TableScan implements Enumerable
this.expressions = new ArrayList<>();
}
- public TranslatableTableScan(final RelOptCluster cluster, final RelOptTable table, final FederationTranslatableTable translatableTable,
+ public TranslatableTableScan(final RelOptCluster cluster, final RelOptTable table, final SQLFederationTable translatableTable,
final List<RexNode> filters, final int[] fields) {
super(cluster, cluster.traitSetOf(EnumerableConvention.INSTANCE), ImmutableList.of(), table);
this.translatableTable = translatableTable;
@@ -93,7 +97,7 @@ public final class TranslatableTableScan extends TableScan implements Enumerable
this.expressions = new ArrayList<>();
}
- public TranslatableTableScan(final RelOptCluster cluster, final RelOptTable table, final FederationTranslatableTable translatableTable,
+ public TranslatableTableScan(final RelOptCluster cluster, final RelOptTable table, final SQLFederationTable translatableTable,
final List<RexNode> filters, final int[] fields, final int number, final List<RexNode> expressions) {
super(cluster, cluster.traitSetOf(EnumerableConvention.INSTANCE), ImmutableList.of(), table);
this.translatableTable = translatableTable;
@@ -164,19 +168,19 @@ public final class TranslatableTableScan extends TableScan implements Enumerable
private Result generateCodeForNullFilters(final EnumerableRelImplementor implementor, final PhysType physType) {
if (fields.length == 1) {
- return implementor.result(physType, Blocks.toBlock(Expressions.call(table.getExpression(FederationTranslatableTable.class),
+ return implementor.result(physType, Blocks.toBlock(Expressions.call(table.getExpression(SQLFederationTable.class),
"projectScalar", implementor.getRootExpression(), Expressions.constant(fields))));
}
- return implementor.result(physType, Blocks.toBlock(Expressions.call(table.getExpression(FederationTranslatableTable.class),
+ return implementor.result(physType, Blocks.toBlock(Expressions.call(table.getExpression(SQLFederationTable.class),
"project", implementor.getRootExpression(), Expressions.constant(fields))));
}
private Result generateCodeForFilters(final EnumerableRelImplementor implementor, final PhysType physType, final String[] filterValues) {
if (fields.length == 1) {
- return implementor.result(physType, Blocks.toBlock(Expressions.call(table.getExpression(FederationTranslatableTable.class),
+ return implementor.result(physType, Blocks.toBlock(Expressions.call(table.getExpression(SQLFederationTable.class),
"projectAndFilterScalar", implementor.getRootExpression(), Expressions.constant(filterValues), Expressions.constant(fields))));
}
- return implementor.result(physType, Blocks.toBlock(Expressions.call(table.getExpression(FederationTranslatableTable.class),
+ return implementor.result(physType, Blocks.toBlock(Expressions.call(table.getExpression(SQLFederationTable.class),
"projectAndFilter", implementor.getRootExpression(), Expressions.constant(filterValues), Expressions.constant(fields))));
}
diff --git a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/translatable/TranslatableFilterRule.java b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/planner/rule/TranslatableFilterRule.java
similarity index 94%
rename from kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/translatable/TranslatableFilterRule.java
rename to kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/planner/rule/TranslatableFilterRule.java
index f84112c41ed..3d98a95098c 100644
--- a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/translatable/TranslatableFilterRule.java
+++ b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/planner/rule/TranslatableFilterRule.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.sqlfederation.optimizer.metadata.translatable;
+package org.apache.shardingsphere.sqlfederation.optimizer.planner.rule;
import org.apache.calcite.plan.RelOptRule;
import org.apache.calcite.plan.RelOptRuleCall;
@@ -24,6 +24,7 @@ import org.apache.calcite.rel.logical.LogicalFilter;
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.TranslatableTableScan;
import java.util.Collections;
import java.util.regex.Pattern;
diff --git a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/translatable/TranslatableProjectFilterRule.java b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/planner/rule/TranslatableProjectFilterRule.java
similarity index 95%
rename from kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/translatable/TranslatableProjectFilterRule.java
rename to kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/planner/rule/TranslatableProjectFilterRule.java
index c73c22c9fdb..f4421f29354 100644
--- a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/translatable/TranslatableProjectFilterRule.java
+++ b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/planner/rule/TranslatableProjectFilterRule.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.sqlfederation.optimizer.metadata.translatable;
+package org.apache.shardingsphere.sqlfederation.optimizer.planner.rule;
import org.apache.calcite.plan.RelOptRule;
import org.apache.calcite.plan.RelOptRuleCall;
@@ -26,6 +26,7 @@ import org.apache.calcite.rex.RexCall;
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.TranslatableTableScan;
import java.util.Collections;
import java.util.List;
diff --git a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/translatable/TranslatableProjectRule.java b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/planner/rule/TranslatableProjectRule.java
similarity index 95%
rename from kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/translatable/TranslatableProjectRule.java
rename to kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/planner/rule/TranslatableProjectRule.java
index 29a05a94a3e..69faa9d154a 100644
--- a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/translatable/TranslatableProjectRule.java
+++ b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/planner/rule/TranslatableProjectRule.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.sqlfederation.optimizer.metadata.translatable;
+package org.apache.shardingsphere.sqlfederation.optimizer.planner.rule;
import org.apache.calcite.plan.RelOptRule;
import org.apache.calcite.plan.RelOptRuleCall;
@@ -25,6 +25,7 @@ import org.apache.calcite.rel.logical.LogicalProject;
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.TranslatableTableScan;
import java.util.ArrayList;
import java.util.List;
diff --git a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/statistic/FederationStatistic.java b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/statistic/SQLFederationStatistic.java
similarity index 89%
rename from kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/statistic/FederationStatistic.java
rename to kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/statistic/SQLFederationStatistic.java
index 0b171ee0acc..ca8d57b53c3 100644
--- a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/statistic/FederationStatistic.java
+++ b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/statistic/SQLFederationStatistic.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.sqlfederation.optimizer.metadata.statistic;
+package org.apache.shardingsphere.sqlfederation.optimizer.statistic;
import org.apache.calcite.rel.RelCollation;
import org.apache.calcite.rel.RelDistribution;
@@ -27,9 +27,9 @@ import java.util.ArrayList;
import java.util.List;
/**
- * Statistic of federation table.
+ * SQL federation statistic.
*/
-public final class FederationStatistic implements Statistic {
+public final class SQLFederationStatistic implements Statistic {
@Override
public List<RelReferentialConstraint> getReferentialConstraints() {
diff --git a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/util/SQLFederationPlannerUtils.java b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/util/SQLFederationPlannerUtils.java
index a19587e0361..6150ab106d2 100644
--- a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/util/SQLFederationPlannerUtils.java
+++ b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/util/SQLFederationPlannerUtils.java
@@ -52,10 +52,10 @@ import org.apache.calcite.sql2rel.SqlToRelConverter.Config;
import org.apache.calcite.sql2rel.StandardConvertletTable;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.parser.rule.SQLParserRule;
-import org.apache.shardingsphere.sqlfederation.optimizer.metadata.expander.ShardingSphereViewExpander;
-import org.apache.shardingsphere.sqlfederation.optimizer.metadata.translatable.TranslatableFilterRule;
-import org.apache.shardingsphere.sqlfederation.optimizer.metadata.translatable.TranslatableProjectFilterRule;
-import org.apache.shardingsphere.sqlfederation.optimizer.metadata.translatable.TranslatableProjectRule;
+import org.apache.shardingsphere.sqlfederation.optimizer.metadata.view.ShardingSphereViewExpander;
+import org.apache.shardingsphere.sqlfederation.optimizer.planner.rule.TranslatableFilterRule;
+import org.apache.shardingsphere.sqlfederation.optimizer.planner.rule.TranslatableProjectFilterRule;
+import org.apache.shardingsphere.sqlfederation.optimizer.planner.rule.TranslatableProjectRule;
import java.util.Arrays;
import java.util.Collection;
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/executor/result/SQLFederationResultSetTest.java
index a5a50c60c1a..5e7d49aaa4d 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/executor/result/SQLFederationResultSetTest.java
@@ -25,7 +25,7 @@ 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.translatable.TranslatableSchema;
+import org.apache.shardingsphere.sqlfederation.optimizer.metadata.schema.SQLFederationSchema;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -69,7 +69,7 @@ class SQLFederationResultSetTest {
@BeforeEach
void setUp() {
enumerator = createEnumerator();
- federationResultSet = new SQLFederationResultSet(enumerator, mock(ShardingSphereSchema.class), mock(TranslatableSchema.class), createSelectStatementContext(), mock(RelDataType.class));
+ federationResultSet = new SQLFederationResultSet(enumerator, mock(ShardingSphereSchema.class), mock(SQLFederationSchema.class), createSelectStatementContext(), mock(RelDataType.class));
}
private SelectStatementContext createSelectStatementContext() {
diff --git a/kernel/sql-federation/core/src/test/java/org/apache/shardingsphere/sqlfederation/optimizer/it/SQLOptimizeEngineIT.java b/kernel/sql-federation/core/src/test/java/org/apache/shardingsphere/sqlfederation/optimizer/it/SQLOptimizeEngineIT.java
index 058cc22bc75..6269c6e0890 100644
--- a/kernel/sql-federation/core/src/test/java/org/apache/shardingsphere/sqlfederation/optimizer/it/SQLOptimizeEngineIT.java
+++ b/kernel/sql-federation/core/src/test/java/org/apache/shardingsphere/sqlfederation/optimizer/it/SQLOptimizeEngineIT.java
@@ -37,7 +37,7 @@ import org.apache.shardingsphere.parser.rule.SQLParserRule;
import org.apache.shardingsphere.parser.rule.builder.DefaultSQLParserRuleConfigurationBuilder;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import org.apache.shardingsphere.sqlfederation.optimizer.SQLOptimizeEngine;
-import org.apache.shardingsphere.sqlfederation.optimizer.metadata.translatable.TranslatableSchema;
+import org.apache.shardingsphere.sqlfederation.optimizer.metadata.schema.SQLFederationSchema;
import org.apache.shardingsphere.sqlfederation.optimizer.util.SQLFederationPlannerUtils;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.extension.ExtensionContext;
@@ -236,8 +236,8 @@ class SQLOptimizeEngineIT {
CalciteConnectionConfig connectionConfig = new CalciteConnectionConfigImpl(new Properties());
RelDataTypeFactory relDataTypeFactory = new JavaTypeFactoryImpl();
DatabaseType databaseType = DatabaseTypeEngine.getDatabaseType("H2");
- TranslatableSchema federationSchema = new TranslatableSchema(SCHEMA_NAME, schema, databaseType, new JavaTypeFactoryImpl(), null);
- CalciteCatalogReader catalogReader = SQLFederationPlannerUtils.createCatalogReader(SCHEMA_NAME, federationSchema, relDataTypeFactory, connectionConfig);
+ SQLFederationSchema sqlFederationSchema = new SQLFederationSchema(SCHEMA_NAME, schema, databaseType, new JavaTypeFactoryImpl(), null);
+ CalciteCatalogReader catalogReader = SQLFederationPlannerUtils.createCatalogReader(SCHEMA_NAME, sqlFederationSchema, relDataTypeFactory, connectionConfig);
SqlValidator validator = SQLFederationPlannerUtils.createSqlValidator(catalogReader, relDataTypeFactory, databaseType, connectionConfig);
RelOptCluster cluster = RelOptCluster.create(SQLFederationPlannerUtils.createVolcanoPlanner(), new RexBuilder(relDataTypeFactory));
return SQLFederationPlannerUtils.createSqlToRelConverter(catalogReader, validator, cluster, Mockito.mock(SQLParserRule.class), databaseType, false);
diff --git a/pom.xml b/pom.xml
index 2ae4f421cd5..8fa1e81dfb1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -343,11 +343,6 @@
<classifier>linux-aarch_64</classifier>
<scope>runtime</scope>
</dependency>
- <dependency>
- <groupId>org.apache.calcite</groupId>
- <artifactId>calcite-linq4j</artifactId>
- <version>${calcite.version}</version>
- </dependency>
<dependency>
<groupId>javax.transaction</groupId>
<artifactId>jta</artifactId>