This is an automated email from the ASF dual-hosted git repository.

sunnianjun 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 b9c89de4733 Remove TableAvailable.getSimpleTables() (#31623)
b9c89de4733 is described below

commit b9c89de4733f5a584eb9bce4cae4fca55fa048bd
Author: Liang Zhang <[email protected]>
AuthorDate: Fri Jun 7 17:34:17 2024 +0800

    Remove TableAvailable.getSimpleTables() (#31623)
    
    * Remove TableAvailable.getSimpleTables()
    
    * Remove TableAvailable.getSimpleTables()
---
 .../broadcast/route/BroadcastSQLRouter.java        |  5 ++--
 .../route/engine/BroadcastRouteEngineFactory.java  |  7 +++---
 .../dal/show/EncryptShowColumnsMergedResult.java   |  4 ++--
 .../show/EncryptShowCreateTableMergedResult.java   |  4 ++--
 .../EncryptAssignmentParameterRewriter.java        |  2 +-
 .../generator/EncryptAssignmentTokenGenerator.java |  2 +-
 .../generator/EncryptProjectionTokenGenerator.java |  2 +-
 .../merge/dal/EncryptDALResultDecoratorTest.java   | 13 ++++++-----
 ...ecoratedEncryptShowColumnsMergedResultTest.java |  5 ++--
 ...atedEncryptShowCreateTableMergedResultTest.java |  5 ++--
 .../MergedEncryptShowColumnsMergedResultTest.java  |  5 ++--
 ...rgedEncryptShowCreateTableMergedResultTest.java |  5 ++--
 .../token/EncryptTokenGenerateBuilderTest.java     |  2 +-
 .../EncryptAssignmentTokenGeneratorTest.java       |  4 ++--
 .../dml/AbstractShadowDMLStatementRouteEngine.java |  2 +-
 .../dql/groupby/GroupByMemoryMergedResult.java     |  2 +-
 .../sharding/merge/dql/orderby/OrderByValue.java   |  2 +-
 .../ShardingSQLRewriteContextDecorator.java        |  2 +-
 .../generator/impl/OrderByTokenGenerator.java      |  2 +-
 .../token/generator/impl/TableTokenGenerator.java  |  2 +-
 .../engine/type/ShardingRouteEngineFactory.java    |  5 ++--
 .../impl/ShardingAlterTableStatementValidator.java |  2 +-
 .../ShardingRenameTableStatementValidator.java     |  2 +-
 .../token/generator/TableTokenGeneratorTest.java   |  4 ++--
 .../type/ShardingRouteEngineFactoryTest.java       |  4 ++--
 .../context/segment/table/TablesContext.java       |  2 +-
 .../dal/AnalyzeTableStatementContext.java          |  8 -------
 .../statement/dal/ExplainStatementContext.java     |  5 ----
 .../statement/dal/FlushStatementContext.java       | 10 +-------
 .../dal/OptimizeTableStatementContext.java         | 10 +-------
 .../statement/dal/ShowColumnsStatementContext.java |  7 ------
 .../dal/ShowCreateTableStatementContext.java       | 11 +--------
 .../statement/dal/ShowIndexStatementContext.java   |  9 +-------
 .../statement/dcl/DenyUserStatementContext.java    |  9 --------
 .../statement/dcl/GrantStatementContext.java       |  8 -------
 .../statement/dcl/RevokeStatementContext.java      |  8 -------
 .../statement/ddl/AlterIndexStatementContext.java  |  7 ------
 .../statement/ddl/AlterTableStatementContext.java  | 27 +++++++++++-----------
 .../statement/ddl/AlterViewStatementContext.java   |  5 ----
 .../statement/ddl/CommentStatementContext.java     |  7 ------
 .../statement/ddl/CreateIndexStatementContext.java |  8 +------
 .../statement/ddl/CreateTableStatementContext.java | 21 ++++++++---------
 .../statement/ddl/CreateViewStatementContext.java  |  8 -------
 .../statement/ddl/CursorStatementContext.java      |  5 ----
 .../statement/ddl/DropIndexStatementContext.java   |  7 ------
 .../statement/ddl/DropTableStatementContext.java   |  8 -------
 .../statement/ddl/DropViewStatementContext.java    |  8 -------
 .../statement/ddl/PrepareStatementContext.java     | 15 ++++--------
 .../statement/ddl/RenameTableStatementContext.java | 18 +++++++--------
 .../statement/ddl/TruncateStatementContext.java    |  8 -------
 .../statement/dml/CopyStatementContext.java        |  8 -------
 .../statement/dml/DeleteStatementContext.java      |  5 ----
 .../statement/dml/InsertStatementContext.java      |  5 ----
 .../statement/dml/LoadDataStatementContext.java    |  8 -------
 .../statement/dml/LoadXMLStatementContext.java     |  8 -------
 .../statement/dml/SelectStatementContext.java      |  6 -----
 .../statement/dml/UpdateStatementContext.java      |  5 ----
 .../infra/binder/context/type/TableAvailable.java  | 10 --------
 .../dal/AnalyzeTableStatementContextTest.java      |  2 +-
 .../statement/dal/ExplainStatementContextTest.java |  2 +-
 .../dal/OptimizeTableStatementContextTest.java     |  3 ++-
 .../dal/ShowColumnsStatementContextTest.java       |  3 ++-
 .../dal/ShowCreateTableStatementContextTest.java   |  3 ++-
 .../dal/ShowIndexStatementContextTest.java         |  3 ++-
 .../dcl/DenyUserStatementContextTest.java          |  3 ++-
 .../statement/dcl/GrantStatementContextTest.java   |  2 +-
 .../statement/dcl/RevokeStatementContextTest.java  |  2 +-
 .../ddl/AlterIndexStatementContextTest.java        |  2 +-
 .../ddl/AlterTableStatementContextTest.java        |  2 +-
 .../ddl/AlterViewStatementContextTest.java         |  2 +-
 .../ddl/CreateIndexStatementContextTest.java       |  2 +-
 .../ddl/CreateTableStatementContextTest.java       |  2 --
 .../ddl/DropIndexStatementContextTest.java         |  2 +-
 .../ddl/DropTableStatementContextTest.java         |  2 --
 .../statement/ddl/PrepareStatementContextTest.java |  2 +-
 .../ddl/TruncateStatementContextTest.java          |  2 +-
 .../statement/dml/DeleteStatementContextTest.java  |  2 +-
 .../statement/dml/InsertStatementContextTest.java  |  4 ++--
 .../statement/dml/SelectStatementContextTest.java  |  2 +-
 .../statement/dml/UpdateStatementContextTest.java  |  3 ++-
 .../generator/generic/RemoveTokenGenerator.java    |  2 +-
 .../metadata/generator/PipelineDDLGenerator.java   |  2 +-
 .../proxy/backend/connector/ProxySQLExecutor.java  |  4 ++--
 .../type/HBaseRegionReloadOperationConverter.java  |  3 +--
 84 files changed, 125 insertions(+), 326 deletions(-)

diff --git 
a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/route/BroadcastSQLRouter.java
 
b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/route/BroadcastSQLRouter.java
index 1326f388f5d..1317360ebf3 100644
--- 
a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/route/BroadcastSQLRouter.java
+++ 
b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/route/BroadcastSQLRouter.java
@@ -121,7 +121,7 @@ public final class BroadcastSQLRouter implements 
SQLRouter<BroadcastRule> {
     }
     
     private Collection<String> getTableNames(final TableAvailable 
sqlStatementContext) {
-        Collection<SimpleTableSegment> tableSegments = 
sqlStatementContext.getSimpleTables();
+        Collection<SimpleTableSegment> tableSegments = 
sqlStatementContext.getTablesContext().getSimpleTables();
         Collection<String> result = new LinkedHashSet<>(tableSegments.size());
         for (SimpleTableSegment each : tableSegments) {
             result.add(each.getTableName().getIdentifier().getValue());
@@ -146,7 +146,8 @@ public final class BroadcastSQLRouter implements 
SQLRouter<BroadcastRule> {
     private boolean isDCLForSingleTable(final SQLStatementContext 
sqlStatementContext) {
         if (sqlStatementContext instanceof TableAvailable) {
             TableAvailable tableSegmentsAvailable = (TableAvailable) 
sqlStatementContext;
-            return 1 == tableSegmentsAvailable.getSimpleTables().size() && 
!"*".equals(tableSegmentsAvailable.getSimpleTables().iterator().next().getTableName().getIdentifier().getValue());
+            return 1 == 
tableSegmentsAvailable.getTablesContext().getSimpleTables().size()
+                    && 
!"*".equals(tableSegmentsAvailable.getTablesContext().getSimpleTables().iterator().next().getTableName().getIdentifier().getValue());
         }
         return false;
     }
diff --git 
a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/route/engine/BroadcastRouteEngineFactory.java
 
b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/route/engine/BroadcastRouteEngineFactory.java
index 242b78f0873..b69fca1a68d 100644
--- 
a/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/route/engine/BroadcastRouteEngineFactory.java
+++ 
b/features/broadcast/core/src/main/java/org/apache/shardingsphere/broadcast/route/engine/BroadcastRouteEngineFactory.java
@@ -92,7 +92,7 @@ public final class BroadcastRouteEngineFactory {
             return new BroadcastDatabaseBroadcastRoutingEngine();
         }
         Collection<String> tableNames = sqlStatementContext instanceof 
TableAvailable
-                ? ((TableAvailable) 
sqlStatementContext).getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toSet())
+                ? ((TableAvailable) 
sqlStatementContext).getTablesContext().getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toSet())
                 : sqlStatementContext.getTablesContext().getTableNames();
         if (broadcastRule.isAllBroadcastTables(tableNames)) {
             return new BroadcastUnicastRoutingEngine(sqlStatementContext, 
tableNames, connectionContext);
@@ -111,7 +111,7 @@ public final class BroadcastRouteEngineFactory {
     
     private static Collection<String> getTableNames(final 
ShardingSphereDatabase database, final SQLStatementContext sqlStatementContext) 
{
         Collection<String> tableNames = sqlStatementContext instanceof 
TableAvailable
-                ? ((TableAvailable) 
sqlStatementContext).getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toSet())
+                ? ((TableAvailable) 
sqlStatementContext).getTablesContext().getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toSet())
                 : sqlStatementContext.getTablesContext().getTableNames();
         if (!tableNames.isEmpty()) {
             return tableNames;
@@ -155,7 +155,8 @@ public final class BroadcastRouteEngineFactory {
     private static boolean isDCLForSingleTable(final SQLStatementContext 
sqlStatementContext) {
         if (sqlStatementContext instanceof TableAvailable) {
             TableAvailable tableSegmentsAvailable = (TableAvailable) 
sqlStatementContext;
-            return 1 == tableSegmentsAvailable.getSimpleTables().size() && 
!"*".equals(tableSegmentsAvailable.getSimpleTables().iterator().next().getTableName().getIdentifier().getValue());
+            return 1 == 
tableSegmentsAvailable.getTablesContext().getSimpleTables().size()
+                    && 
!"*".equals(tableSegmentsAvailable.getTablesContext().getSimpleTables().iterator().next().getTableName().getIdentifier().getValue());
         }
         return false;
     }
diff --git 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowColumnsMergedResult.java
 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowColumnsMergedResult.java
index f56c4780753..0710f9fc0df 100644
--- 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowColumnsMergedResult.java
+++ 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowColumnsMergedResult.java
@@ -44,9 +44,9 @@ public abstract class EncryptShowColumnsMergedResult 
implements MergedResult {
     private final EncryptRule encryptRule;
     
     protected EncryptShowColumnsMergedResult(final SQLStatementContext 
sqlStatementContext, final EncryptRule encryptRule) {
-        ShardingSpherePreconditions.checkState(sqlStatementContext instanceof 
TableAvailable && 1 == ((TableAvailable) 
sqlStatementContext).getSimpleTables().size(),
+        ShardingSpherePreconditions.checkState(sqlStatementContext instanceof 
TableAvailable && 1 == ((TableAvailable) 
sqlStatementContext).getTablesContext().getSimpleTables().size(),
                 () -> new UnsupportedEncryptSQLException("SHOW COLUMNS FOR 
MULTI TABLE"));
-        tableName = ((TableAvailable) 
sqlStatementContext).getSimpleTables().iterator().next().getTableName().getIdentifier().getValue();
+        tableName = ((TableAvailable) 
sqlStatementContext).getTablesContext().getSimpleTables().iterator().next().getTableName().getIdentifier().getValue();
         this.encryptRule = encryptRule;
     }
     
diff --git 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowCreateTableMergedResult.java
 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowCreateTableMergedResult.java
index f6f215f3f38..3a1817a4ac2 100644
--- 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowCreateTableMergedResult.java
+++ 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowCreateTableMergedResult.java
@@ -56,9 +56,9 @@ public abstract class EncryptShowCreateTableMergedResult 
implements MergedResult
     private final SQLParserEngine sqlParserEngine;
     
     protected EncryptShowCreateTableMergedResult(final RuleMetaData 
globalRuleMetaData, final SQLStatementContext sqlStatementContext, final 
EncryptRule encryptRule) {
-        ShardingSpherePreconditions.checkState(sqlStatementContext instanceof 
TableAvailable && 1 == ((TableAvailable) 
sqlStatementContext).getSimpleTables().size(),
+        ShardingSpherePreconditions.checkState(sqlStatementContext instanceof 
TableAvailable && 1 == ((TableAvailable) 
sqlStatementContext).getTablesContext().getSimpleTables().size(),
                 () -> new UnsupportedEncryptSQLException("SHOW CREATE TABLE 
FOR MULTI TABLE"));
-        tableName = ((TableAvailable) 
sqlStatementContext).getSimpleTables().iterator().next().getTableName().getIdentifier().getValue();
+        tableName = ((TableAvailable) 
sqlStatementContext).getTablesContext().getSimpleTables().iterator().next().getTableName().getIdentifier().getValue();
         this.encryptRule = encryptRule;
         sqlParserEngine = 
globalRuleMetaData.getSingleRule(SQLParserRule.class).getSQLParserEngine(sqlStatementContext.getDatabaseType());
     }
diff --git 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/parameter/rewriter/EncryptAssignmentParameterRewriter.java
 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/parameter/rewriter/EncryptAssignmentParameterRewriter.java
index d12fd5149ad..fdf3d48d863 100644
--- 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/parameter/rewriter/EncryptAssignmentParameterRewriter.java
+++ 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/parameter/rewriter/EncryptAssignmentParameterRewriter.java
@@ -69,7 +69,7 @@ public final class EncryptAssignmentParameterRewriter 
implements ParameterRewrit
     
     @Override
     public void rewrite(final ParameterBuilder paramBuilder, final 
SQLStatementContext sqlStatementContext, final List<Object> params) {
-        String tableName = ((TableAvailable) 
sqlStatementContext).getSimpleTables().iterator().next().getTableName().getIdentifier().getValue();
+        String tableName = ((TableAvailable) 
sqlStatementContext).getTablesContext().getSimpleTables().iterator().next().getTableName().getIdentifier().getValue();
         String schemaName = 
sqlStatementContext.getTablesContext().getSchemaName().orElseGet(() -> new 
DatabaseTypeRegistry(sqlStatementContext.getDatabaseType()).getDefaultSchemaName(databaseName));
         for (ColumnAssignmentSegment each : 
getSetAssignmentSegment(sqlStatementContext.getSqlStatement()).getAssignments())
 {
             String columnName = 
each.getColumns().get(0).getIdentifier().getValue();
diff --git 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptAssignmentTokenGenerator.java
 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptAssignmentTokenGenerator.java
index 973b4ee2dc8..0dfe57627b9 100644
--- 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptAssignmentTokenGenerator.java
+++ 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptAssignmentTokenGenerator.java
@@ -67,7 +67,7 @@ public final class EncryptAssignmentTokenGenerator implements 
CollectionSQLToken
     @Override
     public Collection<SQLToken> generateSQLTokens(final SQLStatementContext 
sqlStatementContext) {
         Collection<SQLToken> result = new LinkedList<>();
-        String tableName = ((TableAvailable) 
sqlStatementContext).getSimpleTables().iterator().next().getTableName().getIdentifier().getValue();
+        String tableName = ((TableAvailable) 
sqlStatementContext).getTablesContext().getSimpleTables().iterator().next().getTableName().getIdentifier().getValue();
         EncryptTable encryptTable = encryptRule.getEncryptTable(tableName);
         String schemaName = 
sqlStatementContext.getTablesContext().getSchemaName().orElseGet(() -> new 
DatabaseTypeRegistry(sqlStatementContext.getDatabaseType()).getDefaultSchemaName(databaseName));
         for (ColumnAssignmentSegment each : 
getSetAssignmentSegment(sqlStatementContext.getSqlStatement()).getAssignments())
 {
diff --git 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptProjectionTokenGenerator.java
 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptProjectionTokenGenerator.java
index f48ed7bb72e..09d310261f1 100644
--- 
a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptProjectionTokenGenerator.java
+++ 
b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptProjectionTokenGenerator.java
@@ -68,7 +68,7 @@ public final class EncryptProjectionTokenGenerator implements 
CollectionSQLToken
     
     @Override
     public boolean isGenerateSQLToken(final SQLStatementContext 
sqlStatementContext) {
-        return sqlStatementContext instanceof SelectStatementContext && 
!((SelectStatementContext) sqlStatementContext).getSimpleTables().isEmpty()
+        return sqlStatementContext instanceof SelectStatementContext && 
!sqlStatementContext.getTablesContext().getSimpleTables().isEmpty()
                 || sqlStatementContext instanceof InsertStatementContext && 
null != ((InsertStatementContext) sqlStatementContext).getInsertSelectContext();
     }
     
diff --git 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/EncryptDALResultDecoratorTest.java
 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/EncryptDALResultDecoratorTest.java
index 0bf70ae35f3..050beb15831 100644
--- 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/EncryptDALResultDecoratorTest.java
+++ 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/EncryptDALResultDecoratorTest.java
@@ -48,6 +48,7 @@ import java.util.Collections;
 
 import static org.hamcrest.CoreMatchers.instanceOf;
 import static org.hamcrest.MatcherAssert.assertThat;
+import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -97,26 +98,26 @@ class EncryptDALResultDecoratorTest {
     }
     
     private SQLStatementContext getDescribeStatementContext() {
-        ExplainStatementContext result = mock(ExplainStatementContext.class);
+        ExplainStatementContext result = mock(ExplainStatementContext.class, 
RETURNS_DEEP_STUBS);
         SimpleTableSegment simpleTableSegment = getSimpleTableSegment();
-        
when(result.getSimpleTables()).thenReturn(Collections.singleton(simpleTableSegment));
+        
when(result.getTablesContext().getSimpleTables()).thenReturn(Collections.singleton(simpleTableSegment));
         
when(result.getSqlStatement()).thenReturn(mock(MySQLExplainStatement.class));
         return result;
     }
     
     private SQLStatementContext getShowColumnsStatementContext() {
-        ShowColumnsStatementContext result = 
mock(ShowColumnsStatementContext.class);
+        ShowColumnsStatementContext result = 
mock(ShowColumnsStatementContext.class, RETURNS_DEEP_STUBS);
         SimpleTableSegment simpleTableSegment = getSimpleTableSegment();
-        
when(result.getSimpleTables()).thenReturn(Collections.singleton(simpleTableSegment));
+        
when(result.getTablesContext().getSimpleTables()).thenReturn(Collections.singleton(simpleTableSegment));
         
when(result.getSqlStatement()).thenReturn(mock(MySQLShowColumnsStatement.class));
         return result;
     }
     
     private SQLStatementContext getShowCreateTableStatementContext() {
-        ShowCreateTableStatementContext result = 
mock(ShowCreateTableStatementContext.class);
+        ShowCreateTableStatementContext result = 
mock(ShowCreateTableStatementContext.class, RETURNS_DEEP_STUBS);
         when(result.getDatabaseType()).thenReturn(databaseType);
         SimpleTableSegment simpleTableSegment = getSimpleTableSegment();
-        
when(result.getSimpleTables()).thenReturn(Collections.singleton(simpleTableSegment));
+        
when(result.getTablesContext().getSimpleTables()).thenReturn(Collections.singleton(simpleTableSegment));
         when(result.getSqlStatement()).thenReturn(new 
MySQLShowCreateTableStatement());
         return result;
     }
diff --git 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/DecoratedEncryptShowColumnsMergedResultTest.java
 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/DecoratedEncryptShowColumnsMergedResultTest.java
index eabe33c9d6b..c3dd063dc9a 100644
--- 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/DecoratedEncryptShowColumnsMergedResultTest.java
+++ 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/DecoratedEncryptShowColumnsMergedResultTest.java
@@ -43,6 +43,7 @@ import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -134,8 +135,8 @@ class DecoratedEncryptShowColumnsMergedResultTest {
     }
     
     private DecoratedEncryptShowColumnsMergedResult 
createDecoratedEncryptShowColumnsMergedResult(final MergedResult mergedResult, 
final EncryptRule encryptRule) {
-        ShowColumnsStatementContext showColumnsStatementContext = 
mock(ShowColumnsStatementContext.class);
-        
when(showColumnsStatementContext.getSimpleTables()).thenReturn(Collections.singleton(new
 SimpleTableSegment(new TableNameSegment(0, 0, new 
IdentifierValue("t_encrypt")))));
+        ShowColumnsStatementContext showColumnsStatementContext = 
mock(ShowColumnsStatementContext.class, RETURNS_DEEP_STUBS);
+        
when(showColumnsStatementContext.getTablesContext().getSimpleTables()).thenReturn(Collections.singleton(new
 SimpleTableSegment(new TableNameSegment(0, 0, new 
IdentifierValue("t_encrypt")))));
         return new DecoratedEncryptShowColumnsMergedResult(mergedResult, 
showColumnsStatementContext, encryptRule);
     }
 }
diff --git 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/DecoratedEncryptShowCreateTableMergedResultTest.java
 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/DecoratedEncryptShowCreateTableMergedResultTest.java
index 9f07a946d28..5d6335c9af3 100644
--- 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/DecoratedEncryptShowCreateTableMergedResultTest.java
+++ 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/DecoratedEncryptShowCreateTableMergedResultTest.java
@@ -48,6 +48,7 @@ import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -141,11 +142,11 @@ class DecoratedEncryptShowCreateTableMergedResultTest {
     }
     
     private DecoratedEncryptShowCreateTableMergedResult 
createDecoratedEncryptShowCreateTableMergedResult(final MergedResult 
mergedResult, final EncryptRule encryptRule) {
-        ShowCreateTableStatementContext sqlStatementContext = 
mock(ShowCreateTableStatementContext.class);
+        ShowCreateTableStatementContext sqlStatementContext = 
mock(ShowCreateTableStatementContext.class, RETURNS_DEEP_STUBS);
         IdentifierValue identifierValue = new IdentifierValue("t_encrypt");
         TableNameSegment tableNameSegment = new TableNameSegment(1, 4, 
identifierValue);
         SimpleTableSegment simpleTableSegment = new 
SimpleTableSegment(tableNameSegment);
-        
when(sqlStatementContext.getSimpleTables()).thenReturn(Collections.singleton(simpleTableSegment));
+        
when(sqlStatementContext.getTablesContext().getSimpleTables()).thenReturn(Collections.singleton(simpleTableSegment));
         
when(sqlStatementContext.getDatabaseType()).thenReturn(TypedSPILoader.getService(DatabaseType.class,
 "MySQL"));
         RuleMetaData ruleMetaData = mock(RuleMetaData.class);
         when(ruleMetaData.getSingleRule(SQLParserRule.class)).thenReturn(new 
SQLParserRule(new SQLParserRuleConfiguration(new CacheOption(128, 1024L), new 
CacheOption(2000, 65535L))));
diff --git 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/MergedEncryptShowColumnsMergedResultTest.java
 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/MergedEncryptShowColumnsMergedResultTest.java
index 24c0efeaf36..ddcdc155030 100644
--- 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/MergedEncryptShowColumnsMergedResultTest.java
+++ 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/MergedEncryptShowColumnsMergedResultTest.java
@@ -43,6 +43,7 @@ import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -134,8 +135,8 @@ class MergedEncryptShowColumnsMergedResultTest {
     }
     
     private MergedEncryptShowColumnsMergedResult 
createMergedEncryptColumnsMergedResult(final QueryResult queryResult, final 
EncryptRule encryptRule) {
-        SelectStatementContext sqlStatementContext = 
mock(SelectStatementContext.class);
-        
when(sqlStatementContext.getSimpleTables()).thenReturn(Collections.singleton(new
 SimpleTableSegment(new TableNameSegment(0, 0, new 
IdentifierValue("t_encrypt")))));
+        SelectStatementContext sqlStatementContext = 
mock(SelectStatementContext.class, RETURNS_DEEP_STUBS);
+        
when(sqlStatementContext.getTablesContext().getSimpleTables()).thenReturn(Collections.singleton(new
 SimpleTableSegment(new TableNameSegment(0, 0, new 
IdentifierValue("t_encrypt")))));
         return new MergedEncryptShowColumnsMergedResult(queryResult, 
sqlStatementContext, encryptRule);
     }
 }
diff --git 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/MergedEncryptShowCreateTableMergedResultTest.java
 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/MergedEncryptShowCreateTableMergedResultTest.java
index 025dc2f28d7..65cbb9d7144 100644
--- 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/MergedEncryptShowCreateTableMergedResultTest.java
+++ 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/merge/dal/show/MergedEncryptShowCreateTableMergedResultTest.java
@@ -47,6 +47,7 @@ import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -122,11 +123,11 @@ class MergedEncryptShowCreateTableMergedResultTest {
     }
     
     private MergedEncryptShowCreateTableMergedResult 
createMergedEncryptShowCreateTableMergedResult(final QueryResult queryResult, 
final EncryptRule encryptRule) {
-        ShowCreateTableStatementContext sqlStatementContext = 
mock(ShowCreateTableStatementContext.class);
+        ShowCreateTableStatementContext sqlStatementContext = 
mock(ShowCreateTableStatementContext.class, RETURNS_DEEP_STUBS);
         IdentifierValue identifierValue = new IdentifierValue("t_encrypt");
         TableNameSegment tableNameSegment = new TableNameSegment(1, 4, 
identifierValue);
         SimpleTableSegment simpleTableSegment = new 
SimpleTableSegment(tableNameSegment);
-        
when(sqlStatementContext.getSimpleTables()).thenReturn(Collections.singleton(simpleTableSegment));
+        
when(sqlStatementContext.getTablesContext().getSimpleTables()).thenReturn(Collections.singleton(simpleTableSegment));
         
when(sqlStatementContext.getDatabaseType()).thenReturn(TypedSPILoader.getService(DatabaseType.class,
 "MySQL"));
         RuleMetaData ruleMetaData = mock(RuleMetaData.class);
         when(ruleMetaData.getSingleRule(SQLParserRule.class)).thenReturn(new 
SQLParserRule(new SQLParserRuleConfiguration(new CacheOption(128, 1024L), new 
CacheOption(2000, 65535L))));
diff --git 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/EncryptTokenGenerateBuilderTest.java
 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/EncryptTokenGenerateBuilderTest.java
index c5ef7bd9ba5..8cd5ce07215 100644
--- 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/EncryptTokenGenerateBuilderTest.java
+++ 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/EncryptTokenGenerateBuilderTest.java
@@ -54,7 +54,7 @@ class EncryptTokenGenerateBuilderTest {
     @Test
     void assertGetSQLTokenGenerators() {
         SelectStatementContext selectStatementContext = 
mock(SelectStatementContext.class, RETURNS_DEEP_STUBS);
-        
when(selectStatementContext.getSimpleTables().isEmpty()).thenReturn(false);
+        
when(selectStatementContext.getTablesContext().getSimpleTables().isEmpty()).thenReturn(false);
         
when(selectStatementContext.getTablesContext().getTableNames()).thenReturn(Collections.singleton("table"));
         
when(selectStatementContext.getOrderByContext().getItems()).thenReturn(Collections.singleton(mock(OrderByItem.class)));
         
when(selectStatementContext.getGroupByContext().getItems()).thenReturn(Collections.emptyList());
diff --git 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptAssignmentTokenGeneratorTest.java
 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptAssignmentTokenGeneratorTest.java
index 1abf298afff..ad5ef5c98c7 100644
--- 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptAssignmentTokenGeneratorTest.java
+++ 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptAssignmentTokenGeneratorTest.java
@@ -70,10 +70,10 @@ class EncryptAssignmentTokenGeneratorTest {
     @BeforeEach
     void setup() {
         tokenGenerator.setEncryptRule(mockEncryptRule());
-        
when(updateStatement.getSimpleTables().iterator().next().getTableName().getIdentifier().getValue()).thenReturn("table");
+        
when(updateStatement.getTablesContext().getSimpleTables().iterator().next().getTableName().getIdentifier().getValue()).thenReturn("table");
         
when(updateStatement.getSqlStatement().getSetAssignment().getAssignments()).thenReturn(Collections.singleton(assignmentSegment));
         
when(assignmentSegment.getColumns().get(0).getIdentifier().getValue()).thenReturn("columns");
-        
when(insertStatement.getSimpleTables().iterator().next().getTableName().getIdentifier().getValue()).thenReturn("table");
+        
when(insertStatement.getTablesContext().getSimpleTables().iterator().next().getTableName().getIdentifier().getValue()).thenReturn("table");
         
when(setAssignmentSegment.getAssignments()).thenReturn(Collections.singleton(assignmentSegment));
     }
     
diff --git 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/route/engine/dml/AbstractShadowDMLStatementRouteEngine.java
 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/route/engine/dml/AbstractShadowDMLStatementRouteEngine.java
index 88044078bf6..1c79cb2c134 100644
--- 
a/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/route/engine/dml/AbstractShadowDMLStatementRouteEngine.java
+++ 
b/features/shadow/core/src/main/java/org/apache/shardingsphere/shadow/route/engine/dml/AbstractShadowDMLStatementRouteEngine.java
@@ -60,7 +60,7 @@ public abstract class AbstractShadowDMLStatementRouteEngine 
implements ShadowRou
     
     @Override
     public final void route(final RouteContext routeContext, final ShadowRule 
rule) {
-        
tableAliasNameMappings.putAll(getTableAliasNameMappings(((TableAvailable) 
sqlStatementContext).getSimpleTables()));
+        
tableAliasNameMappings.putAll(getTableAliasNameMappings(((TableAvailable) 
sqlStatementContext).getTablesContext().getSimpleTables()));
         decorateRouteContext(routeContext, rule, 
findShadowDataSourceMappings(rule));
     }
     
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/merge/dql/groupby/GroupByMemoryMergedResult.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/merge/dql/groupby/GroupByMemoryMergedResult.java
index c8a67083163..29e98e42f7d 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/merge/dql/groupby/GroupByMemoryMergedResult.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/merge/dql/groupby/GroupByMemoryMergedResult.java
@@ -128,7 +128,7 @@ public final class GroupByMemoryMergedResult extends 
MemoryMergedResult<Sharding
     
     private boolean getValueCaseSensitiveFromTables(final QueryResult 
queryResult,
                                                     final 
SelectStatementContext selectStatementContext, final ShardingSphereSchema 
schema, final int columnIndex) throws SQLException {
-        for (SimpleTableSegment each : 
selectStatementContext.getSimpleTables()) {
+        for (SimpleTableSegment each : 
selectStatementContext.getTablesContext().getSimpleTables()) {
             String tableName = each.getTableName().getIdentifier().getValue();
             
ShardingSpherePreconditions.checkState(schema.containsTable(tableName), () -> 
new NoSuchTableException(tableName));
             ShardingSphereTable table = schema.getTable(tableName);
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/merge/dql/orderby/OrderByValue.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/merge/dql/orderby/OrderByValue.java
index 98be742dc75..7d3703edd00 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/merge/dql/orderby/OrderByValue.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/merge/dql/orderby/OrderByValue.java
@@ -69,7 +69,7 @@ public final class OrderByValue implements 
Comparable<OrderByValue> {
     }
     
     private boolean getOrderValuesCaseSensitiveFromTables(final 
ShardingSphereSchema schema, final OrderByItem eachOrderByItem) throws 
SQLException {
-        for (SimpleTableSegment each : 
selectStatementContext.getSimpleTables()) {
+        for (SimpleTableSegment each : 
selectStatementContext.getTablesContext().getSimpleTables()) {
             String tableName = each.getTableName().getIdentifier().getValue();
             ShardingSphereTable table = schema.getTable(tableName);
             OrderByItemSegment orderByItemSegment = 
eachOrderByItem.getSegment();
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/context/ShardingSQLRewriteContextDecorator.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/context/ShardingSQLRewriteContextDecorator.java
index 4513e26c7ca..671128155ce 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/context/ShardingSQLRewriteContextDecorator.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/context/ShardingSQLRewriteContextDecorator.java
@@ -68,7 +68,7 @@ public final class ShardingSQLRewriteContextDecorator 
implements SQLRewriteConte
     
     private boolean containsShardingTable(final ShardingRule shardingRule, 
final SQLStatementContext sqlStatementContext) {
         Collection<SimpleTableSegment> tableSegments =
-                sqlStatementContext instanceof TableAvailable ? 
((TableAvailable) sqlStatementContext).getSimpleTables() : 
sqlStatementContext.getTablesContext().getSimpleTables();
+                sqlStatementContext instanceof TableAvailable ? 
((TableAvailable) sqlStatementContext).getTablesContext().getSimpleTables() : 
sqlStatementContext.getTablesContext().getSimpleTables();
         for (SimpleTableSegment each : tableSegments) {
             if 
(shardingRule.isShardingTable(each.getTableName().getIdentifier().getValue())) {
                 return true;
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/OrderByTokenGenerator.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/OrderByTokenGenerator.java
index cdf2e9fa068..b68f3c0135a 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/OrderByTokenGenerator.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/OrderByTokenGenerator.java
@@ -70,7 +70,7 @@ public final class OrderByTokenGenerator implements 
OptionalSQLTokenGenerator<Se
         } else if (sqlStatement.getWhere().isPresent()) {
             stopIndex = sqlStatement.getWhere().get().getStopIndex();
         } else {
-            stopIndex = 
selectStatementContext.getSimpleTables().stream().mapToInt(SimpleTableSegment::getStopIndex).max().orElse(0);
+            stopIndex = 
selectStatementContext.getTablesContext().getSimpleTables().stream().mapToInt(SimpleTableSegment::getStopIndex).max().orElse(0);
         }
         return stopIndex + 1;
     }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/TableTokenGenerator.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/TableTokenGenerator.java
index ee4c67676cc..d86a196bf31 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/TableTokenGenerator.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/TableTokenGenerator.java
@@ -61,7 +61,7 @@ public final class TableTokenGenerator implements 
CollectionSQLTokenGenerator<SQ
     
     private Collection<SQLToken> generateSQLTokens(final TableAvailable 
sqlStatementContext) {
         Collection<SQLToken> result = new LinkedList<>();
-        for (SimpleTableSegment each : sqlStatementContext.getSimpleTables()) {
+        for (SimpleTableSegment each : 
sqlStatementContext.getTablesContext().getSimpleTables()) {
             TableNameSegment tableName = each.getTableName();
             if 
(shardingRule.findShardingTable(tableName.getIdentifier().getValue()).isPresent())
 {
                 result.add(new TableToken(tableName.getStartIndex(), 
tableName.getStopIndex(), tableName.getIdentifier(), (SQLStatementContext) 
sqlStatementContext, shardingRule));
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/ShardingRouteEngineFactory.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/ShardingRouteEngineFactory.java
index 2bfb746bed3..4fc626da98c 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/ShardingRouteEngineFactory.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/ShardingRouteEngineFactory.java
@@ -125,7 +125,7 @@ public final class ShardingRouteEngineFactory {
             return new 
ShardingInstanceBroadcastRoutingEngine(database.getResourceMetaData());
         }
         Collection<String> tableNames = sqlStatementContext instanceof 
TableAvailable
-                ? ((TableAvailable) 
sqlStatementContext).getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toSet())
+                ? ((TableAvailable) 
sqlStatementContext).getTablesContext().getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toSet())
                 : sqlStatementContext.getTablesContext().getTableNames();
         Collection<String> shardingRuleTableNames = 
shardingRule.getShardingRuleTableNames(tableNames);
         // TODO remove this logic when jdbc adapter can support executing 
create logic view
@@ -200,7 +200,8 @@ public final class ShardingRouteEngineFactory {
     private static boolean isDCLForSingleTable(final SQLStatementContext 
sqlStatementContext) {
         if (sqlStatementContext instanceof TableAvailable) {
             TableAvailable tableSegmentsAvailable = (TableAvailable) 
sqlStatementContext;
-            return 1 == tableSegmentsAvailable.getSimpleTables().size() && 
!"*".equals(tableSegmentsAvailable.getSimpleTables().iterator().next().getTableName().getIdentifier().getValue());
+            return 1 == 
tableSegmentsAvailable.getTablesContext().getSimpleTables().size()
+                    && 
!"*".equals(tableSegmentsAvailable.getTablesContext().getSimpleTables().iterator().next().getTableName().getIdentifier().getValue());
         }
         return false;
     }
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingAlterTableStatementValidator.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingAlterTableStatementValidator.java
index 29f828bb36f..a1b6c2e8807 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingAlterTableStatementValidator.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingAlterTableStatementValidator.java
@@ -44,7 +44,7 @@ public final class ShardingAlterTableStatementValidator 
extends ShardingDDLState
     public void preValidate(final ShardingRule shardingRule, final 
SQLStatementContext sqlStatementContext,
                             final List<Object> params, final 
ShardingSphereDatabase database, final ConfigurationProperties props) {
         Collection<String> tableNames = sqlStatementContext instanceof 
TableAvailable
-                ? ((TableAvailable) 
sqlStatementContext).getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toList())
+                ? ((TableAvailable) 
sqlStatementContext).getTablesContext().getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toList())
                 : sqlStatementContext.getTablesContext().getTableNames();
         Optional<SimpleTableSegment> renameTable = ((AlterTableStatement) 
sqlStatementContext.getSqlStatement()).getRenameTable();
         if (renameTable.isPresent() && 
shardingRule.containsShardingTable(tableNames)) {
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingRenameTableStatementValidator.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingRenameTableStatementValidator.java
index d61ffe9501b..454a974aa8f 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingRenameTableStatementValidator.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/impl/ShardingRenameTableStatementValidator.java
@@ -44,7 +44,7 @@ public final class ShardingRenameTableStatementValidator 
extends ShardingDDLStat
     public void preValidate(final ShardingRule shardingRule, final 
SQLStatementContext sqlStatementContext, final List<Object> params, final 
ShardingSphereDatabase database,
                             final ConfigurationProperties props) {
         Collection<String> tableNames = sqlStatementContext instanceof 
TableAvailable
-                ? ((TableAvailable) 
sqlStatementContext).getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toList())
+                ? ((TableAvailable) 
sqlStatementContext).getTablesContext().getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toList())
                 : sqlStatementContext.getTablesContext().getTableNames();
         RenameTableStatement renameTableStatement = (RenameTableStatement) 
sqlStatementContext.getSqlStatement();
         List<SimpleTableSegment> renameTables = 
renameTableStatement.getRenameTables().stream().map(RenameTableDefinitionSegment::getRenameTable).collect(Collectors.toList());
diff --git 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/generator/TableTokenGeneratorTest.java
 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/generator/TableTokenGeneratorTest.java
index 25b6c727042..67a113dc868 100644
--- 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/generator/TableTokenGeneratorTest.java
+++ 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/generator/TableTokenGeneratorTest.java
@@ -78,8 +78,8 @@ class TableTokenGeneratorTest {
         
when(shardingRule.findShardingTable(anyString())).thenReturn(Optional.of(mock(ShardingTable.class)));
         TableTokenGenerator generator = new TableTokenGenerator();
         generator.setShardingRule(shardingRule);
-        CreateTableStatementContext sqlStatementContext = 
mock(CreateTableStatementContext.class);
-        
when(sqlStatementContext.getSimpleTables()).thenReturn(Collections.singletonList(new
 SimpleTableSegment(new TableNameSegment(0, 0, new 
IdentifierValue("t_order")))));
+        CreateTableStatementContext sqlStatementContext = 
mock(CreateTableStatementContext.class, RETURNS_DEEP_STUBS);
+        
when(sqlStatementContext.getTablesContext().getSimpleTables()).thenReturn(Collections.singletonList(new
 SimpleTableSegment(new TableNameSegment(0, 0, new 
IdentifierValue("t_order")))));
         Collection<SQLToken> actual = 
generator.generateSQLTokens(sqlStatementContext);
         assertThat(actual.size(), is(1));
         assertThat(actual.iterator().next(), instanceOf(TableToken.class));
diff --git 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/ShardingRouteEngineFactoryTest.java
 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/ShardingRouteEngineFactoryTest.java
index 0dec7a1b45c..79481bdb31b 100644
--- 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/ShardingRouteEngineFactoryTest.java
+++ 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/ShardingRouteEngineFactoryTest.java
@@ -396,7 +396,7 @@ class ShardingRouteEngineFactoryTest {
         
when(cursorStatementContext.getSqlStatement()).thenReturn(cursorStatement);
         Collection<SimpleTableSegment> tableSegments = 
createSimpleTableSegments();
         Collection<String> tableNames = tableSegments.stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toSet());
-        
when(cursorStatementContext.getSimpleTables()).thenReturn(tableSegments);
+        
when(cursorStatementContext.getTablesContext().getSimpleTables()).thenReturn(tableSegments);
         
when(cursorStatementContext.getTablesContext().getTableNames()).thenReturn(tableNames);
         when(shardingRule.isAllShardingTables(tableNames)).thenReturn(true);
         
when(shardingRule.getShardingRuleTableNames(tableNames)).thenReturn(tableNames);
@@ -413,7 +413,7 @@ class ShardingRouteEngineFactoryTest {
         OpenGaussCursorStatement cursorStatement = 
mock(OpenGaussCursorStatement.class);
         
when(cursorStatementContext.getSqlStatement()).thenReturn(cursorStatement);
         Collection<SimpleTableSegment> tableSegments = 
createSimpleTableSegments();
-        
when(cursorStatementContext.getSimpleTables()).thenReturn(tableSegments);
+        
when(cursorStatementContext.getTablesContext().getSimpleTables()).thenReturn(tableSegments);
         QueryContext queryContext = new QueryContext(cursorStatementContext, 
"", Collections.emptyList(), new HintValueContext());
         ShardingRouteEngine actual =
                 ShardingRouteEngineFactory.newInstance(shardingRule, database, 
queryContext, shardingConditions, props, new ConnectionContext(), 
mock(RuleMetaData.class));
diff --git 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/segment/table/TablesContext.java
 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/segment/table/TablesContext.java
index 5fa7e27ba51..48e960f3bfb 100644
--- 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/segment/table/TablesContext.java
+++ 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/segment/table/TablesContext.java
@@ -71,7 +71,7 @@ public final class TablesContext {
     private final Map<String, IdentifierValue> tableNameAliasMap = new 
HashMap<>();
     
     public TablesContext(final SimpleTableSegment tableSegment, final 
DatabaseType databaseType) {
-        this(Collections.singletonList(tableSegment), databaseType);
+        this(null == tableSegment ? Collections.emptyList() : 
Collections.singletonList(tableSegment), databaseType);
     }
     
     public TablesContext(final Collection<SimpleTableSegment> tables, final 
DatabaseType databaseType) {
diff --git 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dal/AnalyzeTableStatementContext.java
 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dal/AnalyzeTableStatementContext.java
index f72ec975b1f..dd2925cc88d 100644
--- 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dal/AnalyzeTableStatementContext.java
+++ 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dal/AnalyzeTableStatementContext.java
@@ -21,11 +21,8 @@ import lombok.Getter;
 import 
org.apache.shardingsphere.infra.binder.context.segment.table.TablesContext;
 import 
org.apache.shardingsphere.infra.binder.context.statement.CommonSQLStatementContext;
 import org.apache.shardingsphere.infra.binder.context.type.TableAvailable;
-import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.dal.AnalyzeTableStatement;
 
-import java.util.Collection;
-
 /**
  * Analyze table statement context.
  */
@@ -43,9 +40,4 @@ public final class AnalyzeTableStatementContext extends 
CommonSQLStatementContex
     public AnalyzeTableStatement getSqlStatement() {
         return (AnalyzeTableStatement) super.getSqlStatement();
     }
-    
-    @Override
-    public Collection<SimpleTableSegment> getSimpleTables() {
-        return getSqlStatement().getTables();
-    }
 }
diff --git 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dal/ExplainStatementContext.java
 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dal/ExplainStatementContext.java
index e3c6c298ba7..d9b8ebbe47e 100644
--- 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dal/ExplainStatementContext.java
+++ 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dal/ExplainStatementContext.java
@@ -58,9 +58,4 @@ public final class ExplainStatementContext extends 
CommonSQLStatementContext imp
     public ExplainStatement getSqlStatement() {
         return (ExplainStatement) super.getSqlStatement();
     }
-    
-    @Override
-    public Collection<SimpleTableSegment> getSimpleTables() {
-        return extractTablesFromExplain(getSqlStatement());
-    }
 }
diff --git 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dal/FlushStatementContext.java
 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dal/FlushStatementContext.java
index 888d41d4361..855f206b9a0 100644
--- 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dal/FlushStatementContext.java
+++ 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dal/FlushStatementContext.java
@@ -18,15 +18,12 @@
 package org.apache.shardingsphere.infra.binder.context.statement.dal;
 
 import lombok.Getter;
-import 
org.apache.shardingsphere.infra.binder.context.statement.CommonSQLStatementContext;
 import 
org.apache.shardingsphere.infra.binder.context.segment.table.TablesContext;
+import 
org.apache.shardingsphere.infra.binder.context.statement.CommonSQLStatementContext;
 import org.apache.shardingsphere.infra.binder.context.type.TableAvailable;
-import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.dal.FlushStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.handler.dal.FlushStatementHandler;
 
-import java.util.Collection;
-
 /**
  * Flush statement context.
  */
@@ -44,9 +41,4 @@ public final class FlushStatementContext extends 
CommonSQLStatementContext imple
     public FlushStatement getSqlStatement() {
         return (FlushStatement) super.getSqlStatement();
     }
-    
-    @Override
-    public Collection<SimpleTableSegment> getSimpleTables() {
-        return FlushStatementHandler.getSimpleTableSegment(getSqlStatement());
-    }
 }
diff --git 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dal/OptimizeTableStatementContext.java
 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dal/OptimizeTableStatementContext.java
index 497218e8a13..3351c4b7157 100644
--- 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dal/OptimizeTableStatementContext.java
+++ 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dal/OptimizeTableStatementContext.java
@@ -18,14 +18,11 @@
 package org.apache.shardingsphere.infra.binder.context.statement.dal;
 
 import lombok.Getter;
-import 
org.apache.shardingsphere.infra.binder.context.statement.CommonSQLStatementContext;
 import 
org.apache.shardingsphere.infra.binder.context.segment.table.TablesContext;
+import 
org.apache.shardingsphere.infra.binder.context.statement.CommonSQLStatementContext;
 import org.apache.shardingsphere.infra.binder.context.type.TableAvailable;
-import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLOptimizeTableStatement;
 
-import java.util.Collection;
-
 /**
  * Optimize table statement context.
  */
@@ -43,9 +40,4 @@ public final class OptimizeTableStatementContext extends 
CommonSQLStatementConte
     public MySQLOptimizeTableStatement getSqlStatement() {
         return (MySQLOptimizeTableStatement) super.getSqlStatement();
     }
-    
-    @Override
-    public Collection<SimpleTableSegment> getSimpleTables() {
-        return getSqlStatement().getTables();
-    }
 }
diff --git 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dal/ShowColumnsStatementContext.java
 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dal/ShowColumnsStatementContext.java
index 2357222a11c..10e2da503ec 100644
--- 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dal/ShowColumnsStatementContext.java
+++ 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dal/ShowColumnsStatementContext.java
@@ -23,11 +23,9 @@ import 
org.apache.shardingsphere.infra.binder.context.statement.CommonSQLStateme
 import org.apache.shardingsphere.infra.binder.context.type.RemoveAvailable;
 import org.apache.shardingsphere.infra.binder.context.type.TableAvailable;
 import org.apache.shardingsphere.sql.parser.sql.common.segment.SQLSegment;
-import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLShowColumnsStatement;
 
 import java.util.Collection;
-import java.util.Collections;
 import java.util.LinkedList;
 
 /**
@@ -48,11 +46,6 @@ public final class ShowColumnsStatementContext extends 
CommonSQLStatementContext
         return (MySQLShowColumnsStatement) super.getSqlStatement();
     }
     
-    @Override
-    public Collection<SimpleTableSegment> getSimpleTables() {
-        return null == getSqlStatement().getTable() ? Collections.emptyList() 
: Collections.singletonList(getSqlStatement().getTable());
-    }
-    
     @Override
     public Collection<SQLSegment> getRemoveSegments() {
         Collection<SQLSegment> result = new LinkedList<>();
diff --git 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dal/ShowCreateTableStatementContext.java
 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dal/ShowCreateTableStatementContext.java
index b84edb2ae62..04c9aaeb1d8 100644
--- 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dal/ShowCreateTableStatementContext.java
+++ 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dal/ShowCreateTableStatementContext.java
@@ -18,15 +18,11 @@
 package org.apache.shardingsphere.infra.binder.context.statement.dal;
 
 import lombok.Getter;
-import 
org.apache.shardingsphere.infra.binder.context.statement.CommonSQLStatementContext;
 import 
org.apache.shardingsphere.infra.binder.context.segment.table.TablesContext;
+import 
org.apache.shardingsphere.infra.binder.context.statement.CommonSQLStatementContext;
 import org.apache.shardingsphere.infra.binder.context.type.TableAvailable;
-import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLShowCreateTableStatement;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Show create table statement context.
  */
@@ -44,9 +40,4 @@ public final class ShowCreateTableStatementContext extends 
CommonSQLStatementCon
     public MySQLShowCreateTableStatement getSqlStatement() {
         return (MySQLShowCreateTableStatement) super.getSqlStatement();
     }
-    
-    @Override
-    public Collection<SimpleTableSegment> getSimpleTables() {
-        return null == getSqlStatement().getTable() ? Collections.emptyList() 
: Collections.singletonList(getSqlStatement().getTable());
-    }
 }
diff --git 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dal/ShowIndexStatementContext.java
 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dal/ShowIndexStatementContext.java
index d102c75b9ac..e328360099a 100644
--- 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dal/ShowIndexStatementContext.java
+++ 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dal/ShowIndexStatementContext.java
@@ -18,16 +18,14 @@
 package org.apache.shardingsphere.infra.binder.context.statement.dal;
 
 import lombok.Getter;
-import 
org.apache.shardingsphere.infra.binder.context.statement.CommonSQLStatementContext;
 import 
org.apache.shardingsphere.infra.binder.context.segment.table.TablesContext;
+import 
org.apache.shardingsphere.infra.binder.context.statement.CommonSQLStatementContext;
 import org.apache.shardingsphere.infra.binder.context.type.RemoveAvailable;
 import org.apache.shardingsphere.infra.binder.context.type.TableAvailable;
 import org.apache.shardingsphere.sql.parser.sql.common.segment.SQLSegment;
-import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLShowIndexStatement;
 
 import java.util.Collection;
-import java.util.Collections;
 import java.util.LinkedList;
 
 /**
@@ -48,11 +46,6 @@ public final class ShowIndexStatementContext extends 
CommonSQLStatementContext i
         return (MySQLShowIndexStatement) super.getSqlStatement();
     }
     
-    @Override
-    public Collection<SimpleTableSegment> getSimpleTables() {
-        return null == getSqlStatement().getTable() ? Collections.emptyList() 
: Collections.singletonList(getSqlStatement().getTable());
-    }
-    
     @Override
     public Collection<SQLSegment> getRemoveSegments() {
         Collection<SQLSegment> result = new LinkedList<>();
diff --git 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dcl/DenyUserStatementContext.java
 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dcl/DenyUserStatementContext.java
index b92f09f4c9b..cc4d2824efe 100644
--- 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dcl/DenyUserStatementContext.java
+++ 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dcl/DenyUserStatementContext.java
@@ -21,12 +21,8 @@ import lombok.Getter;
 import 
org.apache.shardingsphere.infra.binder.context.segment.table.TablesContext;
 import 
org.apache.shardingsphere.infra.binder.context.statement.CommonSQLStatementContext;
 import org.apache.shardingsphere.infra.binder.context.type.TableAvailable;
-import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.dcl.SQLServerDenyUserStatement;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Deny user statement context.
  */
@@ -44,9 +40,4 @@ public final class DenyUserStatementContext extends 
CommonSQLStatementContext im
     public SQLServerDenyUserStatement getSqlStatement() {
         return (SQLServerDenyUserStatement) super.getSqlStatement();
     }
-    
-    @Override
-    public Collection<SimpleTableSegment> getSimpleTables() {
-        return null == getSqlStatement().getTable() ? Collections.emptyList() 
: Collections.singletonList(getSqlStatement().getTable());
-    }
 }
diff --git 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dcl/GrantStatementContext.java
 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dcl/GrantStatementContext.java
index 0b75826c0ed..b8a58928f20 100644
--- 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dcl/GrantStatementContext.java
+++ 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dcl/GrantStatementContext.java
@@ -21,11 +21,8 @@ import lombok.Getter;
 import 
org.apache.shardingsphere.infra.binder.context.segment.table.TablesContext;
 import 
org.apache.shardingsphere.infra.binder.context.statement.CommonSQLStatementContext;
 import org.apache.shardingsphere.infra.binder.context.type.TableAvailable;
-import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.dcl.GrantStatement;
 
-import java.util.Collection;
-
 /**
  * Grant statement context.
  */
@@ -43,9 +40,4 @@ public final class GrantStatementContext extends 
CommonSQLStatementContext imple
     public GrantStatement getSqlStatement() {
         return (GrantStatement) super.getSqlStatement();
     }
-    
-    @Override
-    public Collection<SimpleTableSegment> getSimpleTables() {
-        return getSqlStatement().getTables();
-    }
 }
diff --git 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dcl/RevokeStatementContext.java
 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dcl/RevokeStatementContext.java
index 9dd16e97259..4f3d16cf867 100644
--- 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dcl/RevokeStatementContext.java
+++ 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dcl/RevokeStatementContext.java
@@ -21,11 +21,8 @@ import lombok.Getter;
 import 
org.apache.shardingsphere.infra.binder.context.segment.table.TablesContext;
 import 
org.apache.shardingsphere.infra.binder.context.statement.CommonSQLStatementContext;
 import org.apache.shardingsphere.infra.binder.context.type.TableAvailable;
-import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.dcl.RevokeStatement;
 
-import java.util.Collection;
-
 /**
  * Revoke statement context.
  */
@@ -43,9 +40,4 @@ public final class RevokeStatementContext extends 
CommonSQLStatementContext impl
     public RevokeStatement getSqlStatement() {
         return (RevokeStatement) super.getSqlStatement();
     }
-    
-    @Override
-    public Collection<SimpleTableSegment> getSimpleTables() {
-        return getSqlStatement().getTables();
-    }
 }
diff --git 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/AlterIndexStatementContext.java
 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/AlterIndexStatementContext.java
index 693790c44cf..e8b5d9bf5e9 100644
--- 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/AlterIndexStatementContext.java
+++ 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/AlterIndexStatementContext.java
@@ -31,7 +31,6 @@ import 
org.apache.shardingsphere.sql.parser.sql.dialect.handler.ddl.AlterIndexSt
 import java.util.Collection;
 import java.util.Collections;
 import java.util.LinkedList;
-import java.util.Optional;
 
 /**
  * Alter index statement context.
@@ -52,12 +51,6 @@ public final class AlterIndexStatementContext extends 
CommonSQLStatementContext
         return (AlterIndexStatement) super.getSqlStatement();
     }
     
-    @Override
-    public Collection<SimpleTableSegment> getSimpleTables() {
-        Optional<SimpleTableSegment> simpleTableSegment = 
AlterIndexStatementHandler.getSimpleTableSegment(getSqlStatement());
-        return 
simpleTableSegment.map(Collections::singletonList).orElseGet(Collections::emptyList);
-    }
-    
     @Override
     public Collection<IndexSegment> getIndexes() {
         Collection<IndexSegment> result = new LinkedList<>();
diff --git 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/AlterTableStatementContext.java
 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/AlterTableStatementContext.java
index 1e604afb922..10cc85310c2 100644
--- 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/AlterTableStatementContext.java
+++ 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/AlterTableStatementContext.java
@@ -50,35 +50,34 @@ public final class AlterTableStatementContext extends 
CommonSQLStatementContext
     
     public AlterTableStatementContext(final AlterTableStatement sqlStatement) {
         super(sqlStatement);
-        tablesContext = new TablesContext(sqlStatement.getTable(), 
getDatabaseType());
+        tablesContext = new TablesContext(getTables(sqlStatement), 
getDatabaseType());
     }
     
-    @Override
-    public AlterTableStatement getSqlStatement() {
-        return (AlterTableStatement) super.getSqlStatement();
-    }
-    
-    @Override
-    public Collection<SimpleTableSegment> getSimpleTables() {
+    private Collection<SimpleTableSegment> getTables(final AlterTableStatement 
sqlStatement) {
         Collection<SimpleTableSegment> result = new LinkedList<>();
-        result.add(getSqlStatement().getTable());
-        if (getSqlStatement().getRenameTable().isPresent()) {
-            result.add(getSqlStatement().getRenameTable().get());
+        result.add(sqlStatement.getTable());
+        if (sqlStatement.getRenameTable().isPresent()) {
+            result.add(sqlStatement.getRenameTable().get());
         }
-        for (AddColumnDefinitionSegment each : 
getSqlStatement().getAddColumnDefinitions()) {
+        for (AddColumnDefinitionSegment each : 
sqlStatement.getAddColumnDefinitions()) {
             for (ColumnDefinitionSegment columnDefinition : 
each.getColumnDefinitions()) {
                 result.addAll(columnDefinition.getReferencedTables());
             }
         }
-        for (ModifyColumnDefinitionSegment each : 
getSqlStatement().getModifyColumnDefinitions()) {
+        for (ModifyColumnDefinitionSegment each : 
sqlStatement.getModifyColumnDefinitions()) {
             result.addAll(each.getColumnDefinition().getReferencedTables());
         }
-        for (AddConstraintDefinitionSegment each : 
getSqlStatement().getAddConstraintDefinitions()) {
+        for (AddConstraintDefinitionSegment each : 
sqlStatement.getAddConstraintDefinitions()) {
             
each.getConstraintDefinition().getReferencedTable().ifPresent(result::add);
         }
         return result;
     }
     
+    @Override
+    public AlterTableStatement getSqlStatement() {
+        return (AlterTableStatement) super.getSqlStatement();
+    }
+    
     @Override
     public Collection<IndexSegment> getIndexes() {
         Collection<IndexSegment> result = new LinkedList<>();
diff --git 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/AlterViewStatementContext.java
 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/AlterViewStatementContext.java
index 2042067e25e..5fa1bd9bc98 100644
--- 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/AlterViewStatementContext.java
+++ 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/AlterViewStatementContext.java
@@ -57,9 +57,4 @@ public final class AlterViewStatementContext extends 
CommonSQLStatementContext i
     public AlterViewStatement getSqlStatement() {
         return (AlterViewStatement) super.getSqlStatement();
     }
-    
-    @Override
-    public Collection<SimpleTableSegment> getSimpleTables() {
-        return tablesContext.getSimpleTables();
-    }
 }
diff --git 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/CommentStatementContext.java
 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/CommentStatementContext.java
index 6511d3820b1..0997fec301f 100644
--- 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/CommentStatementContext.java
+++ 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/CommentStatementContext.java
@@ -21,10 +21,8 @@ import lombok.Getter;
 import 
org.apache.shardingsphere.infra.binder.context.segment.table.TablesContext;
 import 
org.apache.shardingsphere.infra.binder.context.statement.CommonSQLStatementContext;
 import org.apache.shardingsphere.infra.binder.context.type.TableAvailable;
-import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.CommentStatement;
 
-import java.util.Collection;
 import java.util.Collections;
 
 /**
@@ -44,9 +42,4 @@ public final class CommentStatementContext extends 
CommonSQLStatementContext imp
     public CommentStatement getSqlStatement() {
         return (CommentStatement) super.getSqlStatement();
     }
-    
-    @Override
-    public Collection<SimpleTableSegment> getSimpleTables() {
-        return tablesContext.getSimpleTables();
-    }
 }
diff --git 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/CreateIndexStatementContext.java
 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/CreateIndexStatementContext.java
index b1c6a73e94c..9c5033318bf 100644
--- 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/CreateIndexStatementContext.java
+++ 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/CreateIndexStatementContext.java
@@ -26,7 +26,6 @@ import 
org.apache.shardingsphere.infra.metadata.database.schema.util.IndexMetaDa
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.index.IndexNameSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.index.IndexSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment;
-import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.CreateIndexStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.common.value.identifier.IdentifierValue;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.handler.ddl.CreateIndexStatementHandler;
@@ -55,18 +54,13 @@ public final class CreateIndexStatementContext extends 
CommonSQLStatementContext
         return (CreateIndexStatement) super.getSqlStatement();
     }
     
-    @Override
-    public Collection<SimpleTableSegment> getSimpleTables() {
-        return null == getSqlStatement().getTable() ? Collections.emptyList() 
: Collections.singletonList(getSqlStatement().getTable());
-    }
-    
     @Override
     public Collection<IndexSegment> getIndexes() {
         if (null == getSqlStatement().getIndex()) {
             return 
CreateIndexStatementHandler.getGeneratedIndexStartIndex(getSqlStatement()).map(each
 -> Collections.singletonList(new IndexSegment(each, each,
                     new IndexNameSegment(each, each, new 
IdentifierValue(IndexMetaDataUtils.getGeneratedLogicIndexName(getSqlStatement().getColumns())))))).orElseGet(Collections::emptyList);
         }
-        return Collections.singletonList(getSqlStatement().getIndex());
+        return Collections.singleton(getSqlStatement().getIndex());
     }
     
     @Override
diff --git 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/CreateTableStatementContext.java
 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/CreateTableStatementContext.java
index fcef7f270ea..90ba94e607a 100644
--- 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/CreateTableStatementContext.java
+++ 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/CreateTableStatementContext.java
@@ -44,22 +44,16 @@ public final class CreateTableStatementContext extends 
CommonSQLStatementContext
     
     public CreateTableStatementContext(final CreateTableStatement 
sqlStatement) {
         super(sqlStatement);
-        tablesContext = new TablesContext(sqlStatement.getTable(), 
getDatabaseType());
+        tablesContext = new TablesContext(getTables(sqlStatement), 
getDatabaseType());
     }
     
-    @Override
-    public CreateTableStatement getSqlStatement() {
-        return (CreateTableStatement) super.getSqlStatement();
-    }
-    
-    @Override
-    public Collection<SimpleTableSegment> getSimpleTables() {
+    private Collection<SimpleTableSegment> getTables(final 
CreateTableStatement sqlStatement) {
         Collection<SimpleTableSegment> result = new LinkedList<>();
-        result.add(getSqlStatement().getTable());
-        for (ColumnDefinitionSegment each : 
getSqlStatement().getColumnDefinitions()) {
+        result.add(sqlStatement.getTable());
+        for (ColumnDefinitionSegment each : 
sqlStatement.getColumnDefinitions()) {
             result.addAll(each.getReferencedTables());
         }
-        for (ConstraintDefinitionSegment each : 
getSqlStatement().getConstraintDefinitions()) {
+        for (ConstraintDefinitionSegment each : 
sqlStatement.getConstraintDefinitions()) {
             if (each.getReferencedTable().isPresent()) {
                 result.add(each.getReferencedTable().get());
             }
@@ -67,6 +61,11 @@ public final class CreateTableStatementContext extends 
CommonSQLStatementContext
         return result;
     }
     
+    @Override
+    public CreateTableStatement getSqlStatement() {
+        return (CreateTableStatement) super.getSqlStatement();
+    }
+    
     @Override
     public Collection<IndexSegment> getIndexes() {
         Collection<IndexSegment> result = new LinkedList<>();
diff --git 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/CreateViewStatementContext.java
 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/CreateViewStatementContext.java
index e7eb724b47b..70d9e645c88 100644
--- 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/CreateViewStatementContext.java
+++ 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/CreateViewStatementContext.java
@@ -22,11 +22,8 @@ import 
org.apache.shardingsphere.infra.binder.context.segment.table.TablesContex
 import 
org.apache.shardingsphere.infra.binder.context.statement.CommonSQLStatementContext;
 import org.apache.shardingsphere.infra.binder.context.type.TableAvailable;
 import 
org.apache.shardingsphere.sql.parser.sql.common.extractor.TableExtractor;
-import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.CreateViewStatement;
 
-import java.util.Collection;
-
 /**
  * Create view statement context.
  */
@@ -46,9 +43,4 @@ public final class CreateViewStatementContext extends 
CommonSQLStatementContext
     public CreateViewStatement getSqlStatement() {
         return (CreateViewStatement) super.getSqlStatement();
     }
-    
-    @Override
-    public Collection<SimpleTableSegment> getSimpleTables() {
-        return tablesContext.getSimpleTables();
-    }
 }
diff --git 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/CursorStatementContext.java
 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/CursorStatementContext.java
index a72282796ab..719efa5856f 100644
--- 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/CursorStatementContext.java
+++ 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/CursorStatementContext.java
@@ -76,11 +76,6 @@ public final class CursorStatementContext extends 
CommonSQLStatementContext impl
         return (OpenGaussCursorStatement) super.getSqlStatement();
     }
     
-    @Override
-    public Collection<SimpleTableSegment> getSimpleTables() {
-        return tablesContext.getSimpleTables();
-    }
-    
     @Override
     public Optional<CursorNameSegment> getCursorName() {
         return Optional.of(getSqlStatement().getCursorName());
diff --git 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/DropIndexStatementContext.java
 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/DropIndexStatementContext.java
index 31d54357e9e..98aa1e1ec9b 100644
--- 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/DropIndexStatementContext.java
+++ 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/DropIndexStatementContext.java
@@ -30,7 +30,6 @@ import 
org.apache.shardingsphere.sql.parser.sql.dialect.handler.ddl.DropIndexSta
 
 import java.util.Collection;
 import java.util.Collections;
-import java.util.Optional;
 
 /**
  * Drop index statement context.
@@ -51,12 +50,6 @@ public final class DropIndexStatementContext extends 
CommonSQLStatementContext i
         return (DropIndexStatement) super.getSqlStatement();
     }
     
-    @Override
-    public Collection<SimpleTableSegment> getSimpleTables() {
-        Optional<SimpleTableSegment> simpleTableSegment = 
DropIndexStatementHandler.getSimpleTableSegment(getSqlStatement());
-        return 
simpleTableSegment.map(Collections::singletonList).orElseGet(Collections::emptyList);
-    }
-    
     @Override
     public Collection<IndexSegment> getIndexes() {
         return getSqlStatement().getIndexes();
diff --git 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/DropTableStatementContext.java
 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/DropTableStatementContext.java
index 2974a0cb5fb..9f5bf9c7065 100644
--- 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/DropTableStatementContext.java
+++ 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/DropTableStatementContext.java
@@ -21,11 +21,8 @@ import lombok.Getter;
 import 
org.apache.shardingsphere.infra.binder.context.segment.table.TablesContext;
 import 
org.apache.shardingsphere.infra.binder.context.statement.CommonSQLStatementContext;
 import org.apache.shardingsphere.infra.binder.context.type.TableAvailable;
-import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DropTableStatement;
 
-import java.util.Collection;
-
 /**
  * Drop table statement context.
  */
@@ -43,9 +40,4 @@ public final class DropTableStatementContext extends 
CommonSQLStatementContext i
     public DropTableStatement getSqlStatement() {
         return (DropTableStatement) super.getSqlStatement();
     }
-    
-    @Override
-    public Collection<SimpleTableSegment> getSimpleTables() {
-        return getSqlStatement().getTables();
-    }
 }
diff --git 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/DropViewStatementContext.java
 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/DropViewStatementContext.java
index e145d14f55e..a3071c1d27c 100644
--- 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/DropViewStatementContext.java
+++ 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/DropViewStatementContext.java
@@ -21,11 +21,8 @@ import lombok.Getter;
 import 
org.apache.shardingsphere.infra.binder.context.segment.table.TablesContext;
 import 
org.apache.shardingsphere.infra.binder.context.statement.CommonSQLStatementContext;
 import org.apache.shardingsphere.infra.binder.context.type.TableAvailable;
-import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DropViewStatement;
 
-import java.util.Collection;
-
 /**
  * Drop view statement context.
  */
@@ -43,9 +40,4 @@ public final class DropViewStatementContext extends 
CommonSQLStatementContext im
     public DropViewStatement getSqlStatement() {
         return (DropViewStatement) super.getSqlStatement();
     }
-    
-    @Override
-    public Collection<SimpleTableSegment> getSimpleTables() {
-        return tablesContext.getSimpleTables();
-    }
 }
diff --git 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/PrepareStatementContext.java
 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/PrepareStatementContext.java
index 44fd1610bb2..93673b2a15b 100644
--- 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/PrepareStatementContext.java
+++ 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/PrepareStatementContext.java
@@ -41,16 +41,6 @@ public final class PrepareStatementContext extends 
CommonSQLStatementContext imp
         tablesContext = new 
TablesContext(extractTablesFromPreparedStatement(sqlStatement), 
getDatabaseType());
     }
     
-    @Override
-    public PrepareStatement getSqlStatement() {
-        return (PrepareStatement) super.getSqlStatement();
-    }
-    
-    @Override
-    public Collection<SimpleTableSegment> getSimpleTables() {
-        return extractTablesFromPreparedStatement(getSqlStatement());
-    }
-    
     private Collection<SimpleTableSegment> 
extractTablesFromPreparedStatement(final PrepareStatement sqlStatement) {
         TableExtractor tableExtractor = new TableExtractor();
         
sqlStatement.getSelect().ifPresent(tableExtractor::extractTablesFromSelect);
@@ -59,4 +49,9 @@ public final class PrepareStatementContext extends 
CommonSQLStatementContext imp
         
sqlStatement.getDelete().ifPresent(tableExtractor::extractTablesFromDelete);
         return new LinkedList<>(tableExtractor.getRewriteTables());
     }
+    
+    @Override
+    public PrepareStatement getSqlStatement() {
+        return (PrepareStatement) super.getSqlStatement();
+    }
 }
diff --git 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/RenameTableStatementContext.java
 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/RenameTableStatementContext.java
index 6682d29d1d2..0bc249cbf90 100644
--- 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/RenameTableStatementContext.java
+++ 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/RenameTableStatementContext.java
@@ -27,7 +27,6 @@ import 
org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.RenameTable
 
 import java.util.Collection;
 import java.util.LinkedList;
-import java.util.stream.Collectors;
 
 /**
  * Rename table statement context.
@@ -39,21 +38,20 @@ public final class RenameTableStatementContext extends 
CommonSQLStatementContext
     
     public RenameTableStatementContext(final RenameTableStatement 
sqlStatement) {
         super(sqlStatement);
-        tablesContext = new 
TablesContext(sqlStatement.getRenameTables().stream().map(RenameTableDefinitionSegment::getRenameTable).collect(Collectors.toList()),
 getDatabaseType());
+        tablesContext = new TablesContext(getTables(sqlStatement), 
getDatabaseType());
     }
     
-    @Override
-    public RenameTableStatement getSqlStatement() {
-        return (RenameTableStatement) super.getSqlStatement();
-    }
-    
-    @Override
-    public Collection<SimpleTableSegment> getSimpleTables() {
+    private Collection<SimpleTableSegment> getTables(final 
RenameTableStatement sqlStatement) {
         Collection<SimpleTableSegment> result = new LinkedList<>();
-        for (RenameTableDefinitionSegment each : 
getSqlStatement().getRenameTables()) {
+        for (RenameTableDefinitionSegment each : 
sqlStatement.getRenameTables()) {
             result.add(each.getTable());
             result.add(each.getRenameTable());
         }
         return result;
     }
+    
+    @Override
+    public RenameTableStatement getSqlStatement() {
+        return (RenameTableStatement) super.getSqlStatement();
+    }
 }
diff --git 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/TruncateStatementContext.java
 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/TruncateStatementContext.java
index 10e532d24c9..646acc88e80 100644
--- 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/TruncateStatementContext.java
+++ 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/TruncateStatementContext.java
@@ -21,11 +21,8 @@ import lombok.Getter;
 import 
org.apache.shardingsphere.infra.binder.context.segment.table.TablesContext;
 import 
org.apache.shardingsphere.infra.binder.context.statement.CommonSQLStatementContext;
 import org.apache.shardingsphere.infra.binder.context.type.TableAvailable;
-import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.TruncateStatement;
 
-import java.util.Collection;
-
 /**
  * Truncate statement context.
  */
@@ -43,9 +40,4 @@ public final class TruncateStatementContext extends 
CommonSQLStatementContext im
     public TruncateStatement getSqlStatement() {
         return (TruncateStatement) super.getSqlStatement();
     }
-    
-    @Override
-    public Collection<SimpleTableSegment> getSimpleTables() {
-        return getSqlStatement().getTables();
-    }
 }
diff --git 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dml/CopyStatementContext.java
 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dml/CopyStatementContext.java
index 09246d1ea90..ecc76a3d1c0 100644
--- 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dml/CopyStatementContext.java
+++ 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dml/CopyStatementContext.java
@@ -21,11 +21,8 @@ import lombok.Getter;
 import 
org.apache.shardingsphere.infra.binder.context.segment.table.TablesContext;
 import 
org.apache.shardingsphere.infra.binder.context.statement.CommonSQLStatementContext;
 import org.apache.shardingsphere.infra.binder.context.type.TableAvailable;
-import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.dml.CopyStatement;
 
-import java.util.Collection;
-
 /**
  * Copy statement context.
  */
@@ -43,9 +40,4 @@ public final class CopyStatementContext extends 
CommonSQLStatementContext implem
     public CopyStatement getSqlStatement() {
         return (CopyStatement) super.getSqlStatement();
     }
-    
-    @Override
-    public Collection<SimpleTableSegment> getSimpleTables() {
-        return tablesContext.getSimpleTables();
-    }
 }
diff --git 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dml/DeleteStatementContext.java
 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dml/DeleteStatementContext.java
index b706949fa8b..d08dd113a0b 100644
--- 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dml/DeleteStatementContext.java
+++ 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dml/DeleteStatementContext.java
@@ -89,11 +89,6 @@ public final class DeleteStatementContext extends 
CommonSQLStatementContext impl
         return (DeleteStatement) super.getSqlStatement();
     }
     
-    @Override
-    public Collection<SimpleTableSegment> getSimpleTables() {
-        return tablesContext.getSimpleTables();
-    }
-    
     @Override
     public Collection<WhereSegment> getWhereSegments() {
         return whereSegments;
diff --git 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dml/InsertStatementContext.java
 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dml/InsertStatementContext.java
index 550aa310875..8f804668ca5 100644
--- 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dml/InsertStatementContext.java
+++ 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dml/InsertStatementContext.java
@@ -264,11 +264,6 @@ public final class InsertStatementContext extends 
CommonSQLStatementContext impl
         return (InsertStatement) super.getSqlStatement();
     }
     
-    @Override
-    public Collection<SimpleTableSegment> getSimpleTables() {
-        return tablesContext.getSimpleTables();
-    }
-    
     @Override
     public void setUpParameters(final List<Object> params) {
         AtomicInteger parametersOffset = new AtomicInteger(0);
diff --git 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dml/LoadDataStatementContext.java
 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dml/LoadDataStatementContext.java
index e70449d5a7c..ddb36b1e87c 100644
--- 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dml/LoadDataStatementContext.java
+++ 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dml/LoadDataStatementContext.java
@@ -21,11 +21,8 @@ import lombok.Getter;
 import 
org.apache.shardingsphere.infra.binder.context.segment.table.TablesContext;
 import 
org.apache.shardingsphere.infra.binder.context.statement.CommonSQLStatementContext;
 import org.apache.shardingsphere.infra.binder.context.type.TableAvailable;
-import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dml.MySQLLoadDataStatement;
 
-import java.util.Collection;
-
 /**
  * Load data statement context.
  */
@@ -43,9 +40,4 @@ public final class LoadDataStatementContext extends 
CommonSQLStatementContext im
     public MySQLLoadDataStatement getSqlStatement() {
         return (MySQLLoadDataStatement) super.getSqlStatement();
     }
-    
-    @Override
-    public Collection<SimpleTableSegment> getSimpleTables() {
-        return tablesContext.getSimpleTables();
-    }
 }
diff --git 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dml/LoadXMLStatementContext.java
 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dml/LoadXMLStatementContext.java
index f7353355502..4e5e0e2815a 100644
--- 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dml/LoadXMLStatementContext.java
+++ 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dml/LoadXMLStatementContext.java
@@ -21,11 +21,8 @@ import lombok.Getter;
 import 
org.apache.shardingsphere.infra.binder.context.segment.table.TablesContext;
 import 
org.apache.shardingsphere.infra.binder.context.statement.CommonSQLStatementContext;
 import org.apache.shardingsphere.infra.binder.context.type.TableAvailable;
-import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dml.MySQLLoadXMLStatement;
 
-import java.util.Collection;
-
 /**
  * Load xml statement context.
  */
@@ -43,9 +40,4 @@ public final class LoadXMLStatementContext extends 
CommonSQLStatementContext imp
     public MySQLLoadXMLStatement getSqlStatement() {
         return (MySQLLoadXMLStatement) super.getSqlStatement();
     }
-    
-    @Override
-    public Collection<SimpleTableSegment> getSimpleTables() {
-        return tablesContext.getSimpleTables();
-    }
 }
diff --git 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dml/SelectStatementContext.java
 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dml/SelectStatementContext.java
index 985dae29563..63538559d48 100644
--- 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dml/SelectStatementContext.java
+++ 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dml/SelectStatementContext.java
@@ -61,7 +61,6 @@ import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.order.item.Or
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.order.item.TextOrderByItemSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.predicate.WhereSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.JoinTableSegment;
-import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SubqueryTableSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.TableSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.dml.SelectStatement;
@@ -344,11 +343,6 @@ public final class SelectStatementContext extends 
CommonSQLStatementContext impl
         return (SelectStatement) super.getSqlStatement();
     }
     
-    @Override
-    public Collection<SimpleTableSegment> getSimpleTables() {
-        return tablesContext.getSimpleTables();
-    }
-    
     @Override
     public Collection<WhereSegment> getWhereSegments() {
         return whereSegments;
diff --git 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dml/UpdateStatementContext.java
 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dml/UpdateStatementContext.java
index 8422721c46a..d15c634f7bc 100644
--- 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dml/UpdateStatementContext.java
+++ 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/statement/dml/UpdateStatementContext.java
@@ -67,11 +67,6 @@ public final class UpdateStatementContext extends 
CommonSQLStatementContext impl
         return (UpdateStatement) super.getSqlStatement();
     }
     
-    @Override
-    public Collection<SimpleTableSegment> getSimpleTables() {
-        return tablesContext.getSimpleTables();
-    }
-    
     @Override
     public Collection<WhereSegment> getWhereSegments() {
         return whereSegments;
diff --git 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/type/TableAvailable.java
 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/type/TableAvailable.java
index a66ef759a3b..7c2c4596a64 100644
--- 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/type/TableAvailable.java
+++ 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/type/TableAvailable.java
@@ -18,22 +18,12 @@
 package org.apache.shardingsphere.infra.binder.context.type;
 
 import 
org.apache.shardingsphere.infra.binder.context.segment.table.TablesContext;
-import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
-
-import java.util.Collection;
 
 /**
  * Table available.
  */
 public interface TableAvailable {
     
-    /**
-     * Get simple tables.
-     * 
-     * @return all simple tables
-     */
-    Collection<SimpleTableSegment> getSimpleTables();
-    
     /**
      * Get tables context.
      * 
diff --git 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dal/AnalyzeTableStatementContextTest.java
 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dal/AnalyzeTableStatementContextTest.java
index d2a40b9fb66..9b075f42fb6 100644
--- 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dal/AnalyzeTableStatementContextTest.java
+++ 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dal/AnalyzeTableStatementContextTest.java
@@ -59,6 +59,6 @@ class AnalyzeTableStatementContextTest {
         AnalyzeTableStatementContext actual = new 
AnalyzeTableStatementContext(analyzeTableStatement);
         assertThat(actual, instanceOf(CommonSQLStatementContext.class));
         assertThat(actual.getSqlStatement(), is(analyzeTableStatement));
-        assertThat(actual.getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toList()), 
is(Arrays.asList("tbl_1", "tbl_2")));
+        
assertThat(actual.getTablesContext().getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toList()), 
is(Arrays.asList("tbl_1", "tbl_2")));
     }
 }
diff --git 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dal/ExplainStatementContextTest.java
 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dal/ExplainStatementContextTest.java
index 7822338980c..0b385e58a00 100644
--- 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dal/ExplainStatementContextTest.java
+++ 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dal/ExplainStatementContextTest.java
@@ -52,6 +52,6 @@ class ExplainStatementContextTest {
         assertThat(actual, instanceOf(CommonSQLStatementContext.class));
         assertThat(actual.getSqlStatement(), is(explainStatement));
         assertThat(actual.getSqlStatement().getStatement().orElse(null), 
is(statement));
-        assertThat(actual.getSimpleTables(), is(Collections.emptyList()));
+        assertThat(actual.getTablesContext().getSimpleTables(), 
is(Collections.emptyList()));
     }
 }
diff --git 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dal/OptimizeTableStatementContextTest.java
 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dal/OptimizeTableStatementContextTest.java
index eded81210d8..97a58873e1b 100644
--- 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dal/OptimizeTableStatementContextTest.java
+++ 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dal/OptimizeTableStatementContextTest.java
@@ -44,6 +44,7 @@ class OptimizeTableStatementContextTest {
         OptimizeTableStatementContext actual = new 
OptimizeTableStatementContext(optimizeTableStatement);
         assertThat(actual, instanceOf(CommonSQLStatementContext.class));
         assertThat(actual.getSqlStatement(), is(optimizeTableStatement));
-        assertThat(actual.getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toList()), 
is(Collections.singletonList("tbl_1")));
+        
assertThat(actual.getTablesContext().getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toList()),
+                is(Collections.singletonList("tbl_1")));
     }
 }
diff --git 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dal/ShowColumnsStatementContextTest.java
 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dal/ShowColumnsStatementContextTest.java
index 329a5980749..af2ea9c6f1f 100644
--- 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dal/ShowColumnsStatementContextTest.java
+++ 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dal/ShowColumnsStatementContextTest.java
@@ -50,7 +50,8 @@ class ShowColumnsStatementContextTest {
         ShowColumnsStatementContext actual = new 
ShowColumnsStatementContext(showColumnsStatement);
         assertThat(actual, instanceOf(CommonSQLStatementContext.class));
         assertThat(actual.getSqlStatement(), is(showColumnsStatement));
-        assertThat(actual.getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toList()), 
is(Collections.singletonList(tableName)));
+        
assertThat(actual.getTablesContext().getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toList()),
+                is(Collections.singletonList(tableName)));
         assertThat(actual.getRemoveSegments(), 
is(Collections.singletonList(fromSchema)));
     }
 }
diff --git 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dal/ShowCreateTableStatementContextTest.java
 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dal/ShowCreateTableStatementContextTest.java
index dc627c216e1..2cb7494b81c 100644
--- 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dal/ShowCreateTableStatementContextTest.java
+++ 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dal/ShowCreateTableStatementContextTest.java
@@ -43,6 +43,7 @@ class ShowCreateTableStatementContextTest {
         ShowCreateTableStatementContext actual = new 
ShowCreateTableStatementContext(showCreateTableStatement);
         assertThat(actual, instanceOf(CommonSQLStatementContext.class));
         assertThat(actual.getSqlStatement(), is(showCreateTableStatement));
-        assertThat(actual.getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toList()), 
is(Collections.singletonList("tbl_1")));
+        
assertThat(actual.getTablesContext().getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toList()),
+                is(Collections.singletonList("tbl_1")));
     }
 }
diff --git 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dal/ShowIndexStatementContextTest.java
 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dal/ShowIndexStatementContextTest.java
index 1e0d06169df..568f27cf944 100644
--- 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dal/ShowIndexStatementContextTest.java
+++ 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dal/ShowIndexStatementContextTest.java
@@ -43,6 +43,7 @@ class ShowIndexStatementContextTest {
         ShowIndexStatementContext actual = new 
ShowIndexStatementContext(showIndexStatement);
         assertThat(actual, instanceOf(CommonSQLStatementContext.class));
         assertThat(actual.getSqlStatement(), is(showIndexStatement));
-        assertThat(actual.getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toList()), 
is(Collections.singletonList("tbl_1")));
+        
assertThat(actual.getTablesContext().getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toList()),
+                is(Collections.singletonList("tbl_1")));
     }
 }
diff --git 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dcl/DenyUserStatementContextTest.java
 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dcl/DenyUserStatementContextTest.java
index 03675e36e3a..115b4a30b34 100644
--- 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dcl/DenyUserStatementContextTest.java
+++ 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dcl/DenyUserStatementContextTest.java
@@ -43,6 +43,7 @@ class DenyUserStatementContextTest {
         DenyUserStatementContext actual = new 
DenyUserStatementContext(sqlServerDenyUserStatement);
         assertThat(actual, instanceOf(CommonSQLStatementContext.class));
         assertThat(actual.getSqlStatement(), is(sqlServerDenyUserStatement));
-        assertThat(actual.getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toList()), 
is(Collections.singletonList("tbl_1")));
+        
assertThat(actual.getTablesContext().getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toList()),
+                is(Collections.singletonList("tbl_1")));
     }
 }
diff --git 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dcl/GrantStatementContextTest.java
 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dcl/GrantStatementContextTest.java
index b35508037de..5cd283ecbf4 100644
--- 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dcl/GrantStatementContextTest.java
+++ 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dcl/GrantStatementContextTest.java
@@ -77,6 +77,6 @@ class GrantStatementContextTest {
         GrantStatementContext actual = new 
GrantStatementContext(grantStatement);
         assertThat(actual, instanceOf(CommonSQLStatementContext.class));
         assertThat(actual.getSqlStatement(), is(grantStatement));
-        assertThat(actual.getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toList()), 
is(Arrays.asList("tbl_1", "tbl_2")));
+        
assertThat(actual.getTablesContext().getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toList()), 
is(Arrays.asList("tbl_1", "tbl_2")));
     }
 }
diff --git 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dcl/RevokeStatementContextTest.java
 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dcl/RevokeStatementContextTest.java
index 0cb11219dde..4fe1b1b6a75 100644
--- 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dcl/RevokeStatementContextTest.java
+++ 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dcl/RevokeStatementContextTest.java
@@ -77,6 +77,6 @@ class RevokeStatementContextTest {
         RevokeStatementContext actual = new 
RevokeStatementContext(revokeStatement);
         assertThat(actual, instanceOf(CommonSQLStatementContext.class));
         assertThat(actual.getSqlStatement(), is(revokeStatement));
-        assertThat(actual.getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toList()), 
is(Arrays.asList("tbl_1", "tbl_2")));
+        
assertThat(actual.getTablesContext().getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toList()), 
is(Arrays.asList("tbl_1", "tbl_2")));
     }
 }
diff --git 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/AlterIndexStatementContextTest.java
 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/AlterIndexStatementContextTest.java
index 331f2ce759e..b287b38b5af 100644
--- 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/AlterIndexStatementContextTest.java
+++ 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/AlterIndexStatementContextTest.java
@@ -60,7 +60,7 @@ class AlterIndexStatementContextTest {
         AlterIndexStatementContext actual = new 
AlterIndexStatementContext(alterIndexStatement);
         assertThat(actual, instanceOf(CommonSQLStatementContext.class));
         assertThat(actual.getSqlStatement(), is(alterIndexStatement));
-        assertThat(actual.getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toList()), 
is(Collections.emptyList()));
+        
assertThat(actual.getTablesContext().getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toList()), 
is(Collections.emptyList()));
         assertThat(actual.getIndexes().stream().map(each -> 
each.getIndexName().getIdentifier().getValue()).collect(Collectors.toList()), 
is(Collections.singletonList("index_1")));
     }
 }
diff --git 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/AlterTableStatementContextTest.java
 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/AlterTableStatementContextTest.java
index 93a4306eb25..bc4f98b24ed 100644
--- 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/AlterTableStatementContextTest.java
+++ 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/AlterTableStatementContextTest.java
@@ -113,7 +113,7 @@ class AlterTableStatementContextTest {
         AlterTableStatementContext actual = new 
AlterTableStatementContext(alterTableStatement);
         assertThat(actual, instanceOf(CommonSQLStatementContext.class));
         assertThat(actual.getSqlStatement(), is(alterTableStatement));
-        assertThat(actual.getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toList()),
+        
assertThat(actual.getTablesContext().getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toList()),
                 is(Arrays.asList("tbl_1", "rename_tbl_1", "tbl_1", "tbl_1", 
"tbl_1")));
         assertThat(actual.getIndexes().stream().map(each -> 
each.getIndexName().getIdentifier().getValue()).collect(Collectors.toList()), 
is(Arrays.asList("index", "drop_index")));
         assertThat(actual.getConstraints().stream().map(each -> 
each.getIdentifier().getValue()).collect(Collectors.toList()),
diff --git 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/AlterViewStatementContextTest.java
 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/AlterViewStatementContextTest.java
index e3a7fa66fd9..2f6c8727389 100644
--- 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/AlterViewStatementContextTest.java
+++ 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/AlterViewStatementContextTest.java
@@ -68,6 +68,6 @@ class AlterViewStatementContextTest {
         AlterViewStatementContext actual = new 
AlterViewStatementContext(alterViewStatement);
         assertThat(actual, instanceOf(CommonSQLStatementContext.class));
         assertThat(actual.getSqlStatement(), is(alterViewStatement));
-        assertThat(actual.getSimpleTables().size(), is(2));
+        assertThat(actual.getTablesContext().getSimpleTables().size(), is(2));
     }
 }
diff --git 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/CreateIndexStatementContextTest.java
 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/CreateIndexStatementContextTest.java
index 2c722dc3248..b71d4a6be64 100644
--- 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/CreateIndexStatementContextTest.java
+++ 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/CreateIndexStatementContextTest.java
@@ -65,7 +65,7 @@ class CreateIndexStatementContextTest {
         assertThat(actual, instanceOf(CommonSQLStatementContext.class));
         assertThat(actual.getSqlStatement(), is(createIndexStatement));
         assertTrue(actual.isGeneratedIndex());
-        assertThat(actual.getSimpleTables(), is(Collections.emptyList()));
+        assertThat(actual.getTablesContext().getSimpleTables(), 
is(Collections.emptyList()));
         assertThat(actual.getIndexes(), is(Collections.emptyList()));
         when(createIndexStatement.getIndex()).thenReturn(new IndexSegment(0, 
0, new IndexNameSegment(0, 0, new IdentifierValue("index_2"))));
         CreateIndexStatementContext actual2 = new 
CreateIndexStatementContext(createIndexStatement);
diff --git 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/CreateTableStatementContextTest.java
 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/CreateTableStatementContextTest.java
index 003181d1177..5b5334cf851 100644
--- 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/CreateTableStatementContextTest.java
+++ 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/CreateTableStatementContextTest.java
@@ -35,7 +35,6 @@ import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.sql92.ddl.SQL9
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerCreateTableStatement;
 import org.junit.jupiter.api.Test;
 
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.Optional;
 import java.util.stream.Collectors;
@@ -87,7 +86,6 @@ class CreateTableStatementContextTest {
         
when(constraintDefinition.getReferencedTable()).thenReturn(Optional.of(table));
         
when(createTableStatement.getConstraintDefinitions()).thenReturn(Collections.singletonList(constraintDefinition));
         assertThat(actual.getSqlStatement(), is(createTableStatement));
-        assertThat(actual.getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toList()), 
is(Arrays.asList("tbl_1", "tbl_1", "tbl_1")));
         when(constraintDefinition.getIndexName()).thenReturn(Optional.of(new 
IndexSegment(0, 0, new IndexNameSegment(0, 0, new 
IdentifierValue("index_1")))));
         assertThat(actual.getIndexes().stream().map(each -> 
each.getIndexName().getIdentifier().getValue()).collect(Collectors.toList()), 
is(Collections.singletonList("index_1")));
         assertThat(actual.getConstraints().stream().map(each -> 
each.getIdentifier().getValue()).collect(Collectors.toList()), 
is(Collections.singletonList("fk_1")));
diff --git 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/DropIndexStatementContextTest.java
 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/DropIndexStatementContextTest.java
index 3526b06164a..7c1f6b5e30b 100644
--- 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/DropIndexStatementContextTest.java
+++ 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/DropIndexStatementContextTest.java
@@ -72,7 +72,7 @@ class DropIndexStatementContextTest {
         DropIndexStatementContext actual = new 
DropIndexStatementContext(dropIndexStatement);
         assertThat(actual, instanceOf(CommonSQLStatementContext.class));
         assertThat(actual.getSqlStatement(), is(dropIndexStatement));
-        assertThat(actual.getSimpleTables(), is(Collections.emptyList()));
+        assertThat(actual.getTablesContext().getSimpleTables(), 
is(Collections.emptyList()));
         assertThat(actual.getIndexes().stream().map(each -> 
each.getIndexName().getIdentifier().getValue()).collect(Collectors.toList()), 
is(Arrays.asList("idx_1", "idx_2")));
     }
 }
diff --git 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/DropTableStatementContextTest.java
 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/DropTableStatementContextTest.java
index 412c2ebec3f..05306f48c2f 100644
--- 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/DropTableStatementContextTest.java
+++ 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/DropTableStatementContextTest.java
@@ -30,7 +30,6 @@ import 
org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.
 import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
-import java.util.stream.Collectors;
 
 import static org.hamcrest.CoreMatchers.instanceOf;
 import static org.hamcrest.CoreMatchers.is;
@@ -72,6 +71,5 @@ class DropTableStatementContextTest {
         when(dropTableStatement.getTables()).thenReturn(Arrays.asList(table1, 
table2));
         assertThat(actual, instanceOf(CommonSQLStatementContext.class));
         assertThat(actual.getSqlStatement(), is(dropTableStatement));
-        assertThat(actual.getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toList()), 
is(Arrays.asList("tbl_1", "tbl_2")));
     }
 }
diff --git 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/PrepareStatementContextTest.java
 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/PrepareStatementContextTest.java
index a497cf3bb8a..f1afa9f302a 100644
--- 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/PrepareStatementContextTest.java
+++ 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/PrepareStatementContextTest.java
@@ -69,7 +69,7 @@ class PrepareStatementContextTest {
         PrepareStatementContext actual = new 
PrepareStatementContext(prepareStatement);
         assertThat(actual, instanceOf(CommonSQLStatementContext.class));
         assertThat(actual.getSqlStatement(), is(prepareStatement));
-        assertThat(actual.getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toList()),
+        
assertThat(actual.getTablesContext().getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toList()),
                 is(Arrays.asList("tbl_1", "tbl_1", "tbl_1", "tbl_1")));
     }
     
diff --git 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/TruncateStatementContextTest.java
 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/TruncateStatementContextTest.java
index 47670e98d83..e58b3552b88 100644
--- 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/TruncateStatementContextTest.java
+++ 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/ddl/TruncateStatementContextTest.java
@@ -66,6 +66,6 @@ class TruncateStatementContextTest {
         TruncateStatementContext actual = new 
TruncateStatementContext(truncateStatement);
         assertThat(actual, instanceOf(CommonSQLStatementContext.class));
         assertThat(actual.getSqlStatement(), is(truncateStatement));
-        assertThat(actual.getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toList()), 
is(Arrays.asList("tbl_1", "tbl_2")));
+        
assertThat(actual.getTablesContext().getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toList()), 
is(Arrays.asList("tbl_1", "tbl_2")));
     }
 }
diff --git 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dml/DeleteStatementContextTest.java
 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dml/DeleteStatementContextTest.java
index 8c8702147a2..171d6dc4501 100644
--- 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dml/DeleteStatementContextTest.java
+++ 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dml/DeleteStatementContextTest.java
@@ -87,6 +87,6 @@ class DeleteStatementContextTest {
         DeleteStatementContext actual = new 
DeleteStatementContext(deleteStatement);
         assertThat(actual.getTablesContext().getTableNames(), is(new 
HashSet<>(Arrays.asList("tbl_1", "tbl_2"))));
         assertThat(actual.getWhereSegments(), 
is(Collections.singletonList(whereSegment)));
-        assertThat(actual.getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toList()), 
is(Arrays.asList("tbl_1", "tbl_2")));
+        
assertThat(actual.getTablesContext().getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toList()), 
is(Arrays.asList("tbl_1", "tbl_2")));
     }
 }
diff --git 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dml/InsertStatementContextTest.java
 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dml/InsertStatementContextTest.java
index 02ede0d9bb4..8e1a9dc58c4 100644
--- 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dml/InsertStatementContextTest.java
+++ 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dml/InsertStatementContextTest.java
@@ -195,8 +195,8 @@ class InsertStatementContextTest {
     
     private void assertInsertStatementContext(final InsertStatementContext 
actual) {
         assertThat(actual.getTablesContext().getTableNames(), is(new 
HashSet<>(Collections.singleton("tbl"))));
-        assertThat(actual.getSimpleTables().size(), is(1));
-        SimpleTableSegment simpleTableSegment = 
actual.getSimpleTables().iterator().next();
+        assertThat(actual.getTablesContext().getSimpleTables().size(), is(1));
+        SimpleTableSegment simpleTableSegment = 
actual.getTablesContext().getSimpleTables().iterator().next();
         assertThat(simpleTableSegment.getTableName().getStartIndex(), is(0));
         assertThat(simpleTableSegment.getTableName().getStopIndex(), is(0));
         
assertThat(simpleTableSegment.getTableName().getIdentifier().getValue(), 
is("tbl"));
diff --git 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dml/SelectStatementContextTest.java
 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dml/SelectStatementContextTest.java
index dfe17d10bba..576ba073e47 100644
--- 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dml/SelectStatementContextTest.java
+++ 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dml/SelectStatementContextTest.java
@@ -404,7 +404,7 @@ class SelectStatementContextTest {
         selectStatement.setProjections(new ProjectionsSegment(0, 0));
         SelectStatementContext actual = new 
SelectStatementContext(createShardingSphereMetaData(database), 
Collections.emptyList(), selectStatement, DefaultDatabase.LOGIC_NAME);
         assertThat(actual.getTablesContext().getTableNames(), 
is(Collections.emptySet()));
-        assertThat(actual.getSimpleTables(), is(Collections.emptyList()));
+        assertThat(actual.getTablesContext().getSimpleTables(), 
is(Collections.emptyList()));
         assertThat(actual.getGroupByContext().getItems(), 
is(Collections.emptyList()));
         assertThat(actual.getWhereSegments(), 
is(Collections.singletonList(whereSegment)));
     }
diff --git 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dml/UpdateStatementContextTest.java
 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dml/UpdateStatementContextTest.java
index 4ec830005d3..bf53d5e1c14 100644
--- 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dml/UpdateStatementContextTest.java
+++ 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/dml/UpdateStatementContextTest.java
@@ -69,6 +69,7 @@ class UpdateStatementContextTest {
         UpdateStatementContext actual = new 
UpdateStatementContext(updateStatement);
         assertThat(actual.getTablesContext().getTableNames(), is(new 
HashSet<>(Arrays.asList("tbl_1", "tbl_2"))));
         assertThat(actual.getWhereSegments(), 
is(Collections.singletonList(whereSegment)));
-        assertThat(actual.getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toList()), 
is(Arrays.asList("tbl_1", "tbl_2", "tbl_2")));
+        
assertThat(actual.getTablesContext().getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toList()),
+                is(Arrays.asList("tbl_1", "tbl_2", "tbl_2")));
     }
 }
diff --git 
a/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/generator/generic/RemoveTokenGenerator.java
 
b/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/generator/generic/RemoveTokenGenerator.java
index 45e91e98132..023c25b5ce0 100644
--- 
a/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/generator/generic/RemoveTokenGenerator.java
+++ 
b/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/generator/generic/RemoveTokenGenerator.java
@@ -76,7 +76,7 @@ public final class RemoveTokenGenerator implements 
CollectionSQLTokenGenerator<S
     
     private Collection<RemoveToken> generateTableAvailableSQLTokens(final 
TableAvailable tableAvailable) {
         Collection<RemoveToken> result = new LinkedList<>();
-        for (SimpleTableSegment each : tableAvailable.getSimpleTables()) {
+        for (SimpleTableSegment each : 
tableAvailable.getTablesContext().getSimpleTables()) {
             if (!each.getOwner().isPresent()) {
                 continue;
             }
diff --git 
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/metadata/generator/PipelineDDLGenerator.java
 
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/metadata/generator/PipelineDDLGenerator.java
index 90c3c82f2ce..27a61ef4cc9 100644
--- 
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/metadata/generator/PipelineDDLGenerator.java
+++ 
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/metadata/generator/PipelineDDLGenerator.java
@@ -152,7 +152,7 @@ public final class PipelineDDLGenerator {
     }
     
     private void appendFromTable(final Map<SQLSegment, String> replaceMap, 
final String targetTableName, final TableAvailable sqlStatementContext) {
-        for (SimpleTableSegment each : sqlStatementContext.getSimpleTables()) {
+        for (SimpleTableSegment each : 
sqlStatementContext.getTablesContext().getSimpleTables()) {
             if 
(!targetTableName.equals(each.getTableName().getIdentifier().getValue())) {
                 replaceMap.put(each.getTableName(), targetTableName);
             }
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/ProxySQLExecutor.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/ProxySQLExecutor.java
index 825ca28b8e4..15a8692688e 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/ProxySQLExecutor.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/ProxySQLExecutor.java
@@ -156,8 +156,8 @@ public final class ProxySQLExecutor {
     }
     
     private String getTableName(final ExecutionContext executionContext) {
-        return executionContext.getSqlStatementContext() instanceof 
TableAvailable && !((TableAvailable) 
executionContext.getSqlStatementContext()).getSimpleTables().isEmpty()
-                ? ((TableAvailable) 
executionContext.getSqlStatementContext()).getSimpleTables().iterator().next().getTableName().getIdentifier().getValue()
+        return executionContext.getSqlStatementContext() instanceof 
TableAvailable && !((TableAvailable) 
executionContext.getSqlStatementContext()).getTablesContext().getSimpleTables().isEmpty()
+                ? ((TableAvailable) 
executionContext.getSqlStatementContext()).getTablesContext().getSimpleTables().iterator().next().getTableName().getIdentifier().getValue()
                 : "unknown_table";
     }
     
diff --git 
a/proxy/backend/type/hbase/src/main/java/org/apache/shardingsphere/proxy/backend/hbase/converter/type/HBaseRegionReloadOperationConverter.java
 
b/proxy/backend/type/hbase/src/main/java/org/apache/shardingsphere/proxy/backend/hbase/converter/type/HBaseRegionReloadOperationConverter.java
index e5ea1e157e2..e3bda6c32ff 100644
--- 
a/proxy/backend/type/hbase/src/main/java/org/apache/shardingsphere/proxy/backend/hbase/converter/type/HBaseRegionReloadOperationConverter.java
+++ 
b/proxy/backend/type/hbase/src/main/java/org/apache/shardingsphere/proxy/backend/hbase/converter/type/HBaseRegionReloadOperationConverter.java
@@ -19,7 +19,6 @@ package 
org.apache.shardingsphere.proxy.backend.hbase.converter.type;
 
 import lombok.RequiredArgsConstructor;
 import 
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
-import 
org.apache.shardingsphere.infra.binder.context.statement.dal.FlushStatementContext;
 import org.apache.shardingsphere.proxy.backend.hbase.bean.HBaseOperation;
 import 
org.apache.shardingsphere.proxy.backend.hbase.converter.HBaseOperationConverter;
 import 
org.apache.shardingsphere.proxy.backend.hbase.converter.operation.HBaseRegionReloadOperation;
@@ -37,7 +36,7 @@ public final class HBaseRegionReloadOperationConverter 
implements HBaseOperation
     
     @Override
     public HBaseOperation convert() {
-        List<String> tables = ((FlushStatementContext) 
sqlStatementContext).getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toList());
+        List<String> tables = 
sqlStatementContext.getTablesContext().getSimpleTables().stream().map(each -> 
each.getTableName().getIdentifier().getValue()).collect(Collectors.toList());
         return new HBaseOperation(String.join(",", tables), new 
HBaseRegionReloadOperation());
     }
 }

Reply via email to