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 e7fda0e3f0a Support using federation to query ShardingSphere data. 
(#21456)
e7fda0e3f0a is described below

commit e7fda0e3f0a6557de0489612b734da12b5faabbe
Author: Chuxin Chen <[email protected]>
AuthorDate: Tue Oct 11 18:12:15 2022 +0800

    Support using federation to query ShardingSphere data. (#21456)
    
    * support use federation to query sharding sphere data.
    
    * Support using federation to query ShardingSphere data.
    
    * support use federation to query sharding sphere data.
---
 .../collector/ProxyInfoCollectorTest.java          |  3 +-
 .../service/PrometheusPluginBootServiceTest.java   |  3 +-
 .../data/ShardingStatisticsTableCollector.java     |  4 +-
 .../shardingsphere/sharding_statistics_table.yaml  |  4 +-
 .../shardingsphere/sharding_statistics_table.yaml  |  4 +-
 .../shardingsphere/sharding_statistics_table.yaml  |  4 +-
 .../driver/executor/DriverExecutor.java            |  3 +-
 .../driver/state/DriverStateContextTest.java       |  6 +-
 .../sqlfederation/spi/SQLFederationExecutor.java   |  5 +-
 .../sqlfederation/rule/SQLFederationRule.java      |  6 +-
 .../advanced/AdvancedSQLFederationExecutor.java    |  9 ++-
 .../AdvancedSQLFederationExecutorTest.java         |  3 +-
 .../executor/FilterableTableScanExecutor.java      | 29 +++++++++-
 .../sqlfederation/row/MemoryEnumerator.java        | 67 ++++++++++++++++++++++
 .../original/OriginalSQLFederationExecutor.java    | 10 +++-
 .../mode/manager/ContextManager.java               | 14 ++---
 .../mode/metadata/MetaDataContexts.java            | 24 +++++++-
 .../mode/metadata/MetaDataContextsFactory.java     | 13 +----
 .../mode/manager/ContextManagerTest.java           |  3 +-
 .../mode/metadata/MetaDataContextsTest.java        |  3 +-
 .../ClusterContextManagerCoordinatorTest.java      |  3 +-
 .../jdbc/JDBCDatabaseCommunicationEngine.java      |  2 +-
 .../handler/distsql/rul/sql/PreviewHandler.java    |  2 +-
 .../DatabaseCommunicationEngineFactoryTest.java    |  3 +-
 .../communication/ProxySQLExecutorTest.java        |  3 +-
 .../jdbc/JDBCDatabaseCommunicationEngineTest.java  |  3 +-
 .../jdbc/connection/JDBCBackendConnectionTest.java |  3 +-
 .../jdbc/datasource/JDBCBackendDataSourceTest.java |  3 +-
 .../context/BackendExecutorContextTest.java        |  3 +-
 .../proxy/backend/context/ProxyContextTest.java    | 11 ++--
 .../DatabaseAdminQueryBackendHandlerTest.java      |  3 +-
 .../DatabaseOperateBackendHandlerFactoryTest.java  |  5 +-
 .../DefaultDatabaseMetadataExecutorTest.java       |  3 +-
 .../admin/mysql/MySQLAdminExecutorCreatorTest.java |  3 +-
 .../executor/ShowCreateDatabaseExecutorTest.java   |  3 +-
 .../executor/ShowCurrentUserExecutorTest.java      |  3 +-
 .../mysql/executor/ShowDatabasesExecutorTest.java  |  3 +-
 .../executor/ShowFunctionStatusExecutorTest.java   |  3 +-
 .../executor/ShowProcedureStatusExecutorTest.java  |  3 +-
 .../mysql/executor/ShowTablesExecutorTest.java     |  3 +-
 .../mysql/executor/UseDatabaseExecutorTest.java    |  5 +-
 .../SelectInformationSchemataExecutorTest.java     |  3 +-
 .../executor/SelectDatabaseExecutorTest.java       |  3 +-
 .../executor/SelectTableExecutorTest.java          |  3 +-
 .../impl/UnicastDatabaseBackendHandlerTest.java    |  3 +-
 .../distsql/DistSQLBackendHandlerFactoryTest.java  |  5 +-
 .../updatable/SetVariableBackendHandlerTest.java   |  3 +-
 .../ral/updatable/SetVariableExecutorTest.java     |  3 +-
 .../frontend/command/CommandExecutorTaskTest.java  |  3 +-
 .../FrontDatabaseProtocolTypeFactoryTest.java      |  7 +--
 .../frontend/mysql/MySQLFrontendEngineTest.java    |  3 +-
 .../MySQLAuthenticationEngineTest.java             |  3 +-
 .../MySQLAuthenticationHandlerTest.java            |  3 +-
 .../command/MySQLCommandExecutorFactoryTest.java   |  3 +-
 .../execute/MySQLComStmtExecuteExecutorTest.java   |  3 +-
 .../OpenGaussAuthenticationEngineTest.java         |  3 +-
 .../OpenGaussAuthenticationHandlerTest.java        |  3 +-
 .../PostgreSQLAuthenticationEngineTest.java        |  3 +-
 .../PostgreSQLAuthenticationHandlerTest.java       |  3 +-
 .../PostgreSQLCommandExecuteEngineTest.java        |  3 +-
 .../pipeline/core/util/PipelineContextUtil.java    |  3 +-
 61 files changed, 215 insertions(+), 141 deletions(-)

diff --git 
a/agent/plugins/metrics/prometheus/src/test/java/org/apache/shardingsphere/agent/metrics/prometheus/collector/ProxyInfoCollectorTest.java
 
b/agent/plugins/metrics/prometheus/src/test/java/org/apache/shardingsphere/agent/metrics/prometheus/collector/ProxyInfoCollectorTest.java
index 0a1b09906e5..8d9f7d803e0 100644
--- 
a/agent/plugins/metrics/prometheus/src/test/java/org/apache/shardingsphere/agent/metrics/prometheus/collector/ProxyInfoCollectorTest.java
+++ 
b/agent/plugins/metrics/prometheus/src/test/java/org/apache/shardingsphere/agent/metrics/prometheus/collector/ProxyInfoCollectorTest.java
@@ -24,7 +24,6 @@ import 
org.apache.shardingsphere.infra.instance.InstanceContext;
 import org.apache.shardingsphere.infra.instance.metadata.InstanceMetaData;
 import org.apache.shardingsphere.infra.lock.LockContext;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import org.apache.shardingsphere.infra.util.eventbus.EventBusContext;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 import 
org.apache.shardingsphere.mode.manager.standalone.workerid.generator.StandaloneWorkerIdGenerator;
@@ -40,7 +39,7 @@ public final class ProxyInfoCollectorTest extends 
ProxyContextRestorer {
     
     @Test
     public void assertCollect() {
-        MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class), new 
ShardingSphereMetaData(), new ShardingSphereData());
+        MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class), new 
ShardingSphereMetaData());
         InstanceContext instanceContext = new InstanceContext(
                 new ComputeNodeInstance(mock(InstanceMetaData.class)), new 
StandaloneWorkerIdGenerator(), new ModeConfiguration("Standalone", null), 
mock(LockContext.class),
                 new EventBusContext());
diff --git 
a/agent/plugins/metrics/prometheus/src/test/java/org/apache/shardingsphere/agent/metrics/prometheus/service/PrometheusPluginBootServiceTest.java
 
b/agent/plugins/metrics/prometheus/src/test/java/org/apache/shardingsphere/agent/metrics/prometheus/service/PrometheusPluginBootServiceTest.java
index ac571bf4854..5afa0da2add 100644
--- 
a/agent/plugins/metrics/prometheus/src/test/java/org/apache/shardingsphere/agent/metrics/prometheus/service/PrometheusPluginBootServiceTest.java
+++ 
b/agent/plugins/metrics/prometheus/src/test/java/org/apache/shardingsphere/agent/metrics/prometheus/service/PrometheusPluginBootServiceTest.java
@@ -25,7 +25,6 @@ import 
org.apache.shardingsphere.infra.instance.InstanceContext;
 import org.apache.shardingsphere.infra.instance.metadata.InstanceMetaData;
 import org.apache.shardingsphere.infra.lock.LockContext;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import org.apache.shardingsphere.infra.util.eventbus.EventBusContext;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 import 
org.apache.shardingsphere.mode.manager.standalone.workerid.generator.StandaloneWorkerIdGenerator;
@@ -53,7 +52,7 @@ public final class PrometheusPluginBootServiceTest extends 
ProxyContextRestorer
     
     @Test
     public void assertStart() throws IOException {
-        MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class), new 
ShardingSphereMetaData(), new ShardingSphereData());
+        MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class), new 
ShardingSphereMetaData());
         InstanceContext instanceContext = new InstanceContext(
                 new ComputeNodeInstance(mock(InstanceMetaData.class)), new 
StandaloneWorkerIdGenerator(), new ModeConfiguration("Standalone", null), 
mock(LockContext.class),
                 new EventBusContext());
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/data/ShardingStatisticsTableCollector.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/data/ShardingStatisticsTableCollector.java
index b5a000f6b95..be3d2fdbae6 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/data/ShardingStatisticsTableCollector.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/data/ShardingStatisticsTableCollector.java
@@ -44,7 +44,7 @@ import java.util.Optional;
 /**
  * Sharding statistics table data collector.
  */
