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 51d173e71bb Refactor ShardingSphereStatement.metaData (#31515)
51d173e71bb is described below

commit 51d173e71bb183bba70abda6316442766c6941ea
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Jun 1 13:54:19 2024 +0800

    Refactor ShardingSphereStatement.metaData (#31515)
    
    * Refactor ShardingSphereStatement.metaData
    
    * Refactor ShardingSphereStatement.metaData
---
 .../batch/BatchPreparedStatementExecutor.java      | 14 ++---
 .../jdbc/adapter/AbstractStatementAdapter.java     |  6 +-
 .../statement/ShardingSpherePreparedStatement.java | 68 ++++++++++-----------
 .../core/statement/ShardingSphereStatement.java    | 70 +++++++++++-----------
 .../batch/BatchPreparedStatementExecutorTest.java  |  2 +-
 5 files changed, 80 insertions(+), 80 deletions(-)

diff --git 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/batch/BatchPreparedStatementExecutor.java
 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/batch/BatchPreparedStatementExecutor.java
index 69a63292e8f..4acb9ff047e 100644
--- 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/batch/BatchPreparedStatementExecutor.java
+++ 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/executor/batch/BatchPreparedStatementExecutor.java
@@ -29,9 +29,9 @@ import 
org.apache.shardingsphere.infra.executor.sql.execute.engine.SQLExecutorEx
 import 
org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.JDBCExecutionUnit;
 import 
org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.JDBCExecutor;
 import 
org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.JDBCExecutorCallback;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import org.apache.shardingsphere.infra.metadata.user.Grantee;
 import 
org.apache.shardingsphere.infra.rule.attribute.datanode.DataNodeRuleAttribute;
-import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
 import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
 
 import java.sql.SQLException;
@@ -50,7 +50,7 @@ import java.util.Optional;
  */
 public final class BatchPreparedStatementExecutor {
     
-    private final MetaDataContexts metaDataContexts;
+    private final ShardingSphereMetaData metaData;
     
     private final JDBCExecutor jdbcExecutor;
     
@@ -63,9 +63,9 @@ public final class BatchPreparedStatementExecutor {
     
     private final String databaseName;
     
-    public BatchPreparedStatementExecutor(final MetaDataContexts 
metaDataContexts, final JDBCExecutor jdbcExecutor, final String databaseName, 
final String processId) {
+    public BatchPreparedStatementExecutor(final ShardingSphereMetaData 
metaData, final JDBCExecutor jdbcExecutor, final String databaseName, final 
String processId) {
         this.databaseName = databaseName;
-        this.metaDataContexts = metaDataContexts;
+        this.metaData = metaData;
         this.jdbcExecutor = jdbcExecutor;
         executionGroupContext = new ExecutionGroupContext<>(new 
LinkedList<>(), new ExecutionGroupReportContext(processId, databaseName, new 
Grantee("", "")));
         batchExecutionUnits = new LinkedList<>();
@@ -135,8 +135,8 @@ public final class BatchPreparedStatementExecutor {
      */
     public int[] executeBatch(final SQLStatementContext sqlStatementContext) 
throws SQLException {
         boolean isExceptionThrown = 
SQLExecutorExceptionHandler.isExceptionThrown();
-        JDBCExecutorCallback<int[]> callback = new 
JDBCExecutorCallback<int[]>(metaDataContexts.getMetaData().getDatabase(databaseName).getProtocolType(),
-                
metaDataContexts.getMetaData().getDatabase(databaseName).getResourceMetaData(), 
sqlStatementContext.getSqlStatement(), isExceptionThrown) {
+        JDBCExecutorCallback<int[]> callback = new 
JDBCExecutorCallback<int[]>(metaData.getDatabase(databaseName).getProtocolType(),
+                metaData.getDatabase(databaseName).getResourceMetaData(), 
sqlStatementContext.getSqlStatement(), isExceptionThrown) {
             
             @Override
             protected int[] executeSQL(final String sql, final Statement 
statement, final ConnectionMode connectionMode, final DatabaseType storageType) 
throws SQLException {
@@ -157,7 +157,7 @@ public final class BatchPreparedStatementExecutor {
     }
     
     private boolean isNeedAccumulate(final SQLStatementContext 
sqlStatementContext) {
-        for (DataNodeRuleAttribute each : 
metaDataContexts.getMetaData().getDatabase(databaseName).getRuleMetaData().getAttributes(DataNodeRuleAttribute.class))
 {
+        for (DataNodeRuleAttribute each : 
metaData.getDatabase(databaseName).getRuleMetaData().getAttributes(DataNodeRuleAttribute.class))
 {
             if 
(each.isNeedAccumulate(sqlStatementContext.getTablesContext().getTableNames())) 
{
                 return true;
             }
diff --git 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/adapter/AbstractStatementAdapter.java
 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/adapter/AbstractStatementAdapter.java
index d024fc4a6f4..7f52c2fbf47 100644
--- 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/adapter/AbstractStatementAdapter.java
+++ 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/adapter/AbstractStatementAdapter.java
@@ -26,7 +26,7 @@ import 
org.apache.shardingsphere.driver.jdbc.core.statement.StatementManager;
 import 
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
-import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 
 import java.sql.SQLException;
 import java.sql.SQLFeatureNotSupportedException;
@@ -53,9 +53,9 @@ public abstract class AbstractStatementAdapter extends 
WrapperAdapter implements
     
     private boolean closeOnCompletion;
     
-    protected final void handleExceptionInTransaction(final 
ShardingSphereConnection connection, final MetaDataContexts metaDataContexts) {
+    protected final void handleExceptionInTransaction(final 
ShardingSphereConnection connection, final ShardingSphereMetaData metaData) {
         if 
(connection.getDatabaseConnectionManager().getConnectionTransaction().isInTransaction())
 {
-            DatabaseType databaseType = 
metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getProtocolType();
+            DatabaseType databaseType = 
metaData.getDatabase(connection.getDatabaseName()).getProtocolType();
             DialectDatabaseMetaData dialectDatabaseMetaData = new 
DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData();
             if (dialectDatabaseMetaData.getDefaultSchema().isPresent()) {
                 
connection.getDatabaseConnectionManager().getConnectionContext().getTransactionContext().setExceptionOccur(true);
diff --git 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
index 151ffd1bfc2..0ce53932acc 100644
--- 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
+++ 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
@@ -58,6 +58,7 @@ import org.apache.shardingsphere.infra.hint.HintValueContext;
 import org.apache.shardingsphere.infra.hint.SQLHintUtils;
 import org.apache.shardingsphere.infra.merge.MergeEngine;
 import org.apache.shardingsphere.infra.merge.result.MergedResult;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
 import org.apache.shardingsphere.infra.metadata.user.Grantee;
@@ -66,7 +67,6 @@ import 
org.apache.shardingsphere.infra.route.context.RouteContext;
 import 
org.apache.shardingsphere.infra.rule.attribute.datanode.DataNodeRuleAttribute;
 import 
org.apache.shardingsphere.infra.rule.attribute.resoure.StorageConnectorReusableRuleAttribute;
 import org.apache.shardingsphere.infra.session.query.QueryContext;
-import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
 import org.apache.shardingsphere.parser.rule.SQLParserRule;
 import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.dal.DALStatement;
@@ -96,7 +96,7 @@ public final class ShardingSpherePreparedStatement extends 
AbstractPreparedState
     @Getter
     private final ShardingSphereConnection connection;
     
-    private final MetaDataContexts metaDataContexts;
+    private final ShardingSphereMetaData metaData;
     
     private final String sql;
     
@@ -170,25 +170,25 @@ public final class ShardingSpherePreparedStatement 
extends AbstractPreparedState
             throw new EmptySQLException().toSQLException();
         }
         this.connection = connection;
-        metaDataContexts = 
connection.getContextManager().getMetaDataContexts();
+        metaData = 
connection.getContextManager().getMetaDataContexts().getMetaData();
         hintValueContext = SQLHintUtils.extractHint(sql);
         this.sql = SQLHintUtils.removeHint(sql);
         statements = new ArrayList<>();
         parameterSets = new ArrayList<>();
-        SQLParserRule sqlParserRule = 
metaDataContexts.getMetaData().getGlobalRuleMetaData().getSingleRule(SQLParserRule.class);
-        SQLParserEngine sqlParserEngine = 
sqlParserRule.getSQLParserEngine(metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getProtocolType());
+        SQLParserRule sqlParserRule = 
metaData.getGlobalRuleMetaData().getSingleRule(SQLParserRule.class);
+        SQLParserEngine sqlParserEngine = 
sqlParserRule.getSQLParserEngine(metaData.getDatabase(connection.getDatabaseName()).getProtocolType());
         SQLStatement sqlStatement = sqlParserEngine.parse(this.sql, true);
-        sqlStatementContext = new 
SQLBindEngine(metaDataContexts.getMetaData(), connection.getDatabaseName(), 
hintValueContext).bind(sqlStatement, Collections.emptyList());
+        sqlStatementContext = new SQLBindEngine(metaData, 
connection.getDatabaseName(), hintValueContext).bind(sqlStatement, 
Collections.emptyList());
         databaseName = 
sqlStatementContext.getTablesContext().getDatabaseName().orElse(connection.getDatabaseName());
         
connection.getDatabaseConnectionManager().getConnectionContext().setCurrentDatabase(databaseName);
         parameterMetaData = new ShardingSphereParameterMetaData(sqlStatement);
         statementOption = returnGeneratedKeys ? new StatementOption(true, 
columns) : new StatementOption(resultSetType, resultSetConcurrency, 
resultSetHoldability);
         executor = new DriverExecutor(connection);
         JDBCExecutor jdbcExecutor = new 
JDBCExecutor(connection.getContextManager().getExecutorEngine(), 
connection.getDatabaseConnectionManager().getConnectionContext());
-        batchPreparedStatementExecutor = new 
BatchPreparedStatementExecutor(metaDataContexts, jdbcExecutor, databaseName, 
connection.getProcessId());
+        batchPreparedStatementExecutor = new 
BatchPreparedStatementExecutor(metaData, jdbcExecutor, databaseName, 
connection.getProcessId());
         kernelProcessor = new KernelProcessor();
-        statementsCacheable = 
isStatementsCacheable(metaDataContexts.getMetaData().getDatabase(databaseName).getRuleMetaData());
-        trafficRule = 
metaDataContexts.getMetaData().getGlobalRuleMetaData().getSingleRule(TrafficRule.class);
+        statementsCacheable = 
isStatementsCacheable(metaData.getDatabase(databaseName).getRuleMetaData());
+        trafficRule = 
metaData.getGlobalRuleMetaData().getSingleRule(TrafficRule.class);
         selectContainsEnhancedTable = sqlStatementContext instanceof 
SelectStatementContext && ((SelectStatementContext) 
sqlStatementContext).isContainsEnhancedTable();
         statementManager = new StatementManager();
     }
@@ -207,9 +207,9 @@ public final class ShardingSpherePreparedStatement extends 
AbstractPreparedState
             clearPrevious();
             QueryContext queryContext = createQueryContext();
             
handleAutoCommit(queryContext.getSqlStatementContext().getSqlStatement());
-            ShardingSphereDatabase database = 
metaDataContexts.getMetaData().getDatabase(databaseName);
+            ShardingSphereDatabase database = 
metaData.getDatabase(databaseName);
             findGeneratedKey().ifPresent(optional -> 
generatedValues.addAll(optional.getGeneratedValues()));
-            currentResultSet = 
executor.executeQuery(metaDataContexts.getMetaData(), database, queryContext, 
createDriverExecutionPrepareEngine(database), this, columnLabelAndIndexMap,
+            currentResultSet = executor.executeQuery(metaData, database, 
queryContext, createDriverExecutionPrepareEngine(database), this, 
columnLabelAndIndexMap,
                     (StatementReplayCallback<PreparedStatement>) this::replay);
             if (currentResultSet instanceof ShardingSphereResultSet) {
                 columnLabelAndIndexMap = ((ShardingSphereResultSet) 
currentResultSet).getColumnLabelAndIndexMap();
@@ -222,8 +222,8 @@ public final class ShardingSpherePreparedStatement extends 
AbstractPreparedState
             // CHECKSTYLE:OFF
         } catch (final RuntimeException ex) {
             // CHECKSTYLE:ON
-            handleExceptionInTransaction(connection, metaDataContexts);
-            throw SQLExceptionTransformEngine.toSQLException(ex, 
metaDataContexts.getMetaData().getDatabase(databaseName).getProtocolType());
+            handleExceptionInTransaction(connection, metaData);
+            throw SQLExceptionTransformEngine.toSQLException(ex, 
metaData.getDatabase(databaseName).getProtocolType());
         } finally {
             batchPreparedStatementExecutor.clear();
             clearParameters();
@@ -243,7 +243,7 @@ public final class ShardingSpherePreparedStatement extends 
AbstractPreparedState
     }
     
     private DriverExecutionPrepareEngine<JDBCExecutionUnit, Connection> 
createDriverExecutionPrepareEngine(final ShardingSphereDatabase database) {
-        int maxConnectionsSizePerQuery = 
metaDataContexts.getMetaData().getProps().<Integer>getValue(ConfigurationPropertyKey.MAX_CONNECTIONS_SIZE_PER_QUERY);
+        int maxConnectionsSizePerQuery = 
metaData.getProps().<Integer>getValue(ConfigurationPropertyKey.MAX_CONNECTIONS_SIZE_PER_QUERY);
         return new 
DriverExecutionPrepareEngine<>(JDBCDriverType.PREPARED_STATEMENT, 
maxConnectionsSizePerQuery, connection.getDatabaseConnectionManager(), 
statementManager, statementOption,
                 database.getRuleMetaData().getRules(), 
database.getResourceMetaData().getStorageUnits());
     }
@@ -258,8 +258,8 @@ public final class ShardingSpherePreparedStatement extends 
AbstractPreparedState
             clearPrevious();
             QueryContext queryContext = createQueryContext();
             
handleAutoCommit(queryContext.getSqlStatementContext().getSqlStatement());
-            ShardingSphereDatabase database = 
metaDataContexts.getMetaData().getDatabase(databaseName);
-            final int result = 
executor.executeUpdate(metaDataContexts.getMetaData(), database, queryContext, 
createDriverExecutionPrepareEngine(database),
+            ShardingSphereDatabase database = 
metaData.getDatabase(databaseName);
+            final int result = executor.executeUpdate(metaData, database, 
queryContext, createDriverExecutionPrepareEngine(database),
                     (statement, sql) -> ((PreparedStatement) 
statement).executeUpdate(), null, (StatementReplayCallback<PreparedStatement>) 
this::replay);
             for (Statement each : executor.getStatements()) {
                 statements.add((PreparedStatement) each);
@@ -270,8 +270,8 @@ public final class ShardingSpherePreparedStatement extends 
AbstractPreparedState
             // CHECKSTYLE:OFF
         } catch (final RuntimeException ex) {
             // CHECKSTYLE:ON
-            handleExceptionInTransaction(connection, metaDataContexts);
-            throw SQLExceptionTransformEngine.toSQLException(ex, 
metaDataContexts.getMetaData().getDatabase(databaseName).getProtocolType());
+            handleExceptionInTransaction(connection, metaData);
+            throw SQLExceptionTransformEngine.toSQLException(ex, 
metaData.getDatabase(databaseName).getProtocolType());
         } finally {
             clearBatch();
         }
@@ -287,9 +287,9 @@ public final class ShardingSpherePreparedStatement extends 
AbstractPreparedState
             clearPrevious();
             QueryContext queryContext = createQueryContext();
             
handleAutoCommit(queryContext.getSqlStatementContext().getSqlStatement());
-            ShardingSphereDatabase database = 
metaDataContexts.getMetaData().getDatabase(databaseName);
+            ShardingSphereDatabase database = 
metaData.getDatabase(databaseName);
             final boolean result = executor.executeAdvance(
-                    metaDataContexts.getMetaData(), database, queryContext, 
createDriverExecutionPrepareEngine(database), (statement, sql) -> 
((PreparedStatement) statement).execute(),
+                    metaData, database, queryContext, 
createDriverExecutionPrepareEngine(database), (statement, sql) -> 
((PreparedStatement) statement).execute(),
                     null, (StatementReplayCallback<PreparedStatement>) 
this::replay);
             for (Statement each : executor.getStatements()) {
                 statements.add((PreparedStatement) each);
@@ -300,8 +300,8 @@ public final class ShardingSpherePreparedStatement extends 
AbstractPreparedState
             // CHECKSTYLE:OFF
         } catch (final RuntimeException ex) {
             // CHECKSTYLE:ON
-            handleExceptionInTransaction(connection, metaDataContexts);
-            throw SQLExceptionTransformEngine.toSQLException(ex, 
metaDataContexts.getMetaData().getDatabase(databaseName).getProtocolType());
+            handleExceptionInTransaction(connection, metaData);
+            throw SQLExceptionTransformEngine.toSQLException(ex, 
metaData.getDatabase(databaseName).getProtocolType());
         } finally {
             clearBatch();
         }
@@ -351,11 +351,11 @@ public final class ShardingSpherePreparedStatement 
extends AbstractPreparedState
     }
     
     private ExecutionContext createExecutionContext(final QueryContext 
queryContext) {
-        RuleMetaData globalRuleMetaData = 
metaDataContexts.getMetaData().getGlobalRuleMetaData();
-        ShardingSphereDatabase currentDatabase = 
metaDataContexts.getMetaData().getDatabase(databaseName);
+        RuleMetaData globalRuleMetaData = metaData.getGlobalRuleMetaData();
+        ShardingSphereDatabase currentDatabase = 
metaData.getDatabase(databaseName);
         SQLAuditEngine.audit(queryContext.getSqlStatementContext(), 
queryContext.getParameters(), globalRuleMetaData, currentDatabase, null, 
queryContext.getHintValueContext());
         ExecutionContext result = kernelProcessor.generateExecutionContext(
-                queryContext, currentDatabase, globalRuleMetaData, 
metaDataContexts.getMetaData().getProps(), 
connection.getDatabaseConnectionManager().getConnectionContext());
+                queryContext, currentDatabase, globalRuleMetaData, 
metaData.getProps(), 
connection.getDatabaseConnectionManager().getConnectionContext());
         findGeneratedKey().ifPresent(optional -> 
generatedValues.addAll(optional.getGeneratedValues()));
         return result;
     }
@@ -374,8 +374,8 @@ public final class ShardingSpherePreparedStatement extends 
AbstractPreparedState
     }
     
     private MergedResult mergeQuery(final List<QueryResult> queryResults, 
final SQLStatementContext sqlStatementContext) throws SQLException {
-        MergeEngine mergeEngine = new 
MergeEngine(metaDataContexts.getMetaData().getGlobalRuleMetaData(), 
metaDataContexts.getMetaData().getDatabase(databaseName),
-                metaDataContexts.getMetaData().getProps(), 
connection.getDatabaseConnectionManager().getConnectionContext());
+        MergeEngine mergeEngine = new 
MergeEngine(metaData.getGlobalRuleMetaData(), 
metaData.getDatabase(databaseName),
+                metaData.getProps(), 
connection.getDatabaseConnectionManager().getConnectionContext());
         return mergeEngine.merge(queryResults, sqlStatementContext);
     }
     
@@ -424,7 +424,7 @@ public final class ShardingSpherePreparedStatement extends 
AbstractPreparedState
     }
     
     private String getGeneratedKeysColumnName(final String columnName) {
-        return 
metaDataContexts.getMetaData().getDatabase(databaseName).getProtocolType() 
instanceof MySQLDatabaseType ? "GENERATED_KEY" : columnName;
+        return metaData.getDatabase(databaseName).getProtocolType() instanceof 
MySQLDatabaseType ? "GENERATED_KEY" : columnName;
     }
     
     @Override
@@ -452,8 +452,8 @@ public final class ShardingSpherePreparedStatement extends 
AbstractPreparedState
             // CHECKSTYLE:OFF
         } catch (final RuntimeException ex) {
             // CHECKSTYLE:ON
-            handleExceptionInTransaction(connection, metaDataContexts);
-            throw SQLExceptionTransformEngine.toSQLException(ex, 
metaDataContexts.getMetaData().getDatabase(databaseName).getProtocolType());
+            handleExceptionInTransaction(connection, metaData);
+            throw SQLExceptionTransformEngine.toSQLException(ex, 
metaData.getDatabase(databaseName).getProtocolType());
         } finally {
             clearBatch();
         }
@@ -474,10 +474,10 @@ public final class ShardingSpherePreparedStatement 
extends AbstractPreparedState
     }
     
     private void initBatchPreparedStatementExecutor(final 
BatchPreparedStatementExecutor batchExecutor) throws SQLException {
-        DriverExecutionPrepareEngine<JDBCExecutionUnit, Connection> 
prepareEngine = new 
DriverExecutionPrepareEngine<>(JDBCDriverType.PREPARED_STATEMENT, 
metaDataContexts.getMetaData().getProps()
+        DriverExecutionPrepareEngine<JDBCExecutionUnit, Connection> 
prepareEngine = new 
DriverExecutionPrepareEngine<>(JDBCDriverType.PREPARED_STATEMENT, 
metaData.getProps()
                 
.<Integer>getValue(ConfigurationPropertyKey.MAX_CONNECTIONS_SIZE_PER_QUERY), 
connection.getDatabaseConnectionManager(), statementManager, statementOption,
-                
metaDataContexts.getMetaData().getDatabase(databaseName).getRuleMetaData().getRules(),
-                
metaDataContexts.getMetaData().getDatabase(databaseName).getResourceMetaData().getStorageUnits());
+                
metaData.getDatabase(databaseName).getRuleMetaData().getRules(),
+                
metaData.getDatabase(databaseName).getResourceMetaData().getStorageUnits());
         List<ExecutionUnit> executionUnits = new 
ArrayList<>(batchExecutor.getBatchExecutionUnits().size());
         for (BatchExecutionUnit each : batchExecutor.getBatchExecutionUnits()) 
{
             ExecutionUnit executionUnit = each.getExecutionUnit();
@@ -523,7 +523,7 @@ public final class ShardingSpherePreparedStatement extends 
AbstractPreparedState
     
     @Override
     public boolean isAccumulate() {
-        for (DataNodeRuleAttribute each : 
metaDataContexts.getMetaData().getDatabase(databaseName).getRuleMetaData().getAttributes(DataNodeRuleAttribute.class))
 {
+        for (DataNodeRuleAttribute each : 
metaData.getDatabase(databaseName).getRuleMetaData().getAttributes(DataNodeRuleAttribute.class))
 {
             if 
(each.isNeedAccumulate(sqlStatementContext.getTablesContext().getTableNames())) 
{
                 return true;
             }
diff --git 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
index 6294f9cbe9b..9c63028f24f 100644
--- 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
+++ 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java
@@ -48,10 +48,10 @@ import 
org.apache.shardingsphere.infra.hint.HintValueContext;
 import org.apache.shardingsphere.infra.hint.SQLHintUtils;
 import org.apache.shardingsphere.infra.merge.MergeEngine;
 import org.apache.shardingsphere.infra.merge.result.MergedResult;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.rule.attribute.datanode.DataNodeRuleAttribute;
 import org.apache.shardingsphere.infra.session.query.QueryContext;
-import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
 import org.apache.shardingsphere.parser.rule.SQLParserRule;
 import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.dal.DALStatement;
@@ -78,7 +78,7 @@ public final class ShardingSphereStatement extends 
AbstractStatementAdapter {
     @Getter
     private final ShardingSphereConnection connection;
     
-    private final MetaDataContexts metaDataContexts;
+    private final ShardingSphereMetaData metaData;
     
     private final List<Statement> statements;
     
@@ -110,7 +110,7 @@ public final class ShardingSphereStatement extends 
AbstractStatementAdapter {
     
     public ShardingSphereStatement(final ShardingSphereConnection connection, 
final int resultSetType, final int resultSetConcurrency, final int 
resultSetHoldability) {
         this.connection = connection;
-        metaDataContexts = 
connection.getContextManager().getMetaDataContexts();
+        metaData = 
connection.getContextManager().getMetaDataContexts().getMetaData();
         statements = new LinkedList<>();
         statementOption = new StatementOption(resultSetType, 
resultSetConcurrency, resultSetHoldability);
         executor = new DriverExecutor(connection);
@@ -127,23 +127,23 @@ public final class ShardingSphereStatement extends 
AbstractStatementAdapter {
             
handleAutoCommit(queryContext.getSqlStatementContext().getSqlStatement());
             databaseName = 
queryContext.getDatabaseNameFromSQLStatement().orElse(connection.getDatabaseName());
             
connection.getDatabaseConnectionManager().getConnectionContext().setCurrentDatabase(databaseName);
-            ShardingSphereDatabase database = 
metaDataContexts.getMetaData().getDatabase(databaseName);
+            ShardingSphereDatabase database = 
metaData.getDatabase(databaseName);
             sqlStatementContext = queryContext.getSqlStatementContext();
-            currentResultSet = 
executor.executeQuery(metaDataContexts.getMetaData(), database, queryContext, 
createDriverExecutionPrepareEngine(database), this, null,
+            currentResultSet = executor.executeQuery(metaData, database, 
queryContext, createDriverExecutionPrepareEngine(database), this, null,
                     (StatementReplayCallback<Statement>) (statements, 
parameterSets) -> replay(statements));
             statements.addAll(executor.getStatements());
             return currentResultSet;
             // CHECKSTYLE:OFF
         } catch (final RuntimeException ex) {
             // CHECKSTYLE:ON
-            handleExceptionInTransaction(connection, metaDataContexts);
+            handleExceptionInTransaction(connection, metaData);
             currentResultSet = null;
-            throw SQLExceptionTransformEngine.toSQLException(ex, 
metaDataContexts.getMetaData().getDatabase(databaseName).getProtocolType());
+            throw SQLExceptionTransformEngine.toSQLException(ex, 
metaData.getDatabase(databaseName).getProtocolType());
         }
     }
     
     private DriverExecutionPrepareEngine<JDBCExecutionUnit, Connection> 
createDriverExecutionPrepareEngine(final ShardingSphereDatabase database) {
-        int maxConnectionsSizePerQuery = 
metaDataContexts.getMetaData().getProps().<Integer>getValue(ConfigurationPropertyKey.MAX_CONNECTIONS_SIZE_PER_QUERY);
+        int maxConnectionsSizePerQuery = 
metaData.getProps().<Integer>getValue(ConfigurationPropertyKey.MAX_CONNECTIONS_SIZE_PER_QUERY);
         return new DriverExecutionPrepareEngine<>(JDBCDriverType.STATEMENT, 
maxConnectionsSizePerQuery, connection.getDatabaseConnectionManager(), 
statementManager, statementOption,
                 database.getRuleMetaData().getRules(), 
database.getResourceMetaData().getStorageUnits());
     }
@@ -155,8 +155,8 @@ public final class ShardingSphereStatement extends 
AbstractStatementAdapter {
             // CHECKSTYLE:OFF
         } catch (final RuntimeException ex) {
             // CHECKSTYLE:ON
-            handleExceptionInTransaction(connection, metaDataContexts);
-            throw SQLExceptionTransformEngine.toSQLException(ex, 
metaDataContexts.getMetaData().getDatabase(databaseName).getProtocolType());
+            handleExceptionInTransaction(connection, metaData);
+            throw SQLExceptionTransformEngine.toSQLException(ex, 
metaData.getDatabase(databaseName).getProtocolType());
         } finally {
             currentResultSet = null;
         }
@@ -173,8 +173,8 @@ public final class ShardingSphereStatement extends 
AbstractStatementAdapter {
             // CHECKSTYLE:OFF
         } catch (final RuntimeException ex) {
             // CHECKSTYLE:ON
-            handleExceptionInTransaction(connection, metaDataContexts);
-            throw SQLExceptionTransformEngine.toSQLException(ex, 
metaDataContexts.getMetaData().getDatabase(databaseName).getProtocolType());
+            handleExceptionInTransaction(connection, metaData);
+            throw SQLExceptionTransformEngine.toSQLException(ex, 
metaData.getDatabase(databaseName).getProtocolType());
         } finally {
             currentResultSet = null;
         }
@@ -188,8 +188,8 @@ public final class ShardingSphereStatement extends 
AbstractStatementAdapter {
             // CHECKSTYLE:OFF
         } catch (final RuntimeException ex) {
             // CHECKSTYLE:ON
-            handleExceptionInTransaction(connection, metaDataContexts);
-            throw SQLExceptionTransformEngine.toSQLException(ex, 
metaDataContexts.getMetaData().getDatabase(databaseName).getProtocolType());
+            handleExceptionInTransaction(connection, metaData);
+            throw SQLExceptionTransformEngine.toSQLException(ex, 
metaData.getDatabase(databaseName).getProtocolType());
         } finally {
             currentResultSet = null;
         }
@@ -203,8 +203,8 @@ public final class ShardingSphereStatement extends 
AbstractStatementAdapter {
             // CHECKSTYLE:OFF
         } catch (final RuntimeException ex) {
             // CHECKSTYLE:ON
-            handleExceptionInTransaction(connection, metaDataContexts);
-            throw SQLExceptionTransformEngine.toSQLException(ex, 
metaDataContexts.getMetaData().getDatabase(databaseName).getProtocolType());
+            handleExceptionInTransaction(connection, metaData);
+            throw SQLExceptionTransformEngine.toSQLException(ex, 
metaData.getDatabase(databaseName).getProtocolType());
         } finally {
             currentResultSet = null;
         }
@@ -215,11 +215,11 @@ public final class ShardingSphereStatement extends 
AbstractStatementAdapter {
         
handleAutoCommit(queryContext.getSqlStatementContext().getSqlStatement());
         databaseName = 
queryContext.getDatabaseNameFromSQLStatement().orElse(connection.getDatabaseName());
         
connection.getDatabaseConnectionManager().getConnectionContext().setCurrentDatabase(databaseName);
-        ShardingSphereDatabase database = 
metaDataContexts.getMetaData().getDatabase(databaseName);
+        ShardingSphereDatabase database = metaData.getDatabase(databaseName);
         sqlStatementContext = queryContext.getSqlStatementContext();
         clearStatements();
         int result = executor.executeUpdate(
-                metaDataContexts.getMetaData(), database, queryContext, 
createDriverExecutionPrepareEngine(database), trafficCallback, updateCallback,
+                metaData, database, queryContext, 
createDriverExecutionPrepareEngine(database), trafficCallback, updateCallback,
                 (StatementReplayCallback<Statement>) (statements, 
parameterSets) -> replay(statements));
         statements.addAll(executor.getStatements());
         replay(statements);
@@ -233,8 +233,8 @@ public final class ShardingSphereStatement extends 
AbstractStatementAdapter {
             // CHECKSTYLE:OFF
         } catch (final SQLException ex) {
             // CHECKSTYLE:ON
-            handleExceptionInTransaction(connection, metaDataContexts);
-            throw SQLExceptionTransformEngine.toSQLException(ex, 
metaDataContexts.getMetaData().getDatabase(databaseName).getProtocolType());
+            handleExceptionInTransaction(connection, metaData);
+            throw SQLExceptionTransformEngine.toSQLException(ex, 
metaData.getDatabase(databaseName).getProtocolType());
         }
     }
     
@@ -248,8 +248,8 @@ public final class ShardingSphereStatement extends 
AbstractStatementAdapter {
             // CHECKSTYLE:OFF
         } catch (final SQLException ex) {
             // CHECKSTYLE:ON
-            handleExceptionInTransaction(connection, metaDataContexts);
-            throw SQLExceptionTransformEngine.toSQLException(ex, 
metaDataContexts.getMetaData().getDatabase(databaseName).getProtocolType());
+            handleExceptionInTransaction(connection, metaData);
+            throw SQLExceptionTransformEngine.toSQLException(ex, 
metaData.getDatabase(databaseName).getProtocolType());
         }
     }
     
@@ -261,8 +261,8 @@ public final class ShardingSphereStatement extends 
AbstractStatementAdapter {
             // CHECKSTYLE:OFF
         } catch (final SQLException ex) {
             // CHECKSTYLE:ON
-            handleExceptionInTransaction(connection, metaDataContexts);
-            throw SQLExceptionTransformEngine.toSQLException(ex, 
metaDataContexts.getMetaData().getDatabase(databaseName).getProtocolType());
+            handleExceptionInTransaction(connection, metaData);
+            throw SQLExceptionTransformEngine.toSQLException(ex, 
metaData.getDatabase(databaseName).getProtocolType());
         }
     }
     
@@ -274,8 +274,8 @@ public final class ShardingSphereStatement extends 
AbstractStatementAdapter {
             // CHECKSTYLE:OFF
         } catch (final SQLException ex) {
             // CHECKSTYLE:ON
-            handleExceptionInTransaction(connection, metaDataContexts);
-            throw SQLExceptionTransformEngine.toSQLException(ex, 
metaDataContexts.getMetaData().getDatabase(databaseName).getProtocolType());
+            handleExceptionInTransaction(connection, metaData);
+            throw SQLExceptionTransformEngine.toSQLException(ex, 
metaData.getDatabase(databaseName).getProtocolType());
         }
     }
     
@@ -285,10 +285,10 @@ public final class ShardingSphereStatement extends 
AbstractStatementAdapter {
         
handleAutoCommit(queryContext.getSqlStatementContext().getSqlStatement());
         databaseName = 
queryContext.getDatabaseNameFromSQLStatement().orElse(connection.getDatabaseName());
         
connection.getDatabaseConnectionManager().getConnectionContext().setCurrentDatabase(databaseName);
-        ShardingSphereDatabase database = 
metaDataContexts.getMetaData().getDatabase(databaseName);
+        ShardingSphereDatabase database = metaData.getDatabase(databaseName);
         sqlStatementContext = queryContext.getSqlStatementContext();
         clearStatements();
-        boolean result = 
executor.executeAdvance(metaDataContexts.getMetaData(), database, queryContext, 
createDriverExecutionPrepareEngine(database), trafficCallback,
+        boolean result = executor.executeAdvance(metaData, database, 
queryContext, createDriverExecutionPrepareEngine(database), trafficCallback,
                 executeCallback, (StatementReplayCallback<Statement>) 
(statements, parameterSets) -> replay(statements));
         statements.addAll(executor.getStatements());
         return result;
@@ -324,11 +324,11 @@ public final class ShardingSphereStatement extends 
AbstractStatementAdapter {
     }
     
     private QueryContext createQueryContext(final String originSQL) {
-        SQLParserRule sqlParserRule = 
metaDataContexts.getMetaData().getGlobalRuleMetaData().getSingleRule(SQLParserRule.class);
+        SQLParserRule sqlParserRule = 
metaData.getGlobalRuleMetaData().getSingleRule(SQLParserRule.class);
         String sql = SQLHintUtils.removeHint(originSQL);
         HintValueContext hintValueContext = 
SQLHintUtils.extractHint(originSQL);
-        SQLStatement sqlStatement = 
sqlParserRule.getSQLParserEngine(metaDataContexts.getMetaData().getDatabase(databaseName).getProtocolType()).parse(sql,
 false);
-        SQLStatementContext sqlStatementContext = new 
SQLBindEngine(metaDataContexts.getMetaData(), databaseName, 
hintValueContext).bind(sqlStatement, Collections.emptyList());
+        SQLStatement sqlStatement = 
sqlParserRule.getSQLParserEngine(metaData.getDatabase(databaseName).getProtocolType()).parse(sql,
 false);
+        SQLStatementContext sqlStatementContext = new SQLBindEngine(metaData, 
databaseName, hintValueContext).bind(sqlStatement, Collections.emptyList());
         return new QueryContext(sqlStatementContext, sql, 
Collections.emptyList(), hintValueContext);
     }
     
@@ -380,8 +380,8 @@ public final class ShardingSphereStatement extends 
AbstractStatementAdapter {
     }
     
     private MergedResult mergeQuery(final List<QueryResult> queryResults, 
final SQLStatementContext sqlStatementContext) throws SQLException {
-        MergeEngine mergeEngine = new 
MergeEngine(metaDataContexts.getMetaData().getGlobalRuleMetaData(), 
metaDataContexts.getMetaData().getDatabase(databaseName),
-                metaDataContexts.getMetaData().getProps(), 
connection.getDatabaseConnectionManager().getConnectionContext());
+        MergeEngine mergeEngine = new 
MergeEngine(metaData.getGlobalRuleMetaData(), 
metaData.getDatabase(databaseName),
+                metaData.getProps(), 
connection.getDatabaseConnectionManager().getConnectionContext());
         return mergeEngine.merge(queryResults, sqlStatementContext);
     }
     
@@ -404,7 +404,7 @@ public final class ShardingSphereStatement extends 
AbstractStatementAdapter {
     
     @Override
     public boolean isAccumulate() {
-        for (DataNodeRuleAttribute each : 
metaDataContexts.getMetaData().getDatabase(databaseName).getRuleMetaData().getAttributes(DataNodeRuleAttribute.class))
 {
+        for (DataNodeRuleAttribute each : 
metaData.getDatabase(databaseName).getRuleMetaData().getAttributes(DataNodeRuleAttribute.class))
 {
             if 
(each.isNeedAccumulate(sqlStatementContext.getTablesContext().getTableNames())) 
{
                 return true;
             }
@@ -439,6 +439,6 @@ public final class ShardingSphereStatement extends 
AbstractStatementAdapter {
     }
     
     private String getGeneratedKeysColumnName(final String columnName) {
-        return 
metaDataContexts.getMetaData().getDatabase(databaseName).getProtocolType() 
instanceof MySQLDatabaseType ? "GENERATED_KEY" : columnName;
+        return metaData.getDatabase(databaseName).getProtocolType() instanceof 
MySQLDatabaseType ? "GENERATED_KEY" : columnName;
     }
 }
diff --git 
a/jdbc/src/test/java/org/apache/shardingsphere/driver/executor/batch/BatchPreparedStatementExecutorTest.java
 
b/jdbc/src/test/java/org/apache/shardingsphere/driver/executor/batch/BatchPreparedStatementExecutorTest.java
index a02c891ee8f..25c08606201 100644
--- 
a/jdbc/src/test/java/org/apache/shardingsphere/driver/executor/batch/BatchPreparedStatementExecutorTest.java
+++ 
b/jdbc/src/test/java/org/apache/shardingsphere/driver/executor/batch/BatchPreparedStatementExecutorTest.java
@@ -92,7 +92,7 @@ class BatchPreparedStatementExecutorTest {
         SQLExecutorExceptionHandler.setExceptionThrown(true);
         ShardingSphereConnection connection = new 
ShardingSphereConnection("foo_db", mockContextManager());
         String processId = new UUID(ThreadLocalRandom.current().nextLong(), 
ThreadLocalRandom.current().nextLong()).toString().replace("-", "");
-        executor = new 
BatchPreparedStatementExecutor(connection.getContextManager().getMetaDataContexts(),
+        executor = new 
BatchPreparedStatementExecutor(connection.getContextManager().getMetaDataContexts().getMetaData(),
                 new JDBCExecutor(executorEngine, 
connection.getDatabaseConnectionManager().getConnectionContext()), "foo_db", 
processId);
         
when(sqlStatementContext.getTablesContext()).thenReturn(mock(TablesContext.class));
     }


Reply via email to