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;

Reply via email to