-public class ShardingStatisticsTableCollector implements 
ShardingSphereDataCollector {
+public final class ShardingStatisticsTableCollector implements 
ShardingSphereDataCollector {
     
     private static final String SHARDING_STATISTICS_TABLE = 
"sharding_statistics_table";
     
@@ -106,7 +106,7 @@ public class ShardingStatisticsTableCollector implements 
ShardingSphereDataColle
         try (
                 Connection connection = dataSource.getConnection();
                 Statement statement = connection.createStatement()) {
-            try (ResultSet resultSet = 
statement.executeQuery(String.format(MYSQL_TABLE_ROWS_AND_DATA_LENGTH, 
connection.getSchema(), dataNode.getTableName()))) {
+            try (ResultSet resultSet = 
statement.executeQuery(String.format(MYSQL_TABLE_ROWS_AND_DATA_LENGTH, 
connection.getCatalog(), dataNode.getTableName()))) {
                 if (resultSet.next()) {
                     tableRows = resultSet.getBigDecimal("TABLE_ROWS");
                     dataLength = resultSet.getBigDecimal("DATA_LENGTH");
diff --git 
a/infra/common/src/main/resources/schema/mysql/shardingsphere/sharding_statistics_table.yaml
 
b/infra/common/src/main/resources/schema/mysql/shardingsphere/sharding_statistics_table.yaml
index 14e8874962f..3105fe7a67a 100644
--- 
a/infra/common/src/main/resources/schema/mysql/shardingsphere/sharding_statistics_table.yaml
+++ 
b/infra/common/src/main/resources/schema/mysql/shardingsphere/sharding_statistics_table.yaml
@@ -50,13 +50,13 @@ columns:
     primaryKey: false
   row_count:
     caseSensitive: false
-    dataType: -5
+    dataType: 3
     generated: false
     name: row_count
     primaryKey: false
   size:
     caseSensitive: false
-    dataType: -5
+    dataType: 3
     generated: false
     name: size
     primaryKey: false
diff --git 
a/infra/common/src/main/resources/schema/opengauss/shardingsphere/sharding_statistics_table.yaml
 
b/infra/common/src/main/resources/schema/opengauss/shardingsphere/sharding_statistics_table.yaml
index 14e8874962f..3105fe7a67a 100644
--- 
a/infra/common/src/main/resources/schema/opengauss/shardingsphere/sharding_statistics_table.yaml
+++ 
b/infra/common/src/main/resources/schema/opengauss/shardingsphere/sharding_statistics_table.yaml
@@ -50,13 +50,13 @@ columns:
     primaryKey: false
   row_count:
     caseSensitive: false
-    dataType: -5
+    dataType: 3
     generated: false
     name: row_count
     primaryKey: false
   size:
     caseSensitive: false
-    dataType: -5
+    dataType: 3
     generated: false
     name: size
     primaryKey: false
diff --git 
a/infra/common/src/main/resources/schema/postgresql/shardingsphere/sharding_statistics_table.yaml
 
b/infra/common/src/main/resources/schema/postgresql/shardingsphere/sharding_statistics_table.yaml
index 14e8874962f..3105fe7a67a 100644
--- 
a/infra/common/src/main/resources/schema/postgresql/shardingsphere/sharding_statistics_table.yaml
+++ 
b/infra/common/src/main/resources/schema/postgresql/shardingsphere/sharding_statistics_table.yaml
@@ -50,13 +50,13 @@ columns:
     primaryKey: false
   row_count:
     caseSensitive: false
-    dataType: -5
+    dataType: 3
     generated: false
     name: row_count
     primaryKey: false
   size:
     caseSensitive: false
-    dataType: -5
+    dataType: 3
     generated: false
     name: size
     primaryKey: false
diff --git 
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/executor/DriverExecutor.java
 
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/executor/DriverExecutor.java
index c37fad4150a..15ea089cd52 100644
--- 
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/executor/DriverExecutor.java
+++ 
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/executor/DriverExecutor.java
@@ -56,7 +56,8 @@ public final class DriverExecutor implements AutoCloseable {
         DatabaseType databaseType = 
metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getResourceMetaData().getDatabaseType();
         String schemaName = 
DatabaseTypeEngine.getDefaultSchemaName(databaseType, 
connection.getDatabaseName());
         SQLFederationRule sqlFederationRule = 
metaDataContexts.getMetaData().getGlobalRuleMetaData().getSingleRule(SQLFederationRule.class);
-        federationExecutor = 
sqlFederationRule.getSQLFederationExecutor(connection.getDatabaseName(), 
schemaName, metaDataContexts.getMetaData(), jdbcExecutor, eventBusContext);
+        federationExecutor = 
sqlFederationRule.getSQLFederationExecutor(connection.getDatabaseName(), 
schemaName, metaDataContexts.getMetaData(),
+                metaDataContexts.getShardingSphereData(), jdbcExecutor, 
eventBusContext);
         trafficExecutor = new TrafficExecutor();
     }
     
diff --git 
a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/state/DriverStateContextTest.java
 
b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/state/DriverStateContextTest.java
index 8d7571cbe45..71b4d7b78e2 100644
--- 
a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/state/DriverStateContextTest.java
+++ 
b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/state/DriverStateContextTest.java
@@ -23,7 +23,6 @@ import 
org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.DefaultDatabase;
 import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
 import org.apache.shardingsphere.infra.state.StateContext;
@@ -63,8 +62,9 @@ public final class DriverStateContextTest {
         ShardingSphereRuleMetaData globalRuleMetaData = 
mock(ShardingSphereRuleMetaData.class);
         
when(globalRuleMetaData.getSingleRule(TransactionRule.class)).thenReturn(mock(TransactionRule.class,
 RETURNS_DEEP_STUBS));
         
when(globalRuleMetaData.getSingleRule(TrafficRule.class)).thenReturn(mock(TrafficRule.class));
-        when(contextManager.getMetaDataContexts()).thenReturn(new 
MetaDataContexts(mock(MetaDataPersistService.class),
-                new ShardingSphereMetaData(databases, globalRuleMetaData, 
mock(ConfigurationProperties.class)), new ShardingSphereData()));
+        MetaDataPersistService mockedPersistService = 
mock(MetaDataPersistService.class);
+        MetaDataContexts metaDataContexts = new 
MetaDataContexts(mockedPersistService, new ShardingSphereMetaData(databases, 
globalRuleMetaData, mock(ConfigurationProperties.class)));
+        
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
         
when(contextManager.getInstanceContext().getInstance().getState()).thenReturn(new
 StateContext());
     }
     
diff --git 
a/kernel/sql-federation/api/src/main/java/org/apache/shardingsphere/sqlfederation/spi/SQLFederationExecutor.java
 
b/kernel/sql-federation/api/src/main/java/org/apache/shardingsphere/sqlfederation/spi/SQLFederationExecutor.java
index 58e0f6c6e9c..6e60fc4f8d2 100644
--- 
a/kernel/sql-federation/api/src/main/java/org/apache/shardingsphere/sqlfederation/spi/SQLFederationExecutor.java
+++ 
b/kernel/sql-federation/api/src/main/java/org/apache/shardingsphere/sqlfederation/spi/SQLFederationExecutor.java
@@ -23,6 +23,7 @@ import 
org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.J
 import 
org.apache.shardingsphere.infra.executor.sql.execute.result.ExecuteResult;
 import 
org.apache.shardingsphere.infra.executor.sql.prepare.driver.DriverExecutionPrepareEngine;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
+import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import org.apache.shardingsphere.infra.util.eventbus.EventBusContext;
 import org.apache.shardingsphere.infra.util.spi.type.required.RequiredSPI;
 import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPI;
@@ -38,14 +39,14 @@ public interface SQLFederationExecutor extends TypedSPI, 
RequiredSPI, AutoClosea
     
     /**
      * Init SQL federation executor.
-     * 
      * @param databaseName database name
      * @param schemaName schema name
      * @param metaData ShardingSphere meta data
+     * @param shardingSphereData ShardingSphere data
      * @param jdbcExecutor jdbc executor
      * @param eventBusContext event bus context
      */
-    void init(String databaseName, String schemaName, ShardingSphereMetaData 
metaData, JDBCExecutor jdbcExecutor, EventBusContext eventBusContext);
+    void init(String databaseName, String schemaName, ShardingSphereMetaData 
metaData, ShardingSphereData shardingSphereData, JDBCExecutor jdbcExecutor, 
EventBusContext eventBusContext);
     
     /**
      * Execute query.
diff --git 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/rule/SQLFederationRule.java
 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/rule/SQLFederationRule.java
index 17652691ccd..38dd7f4b13a 100644
--- 
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/rule/SQLFederationRule.java
+++ 
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/rule/SQLFederationRule.java
@@ -20,6 +20,7 @@ package org.apache.shardingsphere.sqlfederation.rule;
 import lombok.Getter;
 import 
org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.JDBCExecutor;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
+import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import org.apache.shardingsphere.infra.rule.identifier.scope.GlobalRule;
 import org.apache.shardingsphere.infra.util.eventbus.EventBusContext;
 import 
org.apache.shardingsphere.sqlfederation.api.config.SQLFederationRuleConfiguration;
@@ -47,13 +48,14 @@ public final class SQLFederationRule implements GlobalRule {
      * @param databaseName database name
      * @param schemaName schema name
      * @param metaData ShardingSphere meta data
+     * @param shardingSphereData ShardingSphere data
      * @param jdbcExecutor jdbc executor
      * @param eventBusContext event bus context
      * @return created instance
      */
-    public SQLFederationExecutor getSQLFederationExecutor(final String 
databaseName, final String schemaName, final ShardingSphereMetaData metaData,
+    public SQLFederationExecutor getSQLFederationExecutor(final String 
databaseName, final String schemaName, final ShardingSphereMetaData metaData, 
final ShardingSphereData shardingSphereData,
                                                           final JDBCExecutor 
jdbcExecutor, final EventBusContext eventBusContext) {
-        sqlFederationExecutor.init(databaseName, schemaName, metaData, 
jdbcExecutor, eventBusContext);
+        sqlFederationExecutor.init(databaseName, schemaName, metaData, 
shardingSphereData, jdbcExecutor, eventBusContext);
         return sqlFederationExecutor;
     }
     
diff --git 
a/kernel/sql-federation/executor/advanced/src/main/java/org/apache/shardingsphere/sqlfederation/advanced/AdvancedSQLFederationExecutor.java
 
b/kernel/sql-federation/executor/advanced/src/main/java/org/apache/shardingsphere/sqlfederation/advanced/AdvancedSQLFederationExecutor.java
index a257f39985b..09e1e6f7964 100644
--- 
a/kernel/sql-federation/executor/advanced/src/main/java/org/apache/shardingsphere/sqlfederation/advanced/AdvancedSQLFederationExecutor.java
+++ 
b/kernel/sql-federation/executor/advanced/src/main/java/org/apache/shardingsphere/sqlfederation/advanced/AdvancedSQLFederationExecutor.java
@@ -39,6 +39,7 @@ import 
org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.J
 import 
org.apache.shardingsphere.infra.executor.sql.execute.result.ExecuteResult;
 import 
org.apache.shardingsphere.infra.executor.sql.prepare.driver.DriverExecutionPrepareEngine;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
+import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.decorator.model.ShardingSphereSchema;
 import org.apache.shardingsphere.infra.util.eventbus.EventBusContext;
@@ -82,6 +83,8 @@ public final class AdvancedSQLFederationExecutor implements 
SQLFederationExecuto
     
     private ConfigurationProperties props;
     
+    private ShardingSphereData shardingSphereData;
+    
     private JDBCExecutor jdbcExecutor;
     
     private EventBusContext eventBusContext;
@@ -89,12 +92,14 @@ public final class AdvancedSQLFederationExecutor implements 
SQLFederationExecuto
     private ResultSet resultSet;
     
     @Override
-    public void init(final String databaseName, final String schemaName, final 
ShardingSphereMetaData metaData, final JDBCExecutor jdbcExecutor, final 
EventBusContext eventBusContext) {
+    public void init(final String databaseName, final String schemaName, final 
ShardingSphereMetaData metaData, final ShardingSphereData shardingSphereData,
+                     final JDBCExecutor jdbcExecutor, final EventBusContext 
eventBusContext) {
         this.databaseName = databaseName;
         this.schemaName = schemaName;
         this.optimizerContext = 
OptimizerContextFactory.create(metaData.getDatabases(), 
metaData.getGlobalRuleMetaData());
         this.globalRuleMetaData = metaData.getGlobalRuleMetaData();
         this.props = metaData.getProps();
+        this.shardingSphereData = shardingSphereData;
         this.jdbcExecutor = jdbcExecutor;
         this.eventBusContext = eventBusContext;
     }
@@ -124,7 +129,7 @@ public final class AdvancedSQLFederationExecutor implements 
SQLFederationExecuto
                                                      final 
JDBCExecutorCallback<? extends ExecuteResult> callback, final 
SQLFederationExecutorContext federationContext) {
         TableScanExecutorContext executorContext = new 
TableScanExecutorContext(databaseName, schemaName, props, federationContext);
         // TODO replace FilterableTableScanExecutor with 
TranslatableTableScanExecutor
-        TableScanExecutor executor = new 
FilterableTableScanExecutor(prepareEngine, jdbcExecutor, callback, 
optimizerContext, globalRuleMetaData, executorContext, eventBusContext);
+        TableScanExecutor executor = new 
FilterableTableScanExecutor(prepareEngine, jdbcExecutor, callback, 
optimizerContext, globalRuleMetaData, executorContext, shardingSphereData, 
eventBusContext);
         // TODO replace FilterableSchema with TranslatableSchema
         return new FilterableSchema(schemaName, schema, JAVA_TYPE_FACTORY, 
executor);
     }
diff --git 
a/kernel/sql-federation/executor/advanced/src/test/java/org/apache/shardingsphere/sqlfederation/advanced/AdvancedSQLFederationExecutorTest.java
 
b/kernel/sql-federation/executor/advanced/src/test/java/org/apache/shardingsphere/sqlfederation/advanced/AdvancedSQLFederationExecutorTest.java
index 52268cfd325..d80013f3e8b 100644
--- 
a/kernel/sql-federation/executor/advanced/src/test/java/org/apache/shardingsphere/sqlfederation/advanced/AdvancedSQLFederationExecutorTest.java
+++ 
b/kernel/sql-federation/executor/advanced/src/test/java/org/apache/shardingsphere/sqlfederation/advanced/AdvancedSQLFederationExecutorTest.java
@@ -20,6 +20,7 @@ package org.apache.shardingsphere.sqlfederation.advanced;
 import org.apache.shardingsphere.infra.database.type.dialect.H2DatabaseType;
 import 
org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.JDBCExecutor;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
+import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.ShardingSphereResourceMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
@@ -61,7 +62,7 @@ public final class AdvancedSQLFederationExecutorTest {
         when(metaData.getDatabase(databaseName)).thenReturn(database);
         when(metaData.getGlobalRuleMetaData()).thenReturn(globalRuleMetaData);
         sqlFederationExecutor = new AdvancedSQLFederationExecutor();
-        sqlFederationExecutor.init(databaseName, schemaName, metaData, 
mock(JDBCExecutor.class), mock(EventBusContext.class));
+        sqlFederationExecutor.init(databaseName, schemaName, metaData, new 
ShardingSphereData(), mock(JDBCExecutor.class), mock(EventBusContext.class));
     }
     
     private ShardingSphereRuleMetaData createGlobalRuleMetaData() {
diff --git 
a/kernel/sql-federation/executor/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/FilterableTableScanExecutor.java
 
b/kernel/sql-federation/executor/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/FilterableTableScanExecutor.java
index 9e169b54e20..89ea25561ea 100644
--- 
a/kernel/sql-federation/executor/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/FilterableTableScanExecutor.java
+++ 
b/kernel/sql-federation/executor/core/src/main/java/org/apache/shardingsphere/sqlfederation/executor/FilterableTableScanExecutor.java
@@ -58,6 +58,9 @@ import 
org.apache.shardingsphere.infra.executor.sql.prepare.driver.DriverExecuti
 import 
org.apache.shardingsphere.infra.executor.sql.process.ExecuteProcessEngine;
 import org.apache.shardingsphere.infra.merge.MergeEngine;
 import org.apache.shardingsphere.infra.merge.result.MergedResult;
+import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
+import org.apache.shardingsphere.infra.metadata.data.ShardingSphereSchemaData;
+import org.apache.shardingsphere.infra.metadata.data.ShardingSphereTableData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.decorator.model.ShardingSphereSchema;
@@ -74,6 +77,7 @@ import 
org.apache.shardingsphere.sqlfederation.optimizer.executor.TableScanExecu
 import 
org.apache.shardingsphere.sqlfederation.optimizer.metadata.filter.FilterableSchema;
 import 
org.apache.shardingsphere.sqlfederation.optimizer.util.SQLFederationPlannerUtil;
 import org.apache.shardingsphere.sqlfederation.row.EmptyRowEnumerator;
+import org.apache.shardingsphere.sqlfederation.row.MemoryEnumerator;
 import org.apache.shardingsphere.sqlfederation.row.SQLFederationRowEnumerator;
 import 
org.apache.shardingsphere.sqlfederation.spi.SQLFederationExecutorContext;
 
@@ -87,6 +91,7 @@ import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 import java.util.stream.Collectors;
 
 /**
@@ -109,6 +114,8 @@ public final class FilterableTableScanExecutor implements 
TableScanExecutor {
     
     private final TableScanExecutorContext executorContext;
     
+    private final ShardingSphereData shardingSphereData;
+    
     private final EventBusContext eventBusContext;
     
     @Override
@@ -122,10 +129,13 @@ public final class FilterableTableScanExecutor implements 
TableScanExecutor {
         ShardingSphereDatabase database = 
federationContext.getDatabases().get(databaseName.toLowerCase());
         // TODO need to get session context
         ExecutionContext context = new 
KernelProcessor().generateExecutionContext(queryContext, database, 
globalRuleMetaData, executorContext.getProps(), new ConnectionContext());
-        if (federationContext.isPreview() || 
databaseType.getSystemSchemas().contains(schemaName)) {
+        if (federationContext.isPreview()) {
             
federationContext.getExecutionUnits().addAll(context.getExecutionUnits());
             return createEmptyEnumerable();
         }
+        if (databaseType.getSystemSchemas().contains(schemaName)) {
+            return executeByShardingSphereData(databaseName, schemaName, 
table);
+        }
         return execute(databaseType, queryContext, database, context);
     }
     
@@ -160,6 +170,23 @@ public final class FilterableTableScanExecutor implements 
TableScanExecutor {
         return result;
     }
     
+    private Enumerable<Object[]> executeByShardingSphereData(final String 
databaseName, final String schemaName, final ShardingSphereTable table) {
+        Optional<ShardingSphereTableData> tableData = 
Optional.ofNullable(shardingSphereData.getDatabaseData().get(databaseName)).map(optional
 -> optional.getSchemaData().get(schemaName))
+                
.map(ShardingSphereSchemaData::getTableData).map(shardingSphereData -> 
shardingSphereData.get(table.getName()));
+        return 
tableData.map(this::createMemoryEnumerator).orElseGet(this::createEmptyEnumerable);
+        
+    }
+    
+    private Enumerable<Object[]> createMemoryEnumerator(final 
ShardingSphereTableData tableData) {
+        return new AbstractEnumerable<Object[]>() {
+            
+            @Override
+            public Enumerator<Object[]> enumerator() {
+                return new MemoryEnumerator(tableData.getRows());
+            }
+        };
+    }
+    
     private Collection<Statement> getStatements(final 
Collection<ExecutionGroup<JDBCExecutionUnit>> inputGroups) {
         Collection<Statement> result = new LinkedList<>();
         for (ExecutionGroup<JDBCExecutionUnit> each : inputGroups) {
diff --git 
a/kernel/sql-federation/executor/core/src/main/java/org/apache/shardingsphere/sqlfederation/row/MemoryEnumerator.java
 
b/kernel/sql-federation/executor/core/src/main/java/org/apache/shardingsphere/sqlfederation/row/MemoryEnumerator.java
new file mode 100644
index 00000000000..714d5c9e676
--- /dev/null
+++ 
b/kernel/sql-federation/executor/core/src/main/java/org/apache/shardingsphere/sqlfederation/row/MemoryEnumerator.java
@@ -0,0 +1,67 @@
+/*
+ * 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.row;
+
+import org.apache.calcite.linq4j.Enumerator;
+import org.apache.shardingsphere.infra.metadata.data.ShardingSphereRowData;
+
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * Memory enumerator.
+ */
+public final class MemoryEnumerator implements Enumerator<Object[]> {
+    
+    private final List<ShardingSphereRowData> rows;
+    
+    private Iterator<ShardingSphereRowData> rowDataIterator;
+    
+    private List<Object> current;
+    
+    public MemoryEnumerator(final List<ShardingSphereRowData> rows) {
+        this.rows = rows;
+        rowDataIterator = rows.iterator();
+    }
+    
+    @Override
+    public Object[] current() {
+        return current.toArray();
+    }
+    
+    @Override
+    public boolean moveNext() {
+        if (rowDataIterator.hasNext()) {
+            current = rowDataIterator.next().getRows();
+            return true;
+        }
+        current = null;
+        rowDataIterator = rows.iterator();
+        return false;
+    }
+    
+    @Override
+    public void reset() {
+    }
+    
+    @Override
+    public void close() {
+        rowDataIterator = rows.iterator();
+        current = null;
+    }
+}
diff --git 
a/kernel/sql-federation/executor/original/src/main/java/org/apache/shardingsphere/sqlfederation/original/OriginalSQLFederationExecutor.java
 
b/kernel/sql-federation/executor/original/src/main/java/org/apache/shardingsphere/sqlfederation/original/OriginalSQLFederationExecutor.java
index 644c5d98175..363a8693521 100644
--- 
a/kernel/sql-federation/executor/original/src/main/java/org/apache/shardingsphere/sqlfederation/original/OriginalSQLFederationExecutor.java
+++ 
b/kernel/sql-federation/executor/original/src/main/java/org/apache/shardingsphere/sqlfederation/original/OriginalSQLFederationExecutor.java
@@ -28,6 +28,7 @@ import 
org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.J
 import 
org.apache.shardingsphere.infra.executor.sql.execute.result.ExecuteResult;
 import 
org.apache.shardingsphere.infra.executor.sql.prepare.driver.DriverExecutionPrepareEngine;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
+import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
 import org.apache.shardingsphere.infra.util.eventbus.EventBusContext;
 import org.apache.shardingsphere.sql.parser.sql.common.util.SQLUtil;
@@ -69,6 +70,8 @@ public final class OriginalSQLFederationExecutor implements 
SQLFederationExecuto
     
     private ConfigurationProperties props;
     
+    private ShardingSphereData shardingSphereData;
+    
     private JDBCExecutor jdbcExecutor;
     
     private EventBusContext eventBusContext;
@@ -86,11 +89,13 @@ public final class OriginalSQLFederationExecutor implements 
SQLFederationExecuto
     }
     
     @Override
-    public void init(final String databaseName, final String schemaName, final 
ShardingSphereMetaData metaData, final JDBCExecutor jdbcExecutor, final 
EventBusContext eventBusContext) {
+    public void init(final String databaseName, final String schemaName, final 
ShardingSphereMetaData metaData,
+                     final ShardingSphereData shardingSphereData, final 
JDBCExecutor jdbcExecutor, final EventBusContext eventBusContext) {
         this.databaseName = databaseName;
         this.schemaName = schemaName;
         this.optimizerContext = 
OptimizerContextFactory.create(metaData.getDatabases(), 
metaData.getGlobalRuleMetaData());
         this.globalRuleMetaData = metaData.getGlobalRuleMetaData();
+        this.shardingSphereData = shardingSphereData;
         this.props = metaData.getProps();
         this.jdbcExecutor = jdbcExecutor;
         this.eventBusContext = eventBusContext;
@@ -116,7 +121,8 @@ public final class OriginalSQLFederationExecutor implements 
SQLFederationExecuto
     private void addSchema(final CalciteConnection connection, final 
DriverExecutionPrepareEngine<JDBCExecutionUnit, Connection> prepareEngine,
                            final JDBCExecutorCallback<? extends ExecuteResult> 
callback, final SQLFederationExecutorContext federationContext) throws 
SQLException {
         TableScanExecutorContext executorContext = new 
TableScanExecutorContext(databaseName, schemaName, props, federationContext);
-        FilterableTableScanExecutor executor = new 
FilterableTableScanExecutor(prepareEngine, jdbcExecutor, callback, 
optimizerContext, globalRuleMetaData, executorContext, eventBusContext);
+        FilterableTableScanExecutor executor = new 
FilterableTableScanExecutor(prepareEngine, jdbcExecutor, callback, 
optimizerContext, globalRuleMetaData,
+                executorContext, shardingSphereData, eventBusContext);
         FilterableDatabase database = new 
FilterableDatabase(federationContext.getDatabases().get(databaseName.toLowerCase()),
 JAVA_TYPE_FACTORY, executor);
         // TODO support database.schema.table query when switch to 
AdvancedFederationExecutor, calcite jdbc just support schema.table query now
         connection.getRootSchema().add(schemaName, 
database.getSubSchema(schemaName));
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
index da706a87621..56639ac74d0 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
@@ -30,8 +30,6 @@ import 
org.apache.shardingsphere.infra.datasource.props.DataSourceProperties;
 import org.apache.shardingsphere.infra.executor.kernel.ExecutorEngine;
 import org.apache.shardingsphere.infra.instance.InstanceContext;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
-import 
org.apache.shardingsphere.infra.metadata.data.builder.ShardingSphereDataBuilderFactory;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabasesFactory;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.ShardingSphereResourceMetaData;
@@ -403,9 +401,7 @@ public final class ContextManager implements AutoCloseable {
         ConfigurationProperties props = 
metaDataContexts.getMetaData().getProps();
         ShardingSphereRuleMetaData changedGlobalMetaData = new 
ShardingSphereRuleMetaData(
                 
GlobalRulesBuilder.buildRules(metaDataContexts.getMetaData().getGlobalRuleMetaData().getConfigurations(),
 changedDatabases, instanceContext, props));
-        ShardingSphereMetaData changedMetaData = new 
ShardingSphereMetaData(changedDatabases, changedGlobalMetaData, props);
-        return newMetaDataContexts(changedMetaData, 
ShardingSphereDataBuilderFactory.getInstance(changedMetaData.getDatabases().values().iterator().next().getProtocolType())
-                .map(builder -> 
builder.build(changedMetaData)).orElseGet(ShardingSphereData::new));
+        return newMetaDataContexts(new 
ShardingSphereMetaData(changedDatabases, changedGlobalMetaData, props));
     }
     
     private Map<String, ShardingSphereDatabase> createChangedDatabases(final 
String databaseName,
@@ -426,8 +422,8 @@ public final class ContextManager implements AutoCloseable {
         return result;
     }
     
-    private MetaDataContexts newMetaDataContexts(final ShardingSphereMetaData 
metaData, final ShardingSphereData shardingSphereData) {
-        return new MetaDataContexts(metaDataContexts.getPersistService(), 
metaData, shardingSphereData);
+    private MetaDataContexts newMetaDataContexts(final ShardingSphereMetaData 
metaData) {
+        return new MetaDataContexts(metaDataContexts.getPersistService(), 
metaData);
     }
     
     private Map<String, ShardingSphereSchema> newShardingSphereSchemas(final 
ShardingSphereDatabase database) {
@@ -461,7 +457,7 @@ public final class ContextManager implements AutoCloseable {
                 GlobalRulesBuilder.buildRules(ruleConfigs, 
metaDataContexts.getMetaData().getDatabases(), instanceContext, 
metaDataContexts.getMetaData().getProps()));
         ShardingSphereMetaData toBeChangedMetaData = new 
ShardingSphereMetaData(
                 metaDataContexts.getMetaData().getDatabases(), 
toBeChangedGlobalRuleMetaData, metaDataContexts.getMetaData().getProps());
-        metaDataContexts = newMetaDataContexts(toBeChangedMetaData, 
metaDataContexts.getShardingSphereData());
+        metaDataContexts = newMetaDataContexts(toBeChangedMetaData);
     }
     
     /**
@@ -472,7 +468,7 @@ public final class ContextManager implements AutoCloseable {
     public synchronized void alterProperties(final Properties props) {
         ShardingSphereMetaData toBeChangedMetaData = new 
ShardingSphereMetaData(
                 metaDataContexts.getMetaData().getDatabases(), 
metaDataContexts.getMetaData().getGlobalRuleMetaData(), new 
ConfigurationProperties(props));
-        metaDataContexts = newMetaDataContexts(toBeChangedMetaData, 
metaDataContexts.getShardingSphereData());
+        metaDataContexts = newMetaDataContexts(toBeChangedMetaData);
     }
     
     /**
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContexts.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContexts.java
index 7254e3ebe00..a741691b12d 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContexts.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContexts.java
@@ -18,16 +18,18 @@
 package org.apache.shardingsphere.mode.metadata;
 
 import lombok.Getter;
-import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
+import 
org.apache.shardingsphere.infra.metadata.data.builder.ShardingSphereDataBuilderFactory;
 import org.apache.shardingsphere.infra.rule.identifier.type.ResourceHeldRule;
 import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
+import 
org.apache.shardingsphere.mode.metadata.persist.data.ShardingSphereDataPersistService;
+
+import java.util.Optional;
 
 /**
  * Meta data contexts.
  */
-@RequiredArgsConstructor
 @Getter
 public final class MetaDataContexts implements AutoCloseable {
     
@@ -37,6 +39,24 @@ public final class MetaDataContexts implements AutoCloseable 
{
     
     private final ShardingSphereData shardingSphereData;
     
+    public MetaDataContexts(final MetaDataPersistService persistService, final 
ShardingSphereMetaData metaData) {
+        this.persistService = persistService;
+        this.metaData = metaData;
+        this.shardingSphereData = initShardingSphereData(persistService, 
metaData);
+    }
+    
+    private ShardingSphereData initShardingSphereData(final 
MetaDataPersistService persistService, final ShardingSphereMetaData metaData) {
+        Optional<ShardingSphereData> result = 
Optional.ofNullable(persistService.getShardingSphereDataPersistService()).flatMap(ShardingSphereDataPersistService::load);
+        if (result.isPresent()) {
+            return result.get();
+        }
+        if (metaData.getDatabases().isEmpty()) {
+            return new ShardingSphereData();
+        }
+        return 
Optional.ofNullable(metaData.getDatabases().values().iterator().next().getProtocolType())
+                .flatMap(protocolType -> 
ShardingSphereDataBuilderFactory.getInstance(protocolType).map(builder -> 
builder.build(metaData))).orElseGet(ShardingSphereData::new);
+    }
+    
     @Override
     public void close() {
         persistService.getRepository().close();
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsFactory.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsFactory.java
index 380dc414288..1a1d4daf4e7 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsFactory.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsFactory.java
@@ -30,8 +30,6 @@ import 
org.apache.shardingsphere.infra.datasource.state.DataSourceStateManager;
 import org.apache.shardingsphere.infra.instance.InstanceContext;
 import 
org.apache.shardingsphere.infra.instance.metadata.jdbc.JDBCInstanceMetaData;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
-import 
org.apache.shardingsphere.infra.metadata.data.builder.ShardingSphereDataBuilderFactory;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabasesFactory;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
@@ -93,9 +91,7 @@ public final class MetaDataContextsFactory {
         Map<String, ShardingSphereDatabase> databases = 
ShardingSphereDatabasesFactory.create(effectiveDatabaseConfigs, props, 
instanceContext);
         databases.putAll(reloadDatabases(databases, persistService));
         ShardingSphereRuleMetaData globalMetaData = new 
ShardingSphereRuleMetaData(GlobalRulesBuilder.buildRules(globalRuleConfigs, 
databases, instanceContext, props));
-        ShardingSphereMetaData metaData = new 
ShardingSphereMetaData(databases, globalMetaData, props);
-        ShardingSphereData shardingSphereData = 
initShardingSphereData(persistService, metaData, instanceContext);
-        return new MetaDataContexts(persistService, metaData, 
shardingSphereData);
+        return new MetaDataContexts(persistService, new 
ShardingSphereMetaData(databases, globalMetaData, props));
     }
     
     private static Map<String, DatabaseConfiguration> 
createEffectiveDatabaseConfigurations(final Collection<String> databaseNames,
@@ -141,11 +137,4 @@ public final class MetaDataContextsFactory {
         });
         return result;
     }
-    
-    private static ShardingSphereData initShardingSphereData(final 
MetaDataPersistService persistService, final ShardingSphereMetaData metaData, 
final InstanceContext instanceContext) {
-        ShardingSphereData result = 
persistService.getShardingSphereDataPersistService().load().orElse(ShardingSphereDataBuilderFactory
-                
.getInstance(metaData.getDatabases().values().iterator().next().getProtocolType()).map(builder
 -> builder.build(metaData)).orElseGet(ShardingSphereData::new));
-        // TODO register to calcite
-        return result;
-    }
 }
diff --git 
a/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java
 
b/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java
index ee0508324c2..8d635c2aee0 100644
--- 
a/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java
+++ 
b/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java
@@ -56,8 +56,8 @@ import java.util.Optional;
 import java.util.Properties;
 
 import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertFalse;
 import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyString;
@@ -84,6 +84,7 @@ public final class ContextManagerTest {
         
when(metaDataContexts.getMetaData().containsDatabase("foo_db")).thenReturn(true);
         
when(metaDataContexts.getMetaData().getDatabase("foo_db")).thenReturn(database);
         
when(metaDataContexts.getMetaData().getDatabase("foo_db").containsSchema("foo_schema")).thenReturn(true);
+        
when(metaDataContexts.getMetaData().getDatabases().values()).thenReturn(Collections.singleton(database));
         contextManager = new ContextManager(metaDataContexts, 
mock(InstanceContext.class));
     }
     
diff --git 
a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsTest.java
 
b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsTest.java
index 2c2a6905f83..5908351ba4c 100644
--- 
a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsTest.java
+++ 
b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsTest.java
@@ -20,7 +20,6 @@ package org.apache.shardingsphere.mode.metadata;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.DefaultDatabase;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
 import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
@@ -49,6 +48,6 @@ public final class MetaDataContextsTest {
         Map<String, ShardingSphereDatabase> databases = new LinkedHashMap<>(1, 
1);
         databases.put(DefaultDatabase.LOGIC_NAME, database);
         ShardingSphereMetaData metaData = new 
ShardingSphereMetaData(databases, mock(ShardingSphereRuleMetaData.class), new 
ConfigurationProperties(new Properties()));
-        assertThat(new MetaDataContexts(mock(MetaDataPersistService.class), 
metaData, new 
ShardingSphereData()).getMetaData().getDatabase(DefaultDatabase.LOGIC_NAME), 
is(database));
+        assertThat(new MetaDataContexts(mock(MetaDataPersistService.class), 
metaData).getMetaData().getDatabase(DefaultDatabase.LOGIC_NAME), is(database));
     }
 }
diff --git 
a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/ClusterContextManagerCoordinatorTest.java
 
b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/ClusterContextManagerCoordinatorTest.java
index d5857e628a0..1fd5f6fa277 100644
--- 
a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/ClusterContextManagerCoordinatorTest.java
+++ 
b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/ClusterContextManagerCoordinatorTest.java
@@ -32,7 +32,6 @@ import 
org.apache.shardingsphere.infra.instance.ComputeNodeInstance;
 import org.apache.shardingsphere.infra.instance.metadata.InstanceMetaData;
 import 
org.apache.shardingsphere.infra.instance.metadata.proxy.ProxyInstanceMetaData;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.ShardingSphereResourceMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
@@ -135,7 +134,7 @@ public final class ClusterContextManagerCoordinatorTest {
     public void setUp() throws SQLException {
         contextManager = new 
ClusterContextManagerBuilder().build(createContextManagerBuilderParameter());
         contextManager.renewMetaDataContexts(new 
MetaDataContexts(contextManager.getMetaDataContexts().getPersistService(), new 
ShardingSphereMetaData(createDatabases(),
-                
contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData(), new 
ConfigurationProperties(new Properties())), new ShardingSphereData()));
+                
contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData(), new 
ConfigurationProperties(new Properties()))));
         coordinator = new ClusterContextManagerCoordinator(persistService, new 
RegistryCenter(mock(ClusterPersistRepository.class),
                 new EventBusContext(), mock(ProxyInstanceMetaData.class), 
null), contextManager);
     }
diff --git 
a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngine.java
 
b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngine.java
index 8dd3bab3fc0..42b6470bd45 100644
--- 
a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngine.java
+++ 
b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngine.java
@@ -146,7 +146,7 @@ public final class JDBCDatabaseCommunicationEngine extends 
DatabaseCommunication
         DatabaseType databaseType = 
getQueryContext().getSqlStatementContext().getDatabaseType();
         String schemaName = 
getQueryContext().getSqlStatementContext().getTablesContext().getSchemaName().orElseGet(()
 -> DatabaseTypeEngine.getDefaultSchemaName(databaseType, databaseName));
         SQLFederationRule sqlFederationRule = 
metaDataContexts.getMetaData().getGlobalRuleMetaData().getSingleRule(SQLFederationRule.class);
-        federationExecutor = 
sqlFederationRule.getSQLFederationExecutor(databaseName, schemaName, 
metaDataContexts.getMetaData(),
+        federationExecutor = 
sqlFederationRule.getSQLFederationExecutor(databaseName, schemaName, 
metaDataContexts.getMetaData(), metaDataContexts.getShardingSphereData(),
                 new 
JDBCExecutor(BackendExecutorContext.getInstance().getExecutorEngine(), 
backendConnection.isSerialExecute()),
                 
ProxyContext.getInstance().getContextManager().getInstanceContext().getEventBusContext());
     }
diff --git 
a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/PreviewHandler.java
 
b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/PreviewHandler.java
index d21c9382e11..a6a064599ef 100644
--- 
a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/PreviewHandler.java
+++ 
b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/sql/PreviewHandler.java
@@ -144,7 +144,7 @@ public final class PreviewHandler extends 
SQLRULBackendHandler<PreviewStatement>
         EventBusContext eventBusContext = 
ProxyContext.getInstance().getContextManager().getInstanceContext().getEventBusContext();
         SQLFederationRule sqlFederationRule = 
metaDataContexts.getMetaData().getGlobalRuleMetaData().getSingleRule(SQLFederationRule.class);
         SQLFederationExecutor sqlFederationExecutor = 
sqlFederationRule.getSQLFederationExecutor(databaseName, schemaName,
-                metaDataContexts.getMetaData(), new 
JDBCExecutor(BackendExecutorContext.getInstance().getExecutorEngine(), false), 
eventBusContext);
+                metaDataContexts.getMetaData(), 
metaDataContexts.getShardingSphereData(), new 
JDBCExecutor(BackendExecutorContext.getInstance().getExecutorEngine(), false), 
eventBusContext);
         sqlFederationExecutor.executeQuery(prepareEngine, 
createPreviewFederationCallback(sqlStatement, databaseType, eventBusContext), 
context);
         return context.getExecutionUnits();
     }
diff --git 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/DatabaseCommunicationEngineFactoryTest.java
 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/DatabaseCommunicationEngineFactoryTest.java
index f4697610cc3..cc12dfba8a3 100644
--- 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/DatabaseCommunicationEngineFactoryTest.java
+++ 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/DatabaseCommunicationEngineFactoryTest.java
@@ -22,7 +22,6 @@ import 
org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.type.dialect.H2DatabaseType;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
 import org.apache.shardingsphere.mode.manager.ContextManager;
@@ -50,7 +49,7 @@ public final class DatabaseCommunicationEngineFactoryTest 
extends ProxyContextRe
     @Before
     public void setUp() {
         MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class),
-                new ShardingSphereMetaData(getDatabases(), 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())), new ShardingSphereData());
+                new ShardingSphereMetaData(getDatabases(), 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())));
         ContextManager contextManager = mock(ContextManager.class, 
RETURNS_DEEP_STUBS);
         
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
         ProxyContext.init(contextManager);
diff --git 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/ProxySQLExecutorTest.java
 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/ProxySQLExecutorTest.java
index e5702d8e0a1..98fae15b4f0 100644
--- 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/ProxySQLExecutorTest.java
+++ 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/ProxySQLExecutorTest.java
@@ -30,7 +30,6 @@ import 
org.apache.shardingsphere.infra.executor.sql.context.ExecutionContext;
 import 
org.apache.shardingsphere.infra.executor.sql.prepare.driver.jdbc.JDBCDriverType;
 import org.apache.shardingsphere.infra.instance.InstanceContext;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.decorator.model.ShardingSphereSchema;
 import org.apache.shardingsphere.infra.route.context.RouteContext;
@@ -84,7 +83,7 @@ public final class ProxySQLExecutorTest extends 
ProxyContextRestorer {
         
when(connectionSession.getTransactionStatus().isInTransaction()).thenReturn(true);
         
when(connectionSession.getBackendConnection()).thenReturn(backendConnection);
         
when(backendConnection.getConnectionSession()).thenReturn(connectionSession);
-        MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class), new 
ShardingSphereMetaData(), new ShardingSphereData());
+        MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class), new 
ShardingSphereMetaData());
         ProxyContext.init(new ContextManager(metaDataContexts, 
mock(InstanceContext.class)));
     }
     
