This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang 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 6492547 Use SQL statement on ShardingSphereOptimizer.optimize()
(#12711)
6492547 is described below
commit 6492547f3caa2da618c418644b3dbd3f5e98cc03
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Sep 25 22:06:35 2021 +0800
Use SQL statement on ShardingSphereOptimizer.optimize() (#12711)
* Rename package of optimize.planner
* Use standard map on FederationMetaData
* Update javadoc
* Use SQL statement on ShardingSphereOptimizer.optimize()
* Use SQL statement on ShardingSphereOptimizer.optimize()
---
.../translatable/TranslatableExecutor.java | 5 +-
.../sql/federate/FederateJDBCExecutorTest.java | 90 ++++++++++++----------
.../infra/optimize/ShardingSphereOptimizer.java | 39 ++++------
.../translatable/TranslatableOptimizerContext.java | 3 -
.../TranslatableOptimizerContextFactory.java | 8 +-
.../optimize/metadata/FederationMetaData.java | 4 +-
.../metadata/FederationSchemaMetaData.java | 6 +-
.../AlterTableFederationMetaDataRefresher.java | 4 +-
.../CreateTableFederationMetaDataRefresher.java | 2 +-
.../QueryOptimizePlannerFactory.java | 2 +-
10 files changed, 77 insertions(+), 86 deletions(-)
diff --git
a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/federate/translatable/TranslatableExecutor.java
b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/federate/translatable/TranslatableExecutor.java
index 99f7122..7bc409b 100644
---
a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/federate/translatable/TranslatableExecutor.java
+++
b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/federate/translatable/TranslatableExecutor.java
@@ -32,6 +32,7 @@ import
org.apache.shardingsphere.infra.executor.sql.federate.FederationExecutor;
import
org.apache.shardingsphere.infra.executor.sql.prepare.driver.DriverExecutionPrepareEngine;
import org.apache.shardingsphere.infra.optimize.ShardingSphereOptimizer;
import
org.apache.shardingsphere.infra.optimize.context.translatable.TranslatableOptimizerContext;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import java.sql.Connection;
import java.sql.ResultSet;
@@ -62,9 +63,9 @@ public final class TranslatableExecutor implements
FederationExecutor {
return null;
}
- private Enumerable<Object[]> execute(final String sql) {
+ private Enumerable<Object[]> execute(final SQLStatement sqlStatement) {
// TODO
- return execute(optimizer.optimize(sql));
+ return execute(optimizer.optimize(sqlStatement));
}
private Enumerable<Object[]> execute(final RelNode bestPlan) {
diff --git
a/shardingsphere-infra/shardingsphere-infra-executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/federate/FederateJDBCExecutorTest.java
b/shardingsphere-infra/shardingsphere-infra-executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/federate/FederateJDBCExecutorTest.java
index 82d815a..908941d 100644
---
a/shardingsphere-infra/shardingsphere-infra-executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/federate/FederateJDBCExecutorTest.java
+++
b/shardingsphere-infra/shardingsphere-infra-executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/federate/FederateJDBCExecutorTest.java
@@ -17,7 +17,8 @@
package org.apache.shardingsphere.infra.executor.sql.federate;
-import org.apache.calcite.rel.RelNode;
+import
org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
+import org.apache.shardingsphere.infra.database.type.DatabaseTypeRegistry;
import org.apache.shardingsphere.infra.database.type.dialect.H2DatabaseType;
import
org.apache.shardingsphere.infra.executor.sql.federate.translatable.TranslatableSchema;
import org.apache.shardingsphere.infra.metadata.schema.model.ColumnMetaData;
@@ -26,20 +27,22 @@ import
org.apache.shardingsphere.infra.metadata.schema.model.TableMetaData;
import org.apache.shardingsphere.infra.optimize.ShardingSphereOptimizer;
import
org.apache.shardingsphere.infra.optimize.context.translatable.TranslatableOptimizerContextFactory;
import
org.apache.shardingsphere.infra.optimize.metadata.FederationSchemaMetaData;
+import org.apache.shardingsphere.infra.parser.ShardingSphereSQLParserEngine;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import org.junit.Before;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.junit.MockitoJUnitRunner;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashMap;
+import java.util.LinkedList;
import java.util.List;
import java.util.Map;
+import java.util.Properties;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
-@RunWith(MockitoJUnitRunner.class)
public final class FederateJDBCExecutorTest {
private static final String
SELECT_SQL_BY_ID_ACROSS_SINGLE_AND_SHARDING_TABLES =
@@ -52,34 +55,17 @@ public final class FederateJDBCExecutorTest {
@Before
public void init() throws Exception {
String schemaName = "federate_jdbc";
- Map<String, List<String>> columnMap = initializeColumnMap();
- Map<String, List<String>> tableMap = initializeTableMap();
- TranslatableSchema logicSchema = initializeLogicSchema(schemaName,
columnMap, tableMap);
- optimizer = new
ShardingSphereOptimizer(TranslatableOptimizerContextFactory.create(schemaName,
logicSchema, new H2DatabaseType()));
+ TranslatableSchema schema = createSchema(schemaName);
+ optimizer = new
ShardingSphereOptimizer(TranslatableOptimizerContextFactory.create(schemaName,
schema));
}
- @Test
- public void testSimpleSelect() {
- RelNode relNode =
optimizer.optimize(SELECT_SQL_BY_ID_ACROSS_SINGLE_AND_SHARDING_TABLES);
- String temp =
"EnumerableCalc(expr#0..4=[{inputs}],expr#5=[CAST($t1):VARCHAR],expr#6=[CAST($t3):VARCHAR],expr#7=[=($t5,$t6)],proj#0..1=[{exprs}],information=[$t4],$condition=[$t7])"
- + " EnumerableNestedLoopJoin(condition=[true],joinType=[inner])"
- + "
EnumerableTableScan(table=[[federate_jdbc,t_order_federate]])"
- + " EnumerableTableScan(table=[[federate_jdbc,t_user_info]])";
- String expected = temp.replaceAll("\\s*", "");
- String actual = relNode.explain().replaceAll("\\s*", "");
- assertThat(actual, is(expected));
+ private TranslatableSchema createSchema(final String schemaName) {
+ Map<String, List<String>> columnMap = createColumnMap();
+ Map<String, List<String>> tableMap = createTableMap();
+ return new TranslatableSchema(createSchemaMetaData(schemaName,
tableMap.get(schemaName), columnMap));
}
- private Map<String, List<String>> initializeTableMap() {
- Map<String, List<String>> result = new HashMap<>();
- List<String> tableList = new ArrayList<>();
- tableList.add("t_order_federate");
- tableList.add("t_user_info");
- result.put("federate_jdbc", tableList);
- return result;
- }
-
- private Map<String, List<String>> initializeColumnMap() {
+ private Map<String, List<String>> createColumnMap() {
final Map<String, List<String>> result = new HashMap<>();
List<String> columnList = new ArrayList<>();
columnList.add("order_id");
@@ -93,23 +79,43 @@ public final class FederateJDBCExecutorTest {
return result;
}
- private TranslatableSchema initializeLogicSchema(final String schemaName,
final Map<String, List<String>> columnMap, final Map<String, List<String>>
tableMap) {
- FederationSchemaMetaData federationSchemaMetaData =
buildSchemaMetaData(schemaName, tableMap.get(schemaName), columnMap);
- return new TranslatableSchema(federationSchemaMetaData);
+ private Map<String, List<String>> createTableMap() {
+ Map<String, List<String>> result = new HashMap<>();
+ List<String> tableList = new ArrayList<>();
+ tableList.add("t_order_federate");
+ tableList.add("t_user_info");
+ result.put("federate_jdbc", tableList);
+ return result;
}
- private FederationSchemaMetaData buildSchemaMetaData(final String
schemaName, final List<String> tableNames, final Map<String, List<String>>
tableColumns) {
- Map<String, TableMetaData> tableMetaDataList = new HashMap<>();
- for (String table: tableNames) {
- List<ColumnMetaData> columnMetaDataList = new ArrayList<>();
- List<IndexMetaData> indexMetaDataList = new ArrayList<>();
- for (String column: tableColumns.get(table)) {
- columnMetaDataList.add(new ColumnMetaData(column, 1, false,
false, false));
- indexMetaDataList.add(new IndexMetaData("index"));
- }
- TableMetaData tableMetaData = new TableMetaData(table,
columnMetaDataList, indexMetaDataList);
- tableMetaDataList.put(table, tableMetaData);
+ private FederationSchemaMetaData createSchemaMetaData(final String
schemaName, final List<String> tableNames, final Map<String, List<String>>
tableColumns) {
+ Map<String, TableMetaData> tableMetaDataList = new
HashMap<>(tableNames.size(), 1);
+ for (String each: tableNames) {
+ tableMetaDataList.put(each, createTableMetaData(each,
tableColumns.get(each)));
}
return new FederationSchemaMetaData(schemaName, tableMetaDataList);
}
+
+ private TableMetaData createTableMetaData(final String tableName, final
Collection<String> columnNames) {
+ Collection<ColumnMetaData> columnMetaDataList = new LinkedList<>();
+ Collection<IndexMetaData> indexMetaDataList = new LinkedList<>();
+ for (String each: columnNames) {
+ columnMetaDataList.add(new ColumnMetaData(each, 1, false, false,
false));
+ indexMetaDataList.add(new IndexMetaData("index"));
+ }
+ return new TableMetaData(tableName, columnMetaDataList,
indexMetaDataList);
+ }
+
+ @Test
+ public void assertSimpleSelect() {
+ ShardingSphereSQLParserEngine sqlParserEngine = new
ShardingSphereSQLParserEngine(
+ DatabaseTypeRegistry.getTrunkDatabaseTypeName(new
H2DatabaseType()), new ConfigurationProperties(new Properties()));
+ SQLStatement sqlStatement =
sqlParserEngine.parse(SELECT_SQL_BY_ID_ACROSS_SINGLE_AND_SHARDING_TABLES,
false);
+ String actual = optimizer.optimize(sqlStatement).explain();
+ String expected =
"EnumerableCalc(expr#0..4=[{inputs}],expr#5=[CAST($t1):VARCHAR],expr#6=[CAST($t3):VARCHAR],expr#7=[=($t5,$t6)],proj#0..1=[{exprs}],information=[$t4],$condition=[$t7])"
+ + "
EnumerableNestedLoopJoin(condition=[true],joinType=[inner])"
+ + "
EnumerableTableScan(table=[[federate_jdbc,t_order_federate]])"
+ + "
EnumerableTableScan(table=[[federate_jdbc,t_user_info]])";
+ assertThat(actual.replaceAll("\\s*", ""),
is(expected.replaceAll("\\s*", "")));
+ }
}
diff --git
a/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/ShardingSphereOptimizer.java
b/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/ShardingSphereOptimizer.java
index 3928ec7..ae16169 100644
---
a/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/ShardingSphereOptimizer.java
+++
b/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/ShardingSphereOptimizer.java
@@ -35,17 +35,13 @@ import org.apache.calcite.tools.Program;
import org.apache.calcite.tools.Programs;
import org.apache.calcite.util.ImmutableIntList;
import org.apache.calcite.util.Pair;
-import
org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
-import org.apache.shardingsphere.infra.database.type.DatabaseTypeRegistry;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
import
org.apache.shardingsphere.infra.optimize.context.translatable.TranslatableOptimizerContext;
import org.apache.shardingsphere.infra.optimize.converter.SQLNodeConvertEngine;
-import org.apache.shardingsphere.infra.parser.ShardingSphereSQLParserEngine;
-import org.apache.shardingsphere.sql.parser.exception.SQLParsingException;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import java.util.ArrayList;
import java.util.List;
-import java.util.Properties;
/**
* ShardingSphere optimizer.
@@ -57,46 +53,39 @@ public final class ShardingSphereOptimizer {
private final TranslatableOptimizerContext context;
/**
- * Optimize.
+ * Optimize query execution plan.
*
- * @param sql SQL to be optimized
- * @return rel node
- * @throws SQLParsingException SQL parsing exception
+ * @param sqlStatement SQL statement to be optimized
+ * @return optimized relational node
*/
- public RelNode optimize(final String sql) throws SQLParsingException {
+ public RelNode optimize(final SQLStatement sqlStatement) {
try {
- ShardingSphereSQLParserEngine sqlParserEngine = new
ShardingSphereSQLParserEngine(
-
DatabaseTypeRegistry.getTrunkDatabaseTypeName(context.getDatabaseType()), new
ConfigurationProperties(new Properties()));
- // TODO cache for every SQL may cause out of memory, should keep
consist with statement and prepared statement
- SqlNode sqlNode =
SQLNodeConvertEngine.convert(sqlParserEngine.parse(sql, true));
+ SqlNode sqlNode = SQLNodeConvertEngine.convert(sqlStatement);
SqlNode validNode = context.getValidator().validate(sqlNode);
RelDataType resultType =
context.getValidator().getValidatedNodeType(sqlNode);
- RelNode logicPlan =
context.getRelConverter().convertQuery(validNode, false, true).rel;
- return optimize(logicPlan, resultType);
+ RelNode queryPlan =
context.getRelConverter().convertQuery(validNode, false, true).rel;
+ return optimize(queryPlan, resultType);
} catch (final UnsupportedOperationException ex) {
throw new ShardingSphereException(ex);
}
}
-
- private RelNode optimize(final RelNode logicPlan, final RelDataType
resultType) {
+
+ private RelNode optimize(final RelNode queryPlan, final RelDataType
resultType) {
RelOptPlanner planner =
context.getRelConverter().getCluster().getPlanner();
- RelNode node = planner.changeTraits(logicPlan,
context.getRelConverter().getCluster().traitSet().replace(EnumerableConvention.INSTANCE));
+ RelNode node = planner.changeTraits(queryPlan,
context.getRelConverter().getCluster().traitSet().replace(EnumerableConvention.INSTANCE));
RelRoot root = constructRoot(node, resultType);
Program program = Programs.standard();
return program.run(planner, root.rel, getDesireRootTraitSet(root),
ImmutableList.of(), ImmutableList.of());
}
-
+
private RelRoot constructRoot(final RelNode node, final RelDataType
resultType) {
RelDataType rowType = node.getRowType();
List<Pair<Integer, String>> fields =
Pair.zip(ImmutableIntList.identity(rowType.getFieldCount()),
rowType.getFieldNames());
RelCollation collation = node instanceof Sort ? ((Sort)
node).collation : RelCollations.EMPTY;
return new RelRoot(node, resultType, SqlKind.SELECT, fields,
collation, new ArrayList<>());
}
-
+
private RelTraitSet getDesireRootTraitSet(final RelRoot root) {
- return root.rel.getTraitSet()
- .replace(EnumerableConvention.INSTANCE)
- .replace(root.collation)
- .simplify();
+ return
root.rel.getTraitSet().replace(EnumerableConvention.INSTANCE).replace(root.collation).simplify();
}
}
diff --git
a/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/context/translatable/TranslatableOptimizerContext.java
b/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/context/translatable/TranslatableOptimizerContext.java
index 1b29468..3bd5c70 100644
---
a/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/context/translatable/TranslatableOptimizerContext.java
+++
b/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/context/translatable/TranslatableOptimizerContext.java
@@ -22,7 +22,6 @@ import lombok.RequiredArgsConstructor;
import org.apache.calcite.schema.Schema;
import org.apache.calcite.sql.validate.SqlValidator;
import org.apache.calcite.sql2rel.SqlToRelConverter;
-import org.apache.shardingsphere.infra.database.type.DatabaseType;
/**
* Translatable optimize context.
@@ -31,8 +30,6 @@ import
org.apache.shardingsphere.infra.database.type.DatabaseType;
@Getter
public final class TranslatableOptimizerContext {
- private final DatabaseType databaseType;
-
private final String schemaName;
private final Schema schema;
diff --git
a/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/context/translatable/TranslatableOptimizerContextFactory.java
b/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/context/translatable/TranslatableOptimizerContextFactory.java
index ee8b16d..1c6f179 100644
---
a/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/context/translatable/TranslatableOptimizerContextFactory.java
+++
b/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/context/translatable/TranslatableOptimizerContextFactory.java
@@ -35,8 +35,7 @@ import org.apache.calcite.sql.validate.SqlValidator;
import org.apache.calcite.sql.validate.SqlValidatorUtil;
import org.apache.calcite.sql2rel.SqlToRelConverter;
import org.apache.calcite.sql2rel.StandardConvertletTable;
-import org.apache.shardingsphere.infra.database.type.DatabaseType;
-import
org.apache.shardingsphere.infra.optimize.plan.QueryOptimizePlannerFactory;
+import
org.apache.shardingsphere.infra.optimize.planner.QueryOptimizePlannerFactory;
import java.util.Collections;
import java.util.Properties;
@@ -52,16 +51,15 @@ public final class TranslatableOptimizerContextFactory {
*
* @param schemaName schema name
* @param schema schema
- * @param databaseType database type
* @return created translatable optimizer context
*/
- public static TranslatableOptimizerContext create(final String schemaName,
final Schema schema, final DatabaseType databaseType) {
+ public static TranslatableOptimizerContext create(final String schemaName,
final Schema schema) {
CalciteConnectionConfig connectionConfig = new
CalciteConnectionConfigImpl(createConnectionProperties());
RelDataTypeFactory relDataTypeFactory = new JavaTypeFactoryImpl();
CalciteCatalogReader catalogReader = createCatalogReader(schemaName,
schema, relDataTypeFactory, connectionConfig);
SqlValidator validator = createValidator(catalogReader,
relDataTypeFactory, connectionConfig);
SqlToRelConverter relConverter = createRelConverter(catalogReader,
validator, relDataTypeFactory);
- return new TranslatableOptimizerContext(databaseType, schemaName,
schema, validator, relConverter);
+ return new TranslatableOptimizerContext(schemaName, schema, validator,
relConverter);
}
private static Properties createConnectionProperties() {
diff --git
a/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/metadata/FederationMetaData.java
b/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/metadata/FederationMetaData.java
index e0ebdce..a161868 100644
---
a/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/metadata/FederationMetaData.java
+++
b/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/metadata/FederationMetaData.java
@@ -18,9 +18,9 @@
package org.apache.shardingsphere.infra.optimize.metadata;
import lombok.Getter;
-import org.apache.commons.collections4.map.LinkedMap;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
+import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
@@ -33,7 +33,7 @@ public final class FederationMetaData {
private final Map<String, FederationSchemaMetaData> schemas;
public FederationMetaData(final Map<String, ShardingSphereMetaData>
metaDataMap) {
- schemas = new LinkedMap<>(metaDataMap.size(), 1);
+ schemas = new LinkedHashMap<>(metaDataMap.size(), 1);
for (Entry<String, ShardingSphereMetaData> each :
metaDataMap.entrySet()) {
schemas.put(each.getKey(), new
FederationSchemaMetaData(each.getKey(),
each.getValue().getSchema().getTables()));
}
diff --git
a/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/metadata/FederationSchemaMetaData.java
b/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/metadata/FederationSchemaMetaData.java
index ca30939..63aedec 100644
---
a/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/metadata/FederationSchemaMetaData.java
+++
b/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/metadata/FederationSchemaMetaData.java
@@ -42,11 +42,11 @@ public final class FederationSchemaMetaData {
}
/**
- * Renew table meta data.
+ * Update table meta data.
*
- * @param metaData table meta data to be renewed
+ * @param metaData table meta data to be updated
*/
- public synchronized void renew(final TableMetaData metaData) {
+ public synchronized void update(final TableMetaData metaData) {
tables.put(metaData.getName().toLowerCase(), new
FederationTableMetaData(metaData.getName(), metaData));
}
diff --git
a/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/metadata/refresher/type/AlterTableFederationMetaDataRefresher.java
b/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/metadata/refresher/type/AlterTableFederationMetaDataRefresher.java
index ef97943..fef18a1 100644
---
a/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/metadata/refresher/type/AlterTableFederationMetaDataRefresher.java
+++
b/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/metadata/refresher/type/AlterTableFederationMetaDataRefresher.java
@@ -40,10 +40,10 @@ public final class AlterTableFederationMetaDataRefresher
implements FederationMe
String tableName =
sqlStatement.getTable().getTableName().getIdentifier().getValue();
if (sqlStatement.getRenameTable().isPresent()) {
String renameTableName =
sqlStatement.getRenameTable().get().getTableName().getIdentifier().getValue();
- buildTableMetaData(materials,
renameTableName).ifPresent(schema::renew);
+ buildTableMetaData(materials,
renameTableName).ifPresent(schema::update);
schema.remove(tableName);
} else {
- buildTableMetaData(materials, tableName).ifPresent(schema::renew);
+ buildTableMetaData(materials, tableName).ifPresent(schema::update);
}
}
diff --git
a/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/metadata/refresher/type/CreateTableFederationMetaDataRefresher.java
b/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/metadata/refresher/type/CreateTableFederationMetaDataRefresher.java
index 868481e..72f6a8f 100644
---
a/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/metadata/refresher/type/CreateTableFederationMetaDataRefresher.java
+++
b/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/metadata/refresher/type/CreateTableFederationMetaDataRefresher.java
@@ -38,6 +38,6 @@ public final class CreateTableFederationMetaDataRefresher
implements FederationM
final CreateTableStatement sqlStatement, final
SchemaBuilderMaterials materials) throws SQLException {
String tableName =
sqlStatement.getTable().getTableName().getIdentifier().getValue();
Optional.ofNullable(TableMetaDataBuilder.load(Collections.singletonList(tableName),
materials).get(tableName))
- .map(each ->
TableMetaDataBuilder.decorateFederationTableMetaData(each,
materials.getRules())).ifPresent(schema::renew);
+ .map(each ->
TableMetaDataBuilder.decorateFederationTableMetaData(each,
materials.getRules())).ifPresent(schema::update);
}
}
diff --git
a/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/plan/QueryOptimizePlannerFactory.java
b/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/planner/QueryOptimizePlannerFactory.java
similarity index 97%
rename from
shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/plan/QueryOptimizePlannerFactory.java
rename to
shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/planner/QueryOptimizePlannerFactory.java
index f2f3145..971f04c 100644
---
a/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/plan/QueryOptimizePlannerFactory.java
+++
b/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/planner/QueryOptimizePlannerFactory.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.optimize.plan;
+package org.apache.shardingsphere.infra.optimize.planner;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;