diff --git 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngineTest.java
 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngineTest.java
index 21c3719f9e6..164e0bccf0a 100644
--- 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngineTest.java
+++ 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngineTest.java
@@ -33,7 +33,6 @@ import 
org.apache.shardingsphere.infra.executor.sql.prepare.driver.DriverExecuti
 import 
org.apache.shardingsphere.infra.merge.result.impl.memory.MemoryMergedResult;
 import 
org.apache.shardingsphere.infra.merge.result.impl.memory.MemoryQueryResultRow;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.decorator.model.ShardingSphereColumn;
@@ -116,7 +115,7 @@ public final class JDBCDatabaseCommunicationEngineTest 
extends ProxyContextResto
     public void setUp() {
         
when(backendConnection.getConnectionSession().getDatabaseName()).thenReturn("db");
         MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class),
-                new ShardingSphereMetaData(mockDatabases(), 
globalRuleMetaData, new ConfigurationProperties(new Properties())), new 
ShardingSphereData());
+                new ShardingSphereMetaData(mockDatabases(), 
globalRuleMetaData, new ConfigurationProperties(new Properties())));
         ContextManager contextManager = mock(ContextManager.class, 
RETURNS_DEEP_STUBS);
         
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
         ProxyContext.init(contextManager);
diff --git 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/JDBCBackendConnectionTest.java
 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/JDBCBackendConnectionTest.java
index 31b8d8d33e0..2c69781ccf1 100644
--- 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/JDBCBackendConnectionTest.java
+++ 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/JDBCBackendConnectionTest.java
@@ -23,7 +23,6 @@ import 
org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
 import 
org.apache.shardingsphere.infra.executor.sql.execute.engine.ConnectionMode;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
 import org.apache.shardingsphere.mode.manager.ContextManager;
@@ -112,7 +111,7 @@ public final class JDBCBackendConnectionTest extends 
ProxyContextRestorer {
     private void setContextManager() {
         ContextManager contextManager = mock(ContextManager.class, 
RETURNS_DEEP_STUBS);
         MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class),
-                new ShardingSphereMetaData(createDatabases(), 
mockGlobalRuleMetaData(), new ConfigurationProperties(new Properties())), new 
ShardingSphereData());
+                new ShardingSphereMetaData(createDatabases(), 
mockGlobalRuleMetaData(), new ConfigurationProperties(new Properties())));
         
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
         ProxyContext.init(contextManager);
     }
diff --git 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/datasource/JDBCBackendDataSourceTest.java
 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/datasource/JDBCBackendDataSourceTest.java
index 2831abae486..c0c8f7c116e 100644
--- 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/datasource/JDBCBackendDataSourceTest.java
+++ 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/datasource/JDBCBackendDataSourceTest.java
@@ -23,7 +23,6 @@ import 
org.apache.shardingsphere.infra.database.type.dialect.H2DatabaseType;
 import 
org.apache.shardingsphere.infra.exception.OverallConnectionNotEnoughException;
 import 
org.apache.shardingsphere.infra.executor.sql.execute.engine.ConnectionMode;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
 import org.apache.shardingsphere.mode.manager.ContextManager;
@@ -69,7 +68,7 @@ public final class JDBCBackendDataSourceTest extends 
ProxyContextRestorer {
     public void setUp() {
         ContextManager contextManager = mock(ContextManager.class, 
RETURNS_DEEP_STUBS);
         MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class),
-                new ShardingSphereMetaData(createDatabases(), 
mockGlobalRuleMetaData(), new ConfigurationProperties(new Properties())), new 
ShardingSphereData());
+                new ShardingSphereMetaData(createDatabases(), 
mockGlobalRuleMetaData(), new ConfigurationProperties(new Properties())));
         
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
         ProxyContext.init(contextManager);
     }
diff --git 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/context/BackendExecutorContextTest.java
 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/context/BackendExecutorContextTest.java
index d33015beae7..80d89da955a 100644
--- 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/context/BackendExecutorContextTest.java
+++ 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/context/BackendExecutorContextTest.java
@@ -18,7 +18,6 @@
 package org.apache.shardingsphere.proxy.backend.context;
 
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
 import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
@@ -36,7 +35,7 @@ public final class BackendExecutorContextTest extends 
ProxyContextRestorer {
     
     @Before
     public void setUp() {
-        MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class), new 
ShardingSphereMetaData(), new ShardingSphereData());
+        MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class), new 
ShardingSphereMetaData());
         ContextManager contextManager = mock(ContextManager.class, 
RETURNS_DEEP_STUBS);
         
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
         ProxyContext.init(contextManager);
diff --git 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/context/ProxyContextTest.java
 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/context/ProxyContextTest.java
index fb35307076c..d47c91619b1 100644
--- 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/context/ProxyContextTest.java
+++ 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/context/ProxyContextTest.java
@@ -22,7 +22,6 @@ import 
org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.type.dialect.H2DatabaseType;
 import org.apache.shardingsphere.infra.instance.InstanceContext;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
 import org.apache.shardingsphere.mode.manager.ContextManager;
@@ -51,7 +50,7 @@ public final class ProxyContextTest extends 
ProxyContextRestorer {
     
     @Test
     public void assertInit() {
-        MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class), new 
ShardingSphereMetaData(), new ShardingSphereData());
+        MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class), new 
ShardingSphereMetaData());
         ProxyContext.init(new ContextManager(metaDataContexts, 
mock(InstanceContext.class, RETURNS_DEEP_STUBS)));
         
assertThat(ProxyContext.getInstance().getContextManager().getMetaDataContexts(),
 is(ProxyContext.getInstance().getContextManager().getMetaDataContexts()));
         assertTrue(ProxyContext.getInstance().getStateContext().isPresent());
@@ -63,7 +62,7 @@ public final class ProxyContextTest extends 
ProxyContextRestorer {
         Map<String, ShardingSphereDatabase> databases = mockDatabases();
         ContextManager contextManager = mock(ContextManager.class, 
RETURNS_DEEP_STUBS);
         MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class),
-                new ShardingSphereMetaData(databases, 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())), new ShardingSphereData());
+                new ShardingSphereMetaData(databases, 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())));
         
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
         ProxyContext.init(contextManager);
         assertTrue(ProxyContext.getInstance().databaseExists("db"));
@@ -85,7 +84,7 @@ public final class ProxyContextTest extends 
ProxyContextRestorer {
         Map<String, ShardingSphereDatabase> databases = mockDatabases();
         ContextManager contextManager = mock(ContextManager.class, 
RETURNS_DEEP_STUBS);
         MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class),
-                new ShardingSphereMetaData(databases, 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())), new ShardingSphereData());
+                new ShardingSphereMetaData(databases, 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())));
         
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
         ProxyContext.init(contextManager);
         ProxyContext.getInstance().getDatabase("db1");
@@ -96,7 +95,7 @@ public final class ProxyContextTest extends 
ProxyContextRestorer {
         Map<String, ShardingSphereDatabase> databases = mockDatabases();
         ContextManager contextManager = mock(ContextManager.class, 
RETURNS_DEEP_STUBS);
         MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class),
-                new ShardingSphereMetaData(databases, 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())), new ShardingSphereData());
+                new ShardingSphereMetaData(databases, 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())));
         
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
         ProxyContext.init(contextManager);
         assertThat(databases.get("db"), 
is(ProxyContext.getInstance().getDatabase("db")));
@@ -107,7 +106,7 @@ public final class ProxyContextTest extends 
ProxyContextRestorer {
         Map<String, ShardingSphereDatabase> databases = createDatabases();
         ContextManager contextManager = mock(ContextManager.class, 
RETURNS_DEEP_STUBS);
         MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class),
-                new ShardingSphereMetaData(databases, 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())), new ShardingSphereData());
+                new ShardingSphereMetaData(databases, 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())));
         
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
         ProxyContext.init(contextManager);
         assertThat(new 
LinkedHashSet<>(ProxyContext.getInstance().getAllDatabaseNames()), 
is(databases.keySet()));
diff --git 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/DatabaseAdminQueryBackendHandlerTest.java
 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/DatabaseAdminQueryBackendHandlerTest.java
index 65229d6a657..fe623bf1ae1 100644
--- 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/DatabaseAdminQueryBackendHandlerTest.java
+++ 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/DatabaseAdminQueryBackendHandlerTest.java
@@ -24,7 +24,6 @@ import 
org.apache.shardingsphere.infra.merge.result.MergedResult;
 import 
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataMergedResult;
 import 
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
 import org.apache.shardingsphere.mode.manager.ContextManager;
@@ -59,7 +58,7 @@ public final class DatabaseAdminQueryBackendHandlerTest 
extends ProxyContextRest
     @Before
     public void before() throws SQLException {
         MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class),
-                new ShardingSphereMetaData(getDatabases(), 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())), new ShardingSphereData());
+                new ShardingSphereMetaData(getDatabases(), 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())));
         ContextManager contextManager = new ContextManager(metaDataContexts, 
mock(InstanceContext.class));
         ProxyContext.init(contextManager);
         ConnectionSession connectionSession = mock(ConnectionSession.class);
diff --git 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/DatabaseOperateBackendHandlerFactoryTest.java
 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/DatabaseOperateBackendHandlerFactoryTest.java
index 0c5b9c64d76..c26f5574fd9 100644
--- 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/DatabaseOperateBackendHandlerFactoryTest.java
+++ 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/DatabaseOperateBackendHandlerFactoryTest.java
@@ -21,7 +21,6 @@ import 
org.apache.shardingsphere.dialect.exception.syntax.database.DatabaseCreat
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
 import org.apache.shardingsphere.mode.manager.ContextManager;
@@ -73,7 +72,7 @@ public final class DatabaseOperateBackendHandlerFactoryTest 
extends ProxyContext
     @Before
     public void setUp() {
         MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class),
-                new ShardingSphereMetaData(getDatabases(), 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())), new ShardingSphereData());
+                new ShardingSphereMetaData(getDatabases(), 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())));
         
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
         ProxyContext.init(contextManager);
         when(connectionSession.getDatabaseName()).thenReturn("db");
@@ -147,7 +146,7 @@ public final class DatabaseOperateBackendHandlerFactoryTest 
extends ProxyContext
         ContextManager contextManager = 
ProxyContext.getInstance().getContextManager();
         MetaDataContexts metaDataContexts = isGovernance
                 ? mockMetaDataContexts()
-                : new MetaDataContexts(mock(MetaDataPersistService.class), new 
ShardingSphereMetaData(), new ShardingSphereData());
+                : new MetaDataContexts(mock(MetaDataPersistService.class), new 
ShardingSphereMetaData());
         
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
     }
     
diff --git 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/DefaultDatabaseMetadataExecutorTest.java
 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/DefaultDatabaseMetadataExecutorTest.java
index bad7b1d378c..68eba75ae8d 100644
--- 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/DefaultDatabaseMetadataExecutorTest.java
+++ 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/DefaultDatabaseMetadataExecutorTest.java
@@ -22,7 +22,6 @@ import org.apache.shardingsphere.authority.rule.AuthorityRule;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.ShardingSphereResourceMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
@@ -78,7 +77,7 @@ public final class DefaultDatabaseMetadataExecutorTest 
extends ProxyContextResto
         when(authorityRule.findPrivileges(grantee)).thenReturn(Optional.of(new 
DatabasePermittedPrivileges(Collections.singleton("auth_db"))));
         ContextManager result = mock(ContextManager.class, RETURNS_DEEP_STUBS);
         MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class), new 
ShardingSphereMetaData(new HashMap<>(),
-                new 
ShardingSphereRuleMetaData(Collections.singleton(authorityRule)), new 
ConfigurationProperties(new Properties())), new ShardingSphereData());
+                new 
ShardingSphereRuleMetaData(Collections.singleton(authorityRule)), new 
ConfigurationProperties(new Properties())));
         when(result.getMetaDataContexts()).thenReturn(metaDataContexts);
         return result;
     }
diff --git 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/MySQLAdminExecutorCreatorTest.java
 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/MySQLAdminExecutorCreatorTest.java
index 541e1b38d99..abd8b4f7d81 100644
--- 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/MySQLAdminExecutorCreatorTest.java
+++ 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/MySQLAdminExecutorCreatorTest.java
@@ -21,7 +21,6 @@ import 
org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.ShardingSphereResourceMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
@@ -344,7 +343,7 @@ public final class MySQLAdminExecutorCreatorTest extends 
ProxyContextRestorer {
     private void initProxyContext(final Map<String, ShardingSphereDatabase> 
databases) {
         ContextManager contextManager = mock(ContextManager.class, 
RETURNS_DEEP_STUBS);
         MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class),
-                new ShardingSphereMetaData(databases, 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())), new ShardingSphereData());
+                new ShardingSphereMetaData(databases, 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())));
         
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
         ProxyContext.init(contextManager);
     }
diff --git 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowCreateDatabaseExecutorTest.java
 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowCreateDatabaseExecutorTest.java
index c6fb71f17e0..dbce8023feb 100644
--- 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowCreateDatabaseExecutorTest.java
+++ 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowCreateDatabaseExecutorTest.java
@@ -20,7 +20,6 @@ package 
org.apache.shardingsphere.proxy.backend.handler.admin.mysql.executor;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
 import org.apache.shardingsphere.infra.metadata.user.Grantee;
@@ -53,7 +52,7 @@ public final class ShowCreateDatabaseExecutorTest extends 
ProxyContextRestorer {
     public void setUp() {
         Map<String, ShardingSphereDatabase> databases = getDatabases();
         MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class),
-                new ShardingSphereMetaData(databases, 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())), new ShardingSphereData());
+                new ShardingSphereMetaData(databases, 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())));
         ContextManager contextManager = mock(ContextManager.class, 
RETURNS_DEEP_STUBS);
         
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
         ProxyContext.init(contextManager);
diff --git 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowCurrentUserExecutorTest.java
 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowCurrentUserExecutorTest.java
index 5977b09defc..6d4ed8153aa 100644
--- 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowCurrentUserExecutorTest.java
+++ 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowCurrentUserExecutorTest.java
@@ -20,7 +20,6 @@ package 
org.apache.shardingsphere.proxy.backend.handler.admin.mysql.executor;
 import org.apache.shardingsphere.authority.rule.AuthorityRule;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
 import org.apache.shardingsphere.infra.metadata.user.Grantee;
 import org.apache.shardingsphere.infra.metadata.user.ShardingSphereUser;
@@ -53,7 +52,7 @@ public final class ShowCurrentUserExecutorTest extends 
ProxyContextRestorer {
     public void setUp() {
         ContextManager contextManager = mock(ContextManager.class, 
RETURNS_DEEP_STUBS);
         MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class),
-                new ShardingSphereMetaData(new HashMap<>(), 
mockShardingSphereRuleMetaData(), new ConfigurationProperties(new 
Properties())), new ShardingSphereData());
+                new ShardingSphereMetaData(new HashMap<>(), 
mockShardingSphereRuleMetaData(), new ConfigurationProperties(new 
Properties())));
         
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
         ProxyContext.init(contextManager);
     }
diff --git 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowDatabasesExecutorTest.java
 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowDatabasesExecutorTest.java
index 395ca6ea3fb..50ace8347fe 100644
--- 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowDatabasesExecutorTest.java
+++ 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowDatabasesExecutorTest.java
@@ -20,7 +20,6 @@ package 
org.apache.shardingsphere.proxy.backend.handler.admin.mysql.executor;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
 import org.apache.shardingsphere.infra.metadata.user.Grantee;
@@ -61,7 +60,7 @@ public final class ShowDatabasesExecutorTest extends 
ProxyContextRestorer {
         showDatabasesExecutor = new ShowDatabasesExecutor(new 
MySQLShowDatabasesStatement());
         ContextManager contextManager = mock(ContextManager.class, 
RETURNS_DEEP_STUBS);
         MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class),
-                new ShardingSphereMetaData(getDatabases(), 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())), new ShardingSphereData());
+                new ShardingSphereMetaData(getDatabases(), 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())));
         
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
         ProxyContext.init(contextManager);
     }
diff --git 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowFunctionStatusExecutorTest.java
 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowFunctionStatusExecutorTest.java
index 4b260c034bb..1820927bcf9 100644
--- 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowFunctionStatusExecutorTest.java
+++ 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowFunctionStatusExecutorTest.java
@@ -20,7 +20,6 @@ package 
org.apache.shardingsphere.proxy.backend.handler.admin.mysql.executor;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
 import org.apache.shardingsphere.infra.metadata.user.Grantee;
@@ -56,7 +55,7 @@ public final class ShowFunctionStatusExecutorTest extends 
ProxyContextRestorer {
         showFunctionStatusExecutor = new ShowFunctionStatusExecutor(new 
MySQLShowFunctionStatusStatement());
         Map<String, ShardingSphereDatabase> databases = getDatabases();
         MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class),
-                new ShardingSphereMetaData(databases, 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())), new ShardingSphereData());
+                new ShardingSphereMetaData(databases, 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())));
         ContextManager contextManager = mock(ContextManager.class, 
RETURNS_DEEP_STUBS);
         
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
         ProxyContext.init(contextManager);
diff --git 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowProcedureStatusExecutorTest.java
 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowProcedureStatusExecutorTest.java
index 6a5fa7c47ee..d1a0261828a 100644
--- 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowProcedureStatusExecutorTest.java
+++ 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowProcedureStatusExecutorTest.java
@@ -20,7 +20,6 @@ package 
org.apache.shardingsphere.proxy.backend.handler.admin.mysql.executor;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
 import org.apache.shardingsphere.infra.metadata.user.Grantee;
@@ -53,7 +52,7 @@ public final class ShowProcedureStatusExecutorTest extends 
ProxyContextRestorer
     public void setUp() {
         Map<String, ShardingSphereDatabase> databases = getDatabases();
         MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class),
-                new ShardingSphereMetaData(databases, 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())), new ShardingSphereData());
+                new ShardingSphereMetaData(databases, 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())));
         ContextManager contextManager = mock(ContextManager.class, 
RETURNS_DEEP_STUBS);
         
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
         ProxyContext.init(contextManager);
diff --git 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowTablesExecutorTest.java
 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowTablesExecutorTest.java
index 6b00b9dbac4..a1f72253960 100644
--- 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowTablesExecutorTest.java
+++ 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowTablesExecutorTest.java
@@ -23,7 +23,6 @@ import 
org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
 import 
org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResultMetaData;
 import org.apache.shardingsphere.infra.merge.result.MergedResult;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.decorator.model.ShardingSphereSchema;
@@ -66,7 +65,7 @@ public final class ShowTablesExecutorTest extends 
ProxyContextRestorer {
     public void setUp() {
         Map<String, ShardingSphereDatabase> databases = getDatabases();
         MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class),
-                new ShardingSphereMetaData(databases, 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())), new ShardingSphereData());
+                new ShardingSphereMetaData(databases, 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())));
         ContextManager contextManager = mock(ContextManager.class, 
RETURNS_DEEP_STUBS);
         
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
         ProxyContext.init(contextManager);
diff --git 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/UseDatabaseExecutorTest.java
 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/UseDatabaseExecutorTest.java
index a0fa4d605c4..f550f42573f 100644
--- 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/UseDatabaseExecutorTest.java
+++ 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/UseDatabaseExecutorTest.java
@@ -21,7 +21,6 @@ import 
org.apache.shardingsphere.dialect.exception.syntax.database.UnknownDataba
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.type.dialect.H2DatabaseType;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
 import org.apache.shardingsphere.mode.manager.ContextManager;
@@ -60,7 +59,7 @@ public final class UseDatabaseExecutorTest extends 
ProxyContextRestorer {
     public void setUp() {
         ContextManager contextManager = mock(ContextManager.class, 
RETURNS_DEEP_STUBS);
         MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class),
-                new ShardingSphereMetaData(getDatabases(), 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())), new ShardingSphereData());
+                new ShardingSphereMetaData(getDatabases(), 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())));
         
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
         ProxyContext.init(contextManager);
     }
@@ -82,7 +81,7 @@ public final class UseDatabaseExecutorTest extends 
ProxyContextRestorer {
         
when(useStatement.getSchema()).thenReturn(String.format(DATABASE_PATTERN, 0));
         ContextManager contextManager = mock(ContextManager.class, 
RETURNS_DEEP_STUBS);
         MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class),
-                new ShardingSphereMetaData(getDatabases(), 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())), new ShardingSphereData());
+                new ShardingSphereMetaData(getDatabases(), 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())));
         
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
         ProxyContext.init(contextManager);
         UseDatabaseExecutor useSchemaBackendHandler = new 
UseDatabaseExecutor(useStatement);
diff --git 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/information/SelectInformationSchemataExecutorTest.java
 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/information/SelectInformationSchemataExecutorTest.java
index 0039e2a58a0..7ce2b290399 100644
--- 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/information/SelectInformationSchemataExecutorTest.java
+++ 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/information/SelectInformationSchemataExecutorTest.java
@@ -22,7 +22,6 @@ import org.apache.shardingsphere.authority.rule.AuthorityRule;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.ShardingSphereResourceMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
@@ -87,7 +86,7 @@ public final class SelectInformationSchemataExecutorTest 
extends ProxyContextRes
         when(authorityRule.findPrivileges(grantee)).thenReturn(Optional.of(new 
DatabasePermittedPrivileges(Collections.singleton("auth_db"))));
         ContextManager result = mock(ContextManager.class, RETURNS_DEEP_STUBS);
         MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class), new 
ShardingSphereMetaData(new HashMap<>(),
-                new 
ShardingSphereRuleMetaData(Collections.singleton(authorityRule)), new 
ConfigurationProperties(new Properties())), new ShardingSphereData());
+                new 
ShardingSphereRuleMetaData(Collections.singleton(authorityRule)), new 
ConfigurationProperties(new Properties())));
         when(result.getMetaDataContexts()).thenReturn(metaDataContexts);
         return result;
     }
diff --git 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/postgresql/executor/SelectDatabaseExecutorTest.java
 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/postgresql/executor/SelectDatabaseExecutorTest.java
index 83ee577fcb8..b08e3131a79 100644
--- 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/postgresql/executor/SelectDatabaseExecutorTest.java
+++ 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/postgresql/executor/SelectDatabaseExecutorTest.java
@@ -20,7 +20,6 @@ package 
org.apache.shardingsphere.proxy.backend.handler.admin.postgresql.executo
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import 
org.apache.shardingsphere.infra.database.type.dialect.PostgreSQLDatabaseType;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.ShardingSphereResourceMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
@@ -63,7 +62,7 @@ public final class SelectDatabaseExecutorTest extends 
ProxyContextRestorer {
     public void setUp() {
         ContextManager contextManager = mock(ContextManager.class, 
RETURNS_DEEP_STUBS);
         MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class),
-                new ShardingSphereMetaData(new HashMap<>(), 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())), new ShardingSphereData());
+                new ShardingSphereMetaData(new HashMap<>(), 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())));
         
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
         ProxyContext.init(contextManager);
     }
diff --git 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/postgresql/executor/SelectTableExecutorTest.java
 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/postgresql/executor/SelectTableExecutorTest.java
index fe196934792..ab9e1966099 100644
--- 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/postgresql/executor/SelectTableExecutorTest.java
+++ 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/postgresql/executor/SelectTableExecutorTest.java
@@ -20,7 +20,6 @@ package 
org.apache.shardingsphere.proxy.backend.handler.admin.postgresql.executo
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import 
org.apache.shardingsphere.infra.database.type.dialect.PostgreSQLDatabaseType;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.ShardingSphereResourceMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
@@ -61,7 +60,7 @@ public final class SelectTableExecutorTest extends 
ProxyContextRestorer {
     public void setUp() {
         ContextManager contextManager = mock(ContextManager.class, 
RETURNS_DEEP_STUBS);
         MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class),
-                new ShardingSphereMetaData(new HashMap<>(), 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())), new ShardingSphereData());
+                new ShardingSphereMetaData(new HashMap<>(), 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())));
         
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
         ProxyContext.init(contextManager);
     }
diff --git 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/data/impl/UnicastDatabaseBackendHandlerTest.java
 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/data/impl/UnicastDatabaseBackendHandlerTest.java
index b6424221b12..c156e21588e 100644
--- 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/data/impl/UnicastDatabaseBackendHandlerTest.java
+++ 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/data/impl/UnicastDatabaseBackendHandlerTest.java
@@ -23,7 +23,6 @@ import 
org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.type.dialect.H2DatabaseType;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
 import org.apache.shardingsphere.mode.manager.ContextManager;
@@ -83,7 +82,7 @@ public final class UnicastDatabaseBackendHandlerTest extends 
ProxyContextRestore
     public void setUp() throws SQLException {
         ContextManager contextManager = mock(ContextManager.class, 
RETURNS_DEEP_STUBS);
         MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class),
-                new ShardingSphereMetaData(getDatabases(), 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())), new ShardingSphereData());
+                new ShardingSphereMetaData(getDatabases(), 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())));
         
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
         ProxyContext.init(contextManager);
         
when(connectionSession.getDefaultDatabaseName()).thenReturn(String.format(DATABASE_PATTERN,
 0));
diff --git 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java
 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java
index 5340e019e97..e5951f0a61d 100644
--- 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java
+++ 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java
@@ -26,7 +26,6 @@ import 
org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
 import 
org.apache.shardingsphere.infra.distsql.exception.rule.MissingRequiredRuleException;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.ShardingSphereResourceMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
@@ -83,7 +82,7 @@ public final class DistSQLBackendHandlerFactoryTest extends 
ProxyContextRestorer
     @Before
     public void setUp() {
         MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class),
-                new ShardingSphereMetaData(getDatabases(), 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())), new ShardingSphereData());
+                new ShardingSphereMetaData(getDatabases(), 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())));
         ContextManager contextManager = mock(ContextManager.class, 
RETURNS_DEEP_STUBS);
         
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
         ProxyContext.init(contextManager);
@@ -238,7 +237,7 @@ public final class DistSQLBackendHandlerFactoryTest extends 
ProxyContextRestorer
         ContextManager contextManager = mock(ContextManager.class, 
RETURNS_DEEP_STUBS);
         MetaDataContexts metaDataContexts = isGovernance
                 ? mockMetaDataContexts()
-                : new MetaDataContexts(mock(MetaDataPersistService.class), new 
ShardingSphereMetaData(), new ShardingSphereData());
+                : new MetaDataContexts(mock(MetaDataPersistService.class), new 
ShardingSphereMetaData());
         
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
         ProxyContext.init(contextManager);
     }
diff --git 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetVariableBackendHandlerTest.java
 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetVariableBackendHandlerTest.java
index 4643b5113b9..4a48be5469b 100644
--- 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetVariableBackendHandlerTest.java
+++ 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetVariableBackendHandlerTest.java
@@ -24,7 +24,6 @@ import 
org.apache.shardingsphere.infra.config.props.ConfigurationPropertyKey;
 import org.apache.shardingsphere.infra.database.DefaultDatabase;
 import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.ShardingSphereResourceMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
@@ -66,7 +65,7 @@ public final class SetVariableBackendHandlerTest extends 
ProxyContextRestorer {
     @Before
     public void setUp() {
         MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class),
-                new ShardingSphereMetaData(createDatabases(), 
mock(ShardingSphereRuleMetaData.class), new 
ConfigurationProperties(createProperties())), new ShardingSphereData());
+                new ShardingSphereMetaData(createDatabases(), 
mock(ShardingSphereRuleMetaData.class), new 
ConfigurationProperties(createProperties())));
         ContextManager contextManager = mock(ContextManager.class, 
RETURNS_DEEP_STUBS);
         
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
         ProxyContext.init(contextManager);
diff --git 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetVariableExecutorTest.java
 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetVariableExecutorTest.java
index 4e36d38147f..21ad793253f 100644
--- 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetVariableExecutorTest.java
+++ 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetVariableExecutorTest.java
@@ -20,7 +20,6 @@ package 
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.updatable;
 import 
org.apache.shardingsphere.distsql.parser.statement.ral.updatable.SetVariableStatement;
 import org.apache.shardingsphere.infra.config.props.ConfigurationPropertyKey;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
 import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
@@ -71,7 +70,7 @@ public final class SetVariableExecutorTest extends 
ProxyContextRestorer {
     
     @Test
     public void assertExecuteWithConfigurationKey() throws SQLException {
-        ContextManager contextManager = new ContextManager(new 
MetaDataContexts(mock(MetaDataPersistService.class), new 
ShardingSphereMetaData(), new ShardingSphereData()), null);
+        ContextManager contextManager = new ContextManager(new 
MetaDataContexts(mock(MetaDataPersistService.class), new 
ShardingSphereMetaData()), null);
         ProxyContext.init(contextManager);
         SetVariableStatement statement = new 
SetVariableStatement("proxy_frontend_flush_threshold", "1024");
         SetVariableHandler handler = new SetVariableHandler();
diff --git 
a/proxy/frontend/core/src/test/java/org/apache/shardingsphere/proxy/frontend/command/CommandExecutorTaskTest.java
 
b/proxy/frontend/core/src/test/java/org/apache/shardingsphere/proxy/frontend/command/CommandExecutorTaskTest.java
index 7408633401d..db63ccce12b 100644
--- 
a/proxy/frontend/core/src/test/java/org/apache/shardingsphere/proxy/frontend/command/CommandExecutorTaskTest.java
+++ 
b/proxy/frontend/core/src/test/java/org/apache/shardingsphere/proxy/frontend/command/CommandExecutorTaskTest.java
@@ -26,7 +26,6 @@ import 
org.apache.shardingsphere.db.protocol.packet.DatabasePacket;
 import org.apache.shardingsphere.db.protocol.payload.PacketPayload;
 import org.apache.shardingsphere.infra.instance.InstanceContext;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
 import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
@@ -100,7 +99,7 @@ public final class CommandExecutorTaskTest extends 
ProxyContextRestorer {
     
     @Before
     public void setup() {
-        ProxyContext.init(new ContextManager(new 
MetaDataContexts(mock(MetaDataPersistService.class), new 
ShardingSphereMetaData(), new ShardingSphereData()), 
mock(InstanceContext.class)));
+        ProxyContext.init(new ContextManager(new 
MetaDataContexts(mock(MetaDataPersistService.class), new 
ShardingSphereMetaData()), mock(InstanceContext.class)));
         
when(connectionSession.getBackendConnection()).thenReturn(backendConnection);
         
when(handlerContext.channel().attr(CommonConstants.CHARSET_ATTRIBUTE_KEY).get()).thenReturn(StandardCharsets.UTF_8);
     }
diff --git 
a/proxy/frontend/core/src/test/java/org/apache/shardingsphere/proxy/frontend/protocol/FrontDatabaseProtocolTypeFactoryTest.java
 
b/proxy/frontend/core/src/test/java/org/apache/shardingsphere/proxy/frontend/protocol/FrontDatabaseProtocolTypeFactoryTest.java
index 2f1931803c0..d3e40581006 100644
--- 
a/proxy/frontend/core/src/test/java/org/apache/shardingsphere/proxy/frontend/protocol/FrontDatabaseProtocolTypeFactoryTest.java
+++ 
b/proxy/frontend/core/src/test/java/org/apache/shardingsphere/proxy/frontend/protocol/FrontDatabaseProtocolTypeFactoryTest.java
@@ -24,7 +24,6 @@ import 
org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
 import org.apache.shardingsphere.infra.instance.InstanceContext;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
 import org.apache.shardingsphere.mode.manager.ContextManager;
@@ -53,7 +52,7 @@ public final class FrontDatabaseProtocolTypeFactoryTest 
extends ProxyContextRest
     @Test
     public void 
assertGetDatabaseTypeWhenThrowShardingSphereConfigurationException() {
         MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class),
-                new ShardingSphereMetaData(Collections.emptyMap(), 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())), new ShardingSphereData());
+                new ShardingSphereMetaData(Collections.emptyMap(), 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())));
         ProxyContext.init(new ContextManager(metaDataContexts, 
mock(InstanceContext.class)));
         assertTrue(metaDataContexts.getMetaData().getDatabases().isEmpty());
         
assertThat(FrontDatabaseProtocolTypeFactory.getDatabaseType().getType(), 
is("MySQL"));
@@ -62,7 +61,7 @@ public final class FrontDatabaseProtocolTypeFactoryTest 
extends ProxyContextRest
     @Test
     public void 
assertGetDatabaseTypeInstanceOfMySQLDatabaseTypeFromMetaDataContextsSchemaName()
 {
         MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class),
-                new ShardingSphereMetaData(mockDatabases(), 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())), new ShardingSphereData());
+                new ShardingSphereMetaData(mockDatabases(), 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())));
         ProxyContext.init(new ContextManager(metaDataContexts, 
mock(InstanceContext.class)));
         assertFalse(metaDataContexts.getMetaData().getDatabases().isEmpty());
         String configuredDatabaseType = 
metaDataContexts.getMetaData().getProps().getValue(ConfigurationPropertyKey.PROXY_FRONTEND_DATABASE_PROTOCOL_TYPE);
@@ -76,7 +75,7 @@ public final class FrontDatabaseProtocolTypeFactoryTest 
extends ProxyContextRest
     @Test
     public void 
assertGetDatabaseTypeOfPostgreSQLDatabaseTypeFromMetaDataContextsProps() {
         MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class),
-                new ShardingSphereMetaData(mockDatabases(), 
mock(ShardingSphereRuleMetaData.class), new 
ConfigurationProperties(createProperties())), new ShardingSphereData());
+                new ShardingSphereMetaData(mockDatabases(), 
mock(ShardingSphereRuleMetaData.class), new 
ConfigurationProperties(createProperties())));
         ProxyContext.init(new ContextManager(metaDataContexts, 
mock(InstanceContext.class)));
         assertFalse(metaDataContexts.getMetaData().getDatabases().isEmpty());
         String configuredDatabaseType = 
metaDataContexts.getMetaData().getProps().getValue(ConfigurationPropertyKey.PROXY_FRONTEND_DATABASE_PROTOCOL_TYPE);
diff --git 
a/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/MySQLFrontendEngineTest.java
 
b/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/MySQLFrontendEngineTest.java
index afaece6ca44..87f6f12647f 100644
--- 
a/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/MySQLFrontendEngineTest.java
+++ 
b/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/MySQLFrontendEngineTest.java
@@ -36,7 +36,6 @@ import 
org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
 import org.apache.shardingsphere.infra.instance.InstanceContext;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
 import org.apache.shardingsphere.infra.metadata.user.ShardingSphereUser;
@@ -175,7 +174,7 @@ public final class MySQLFrontendEngineTest extends 
ProxyContextRestorer {
     
     private MetaDataContexts getMetaDataContexts(final ShardingSphereUser 
user) {
         return new MetaDataContexts(mock(MetaDataPersistService.class),
-                new ShardingSphereMetaData(getDatabases(), 
buildGlobalRuleMetaData(user), new ConfigurationProperties(new Properties())), 
new ShardingSphereData());
+                new ShardingSphereMetaData(getDatabases(), 
buildGlobalRuleMetaData(user), new ConfigurationProperties(new Properties())));
     }
     
     private Map<String, ShardingSphereDatabase> getDatabases() {
diff --git 
a/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/authentication/MySQLAuthenticationEngineTest.java
 
b/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/authentication/MySQLAuthenticationEngineTest.java
index 630484486aa..00380ef4907 100644
--- 
a/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/authentication/MySQLAuthenticationEngineTest.java
+++ 
b/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/authentication/MySQLAuthenticationEngineTest.java
@@ -33,7 +33,6 @@ import 
org.apache.shardingsphere.db.protocol.mysql.payload.MySQLPacketPayload;
 import org.apache.shardingsphere.dialect.mysql.vendor.MySQLVendorError;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
 import org.apache.shardingsphere.mode.manager.ContextManager;
@@ -165,7 +164,7 @@ public final class MySQLAuthenticationEngineTest extends 
ProxyContextRestorer {
         Map<String, ShardingSphereDatabase> databases = new LinkedHashMap<>(1, 
1);
         databases.put("sharding_db", mock(ShardingSphereDatabase.class));
         MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class), new 
ShardingSphereMetaData(databases, mock(ShardingSphereRuleMetaData.class),
-                new ConfigurationProperties(new Properties())), new 
ShardingSphereData());
+                new ConfigurationProperties(new Properties())));
         
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
         ProxyContext.init(contextManager);
     }
diff --git 
a/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/authentication/MySQLAuthenticationHandlerTest.java
 
b/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/authentication/MySQLAuthenticationHandlerTest.java
index bc8d5a4d99e..4614b9a200f 100644
--- 
a/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/authentication/MySQLAuthenticationHandlerTest.java
+++ 
b/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/authentication/MySQLAuthenticationHandlerTest.java
@@ -30,7 +30,6 @@ import 
org.apache.shardingsphere.infra.config.algorithm.AlgorithmConfiguration;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.instance.InstanceContext;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
 import org.apache.shardingsphere.infra.metadata.user.ShardingSphereUser;
@@ -139,7 +138,7 @@ public final class MySQLAuthenticationHandlerTest extends 
ProxyContextRestorer {
     
     private MetaDataContexts getMetaDataContexts(final ShardingSphereUser 
user, final boolean isNeedSuper) throws NoSuchFieldException, 
IllegalAccessException {
         return new MetaDataContexts(mock(MetaDataPersistService.class),
-                new ShardingSphereMetaData(getDatabases(), 
buildGlobalRuleMetaData(user, isNeedSuper), new ConfigurationProperties(new 
Properties())), new ShardingSphereData());
+                new ShardingSphereMetaData(getDatabases(), 
buildGlobalRuleMetaData(user, isNeedSuper), new ConfigurationProperties(new 
Properties())));
     }
     
     private Map<String, ShardingSphereDatabase> getDatabases() {
diff --git 
a/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/MySQLCommandExecutorFactoryTest.java
 
b/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/MySQLCommandExecutorFactoryTest.java
index 9f0be2a3b3b..6fec7ff9226 100644
--- 
a/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/MySQLCommandExecutorFactoryTest.java
+++ 
b/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/MySQLCommandExecutorFactoryTest.java
@@ -33,7 +33,6 @@ import 
org.apache.shardingsphere.db.protocol.packet.CommandPacket;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
 import org.apache.shardingsphere.mode.manager.ContextManager;
@@ -92,7 +91,7 @@ public final class MySQLCommandExecutorFactoryTest extends 
ProxyContextRestorer
         databases.put("logic_db", database);
         ContextManager contextManager = mock(ContextManager.class, 
RETURNS_DEEP_STUBS);
         MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class),
-                new ShardingSphereMetaData(databases, 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())), new ShardingSphereData());
+                new ShardingSphereMetaData(databases, 
mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new 
Properties())));
         
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
         ProxyContext.init(contextManager);
     }
diff --git 
a/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutorTest.java
 
b/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutorTest.java
index aed6326f968..c65b0a45140 100644
--- 
a/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutorTest.java
+++ 
b/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutorTest.java
@@ -36,7 +36,6 @@ import 
org.apache.shardingsphere.infra.binder.statement.dml.UpdateStatementConte
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
 import org.apache.shardingsphere.mode.manager.ContextManager;
@@ -113,7 +112,7 @@ public final class MySQLComStmtExecuteExecutorTest extends 
ProxyContextRestorer
         databases.put("logic_db", mockDatabase());
         ShardingSphereRuleMetaData metaData = 
mock(ShardingSphereRuleMetaData.class);
         MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class),
-                new ShardingSphereMetaData(databases, metaData, new 
ConfigurationProperties(new Properties())), new ShardingSphereData());
+                new ShardingSphereMetaData(databases, metaData, new 
ConfigurationProperties(new Properties())));
         ContextManager contextManager = mock(ContextManager.class, 
RETURNS_DEEP_STUBS);
         
when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
         ProxyContext.init(contextManager);
diff --git 
a/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/authentication/OpenGaussAuthenticationEngineTest.java
 
b/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/authentication/OpenGaussAuthenticationEngineTest.java
index 2f5e48629ae..48b9c6aea43 100644
--- 
a/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/authentication/OpenGaussAuthenticationEngineTest.java
+++ 
b/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/authentication/OpenGaussAuthenticationEngineTest.java
@@ -37,7 +37,6 @@ import 
org.apache.shardingsphere.infra.config.algorithm.AlgorithmConfiguration;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.instance.InstanceContext;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
 import org.apache.shardingsphere.infra.metadata.user.ShardingSphereUser;
 import org.apache.shardingsphere.mode.manager.ContextManager;
@@ -170,7 +169,7 @@ public final class OpenGaussAuthenticationEngineTest 
extends ProxyContextRestore
     
     private MetaDataContexts getMetaDataContexts(final ShardingSphereUser 
user) {
         return new MetaDataContexts(mock(MetaDataPersistService.class),
-                new ShardingSphereMetaData(new LinkedHashMap<>(), 
buildGlobalRuleMetaData(user), new ConfigurationProperties(new Properties())), 
new ShardingSphereData());
+                new ShardingSphereMetaData(new LinkedHashMap<>(), 
buildGlobalRuleMetaData(user), new ConfigurationProperties(new Properties())));
     }
     
     private ShardingSphereRuleMetaData buildGlobalRuleMetaData(final 
ShardingSphereUser user) {
diff --git 
a/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/authentication/OpenGaussAuthenticationHandlerTest.java
 
b/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/authentication/OpenGaussAuthenticationHandlerTest.java
index 345003b4c9a..545e6d737e0 100644
--- 
a/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/authentication/OpenGaussAuthenticationHandlerTest.java
+++ 
b/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/authentication/OpenGaussAuthenticationHandlerTest.java
@@ -34,7 +34,6 @@ import 
org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.DefaultDatabase;
 import org.apache.shardingsphere.infra.instance.InstanceContext;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.ShardingSphereResourceMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
@@ -120,7 +119,7 @@ public final class OpenGaussAuthenticationHandlerTest 
extends ProxyContextRestor
     
     private MetaDataContexts getMetaDataContexts(final ShardingSphereUser 
user) {
         return new MetaDataContexts(mock(MetaDataPersistService.class),
-                new ShardingSphereMetaData(getDatabases(), 
buildGlobalRuleMetaData(user), new ConfigurationProperties(new Properties())), 
new ShardingSphereData());
+                new ShardingSphereMetaData(getDatabases(), 
buildGlobalRuleMetaData(user), new ConfigurationProperties(new Properties())));
     }
     
     private ByteBuf createByteBuf(final int initialCapacity, final int 
maxCapacity) {
diff --git 
a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/authentication/PostgreSQLAuthenticationEngineTest.java
 
b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/authentication/PostgreSQLAuthenticationEngineTest.java
index 8ec398a000e..374505eab7e 100644
--- 
a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/authentication/PostgreSQLAuthenticationEngineTest.java
+++ 
b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/authentication/PostgreSQLAuthenticationEngineTest.java
@@ -38,7 +38,6 @@ import 
org.apache.shardingsphere.infra.config.algorithm.AlgorithmConfiguration;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.instance.InstanceContext;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
 import org.apache.shardingsphere.infra.metadata.user.ShardingSphereUser;
 import org.apache.shardingsphere.mode.manager.ContextManager;
@@ -179,7 +178,7 @@ public final class PostgreSQLAuthenticationEngineTest 
extends ProxyContextRestor
     
     private MetaDataContexts getMetaDataContexts(final ShardingSphereUser 
user) {
         return new MetaDataContexts(mock(MetaDataPersistService.class),
-                new ShardingSphereMetaData(new LinkedHashMap<>(), 
buildGlobalRuleMetaData(user), new ConfigurationProperties(new Properties())), 
new ShardingSphereData());
+                new ShardingSphereMetaData(new LinkedHashMap<>(), 
buildGlobalRuleMetaData(user), new ConfigurationProperties(new Properties())));
     }
     
     private ShardingSphereRuleMetaData buildGlobalRuleMetaData(final 
ShardingSphereUser user) {
diff --git 
a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/authentication/PostgreSQLAuthenticationHandlerTest.java
 
b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/authentication/PostgreSQLAuthenticationHandlerTest.java
index 36d16b49fea..c8239ea6abd 100644
--- 
a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/authentication/PostgreSQLAuthenticationHandlerTest.java
+++ 
b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/authentication/PostgreSQLAuthenticationHandlerTest.java
@@ -34,7 +34,6 @@ import 
org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.DefaultDatabase;
 import org.apache.shardingsphere.infra.instance.InstanceContext;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.ShardingSphereResourceMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
@@ -127,7 +126,7 @@ public final class PostgreSQLAuthenticationHandlerTest 
extends ProxyContextResto
     
     private MetaDataContexts getMetaDataContexts(final ShardingSphereUser 
user) {
         return new MetaDataContexts(mock(MetaDataPersistService.class),
-                new ShardingSphereMetaData(getDatabases(), 
buildGlobalRuleMetaData(user), new ConfigurationProperties(new Properties())), 
new ShardingSphereData());
+                new ShardingSphereMetaData(getDatabases(), 
buildGlobalRuleMetaData(user), new ConfigurationProperties(new Properties())));
     }
     
     private ByteBuf createByteBuf(final int initialCapacity, final int 
maxCapacity) {
diff --git 
a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/PostgreSQLCommandExecuteEngineTest.java
 
b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/PostgreSQLCommandExecuteEngineTest.java
index 279378a4512..f47b0e40551 100644
--- 
a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/PostgreSQLCommandExecuteEngineTest.java
+++ 
b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/PostgreSQLCommandExecuteEngineTest.java
@@ -24,7 +24,6 @@ import 
org.apache.shardingsphere.db.protocol.postgresql.packet.generic.PostgreSQ
 import 
org.apache.shardingsphere.db.protocol.postgresql.packet.generic.PostgreSQLReadyForQueryPacket;
 import org.apache.shardingsphere.infra.instance.InstanceContext;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
 import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
@@ -69,7 +68,7 @@ public final class PostgreSQLCommandExecuteEngineTest extends 
ProxyContextRestor
     
     @Before
     public void setUp() {
-        ProxyContext.init(new ContextManager(new 
MetaDataContexts(mock(MetaDataPersistService.class), new 
ShardingSphereMetaData(), new ShardingSphereData()), 
mock(InstanceContext.class)));
+        ProxyContext.init(new ContextManager(new 
MetaDataContexts(mock(MetaDataPersistService.class), new 
ShardingSphereMetaData()), mock(InstanceContext.class)));
         when(channelHandlerContext.channel()).thenReturn(channel);
         when(connectionSession.getTransactionStatus()).thenReturn(new 
TransactionStatus(TransactionType.LOCAL));
     }
diff --git 
a/test/pipeline/src/test/java/org/apache/shardingsphere/data/pipeline/core/util/PipelineContextUtil.java
 
b/test/pipeline/src/test/java/org/apache/shardingsphere/data/pipeline/core/util/PipelineContextUtil.java
index f942fcf65ad..fa683d3bb81 100644
--- 
a/test/pipeline/src/test/java/org/apache/shardingsphere/data/pipeline/core/util/PipelineContextUtil.java
+++ 
b/test/pipeline/src/test/java/org/apache/shardingsphere/data/pipeline/core/util/PipelineContextUtil.java
@@ -41,7 +41,6 @@ import 
org.apache.shardingsphere.data.pipeline.yaml.process.YamlPipelineReadConf
 import 
org.apache.shardingsphere.driver.jdbc.core.datasource.ShardingSphereDataSource;
 import org.apache.shardingsphere.infra.config.mode.ModeConfiguration;
 import org.apache.shardingsphere.infra.database.DefaultDatabase;
-import org.apache.shardingsphere.infra.metadata.data.ShardingSphereData;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.decorator.model.ShardingSphereColumn;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.decorator.model.ShardingSphereTable;
 import org.apache.shardingsphere.mode.manager.ContextManager;
@@ -129,7 +128,7 @@ public final class PipelineContextUtil {
         tables.put("t_order", new ShardingSphereTable("t_order", 
Arrays.asList(new ShardingSphereColumn("order_id", Types.INTEGER, true, false, 
false, true),
                 new ShardingSphereColumn("user_id", Types.VARCHAR, false, 
false, false, true)), Collections.emptyList(), Collections.emptyList()));
         
old.getMetaData().getDatabase(DefaultDatabase.LOGIC_NAME).getSchema(DefaultDatabase.LOGIC_NAME).putAll(tables);
-        return new MetaDataContexts(persistService, old.getMetaData(), new 
ShardingSphereData());
+        return new MetaDataContexts(persistService, old.getMetaData());
     }
     
     /**


Reply via email to