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

zhangliang 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 adcdc9e6960 Merge ShardingSphereSchema.getAllTableNames and 
getAllTables (#33849)
adcdc9e6960 is described below

commit adcdc9e6960c9de7c20d21405263ed0130cd1da4
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Nov 30 18:26:02 2024 +0800

    Merge ShardingSphereSchema.getAllTableNames and getAllTables (#33849)
---
 .../sql/util/ShardingSupportedCheckUtils.java      |  2 +-
 .../sharding/rewrite/token/pojo/IndexToken.java    |  7 +++---
 .../ddl/ShardingDropIndexRouteContextChecker.java  |  7 +++---
 .../ShardingAlterIndexSupportedCheckerTest.java    |  9 +++-----
 .../ddl/ShardingDropIndexSupportedCheckerTest.java |  7 +++---
 .../rewrite/token/pojo/IndexTokenTest.java         |  8 ++++++-
 .../ShardingDropIndexRouteContextCheckerTest.java  |  6 +++--
 .../ShardingTableBroadcastRouteEngineTest.java     |  9 +++++---
 .../database/schema/util/IndexMetaDataUtils.java   |  7 +++---
 .../schema/model/ShardingSphereSchemaTest.java     |  8 -------
 .../pipeline/cdc/util/CDCSchemaTableUtils.java     | 26 +++++++++++++---------
 .../schema/SingleDropSchemaSupportedChecker.java   |  2 +-
 .../executor/utils/StatisticsAssembleUtils.java    |  4 ++--
 .../index/AlterIndexStatementSchemaRefresher.java  |  2 +-
 .../StandaloneMetaDataManagerPersistService.java   | 18 ++++++++-------
 .../ral/queryable/ShowTableMetaDataExecutor.java   |  4 ++--
 16 files changed, 66 insertions(+), 60 deletions(-)

diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/checker/sql/util/ShardingSupportedCheckUtils.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/checker/sql/util/ShardingSupportedCheckUtils.java
index 90ce84fd319..d3a6123c356 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/checker/sql/util/ShardingSupportedCheckUtils.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/checker/sql/util/ShardingSupportedCheckUtils.java
@@ -42,7 +42,7 @@ public final class ShardingSupportedCheckUtils {
      * @return whether schema contains index or not
      */
     public static boolean isSchemaContainsIndex(final ShardingSphereSchema 
schema, final IndexSegment index) {
-        return schema.getAllTableNames().stream().anyMatch(each -> 
schema.getTable(each).containsIndex(index.getIndexName().getIdentifier().getValue()));
+        return schema.getAllTables().stream().anyMatch(each -> 
each.containsIndex(index.getIndexName().getIdentifier().getValue()));
     }
     
     /**
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/IndexToken.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/IndexToken.java
index ea5c4aa6d25..6bf399f7a9b 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/IndexToken.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/IndexToken.java
@@ -21,6 +21,7 @@ import lombok.Getter;
 import 
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
 import 
org.apache.shardingsphere.infra.binder.context.statement.ddl.CreateIndexStatementContext;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
+import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.util.IndexMetaDataUtils;
 import 
org.apache.shardingsphere.infra.rewrite.sql.token.common.pojo.RouteUnitAware;
 import org.apache.shardingsphere.infra.rewrite.sql.token.common.pojo.SQLToken;
@@ -79,9 +80,9 @@ public final class IndexToken extends SQLToken implements 
Substitutable, RouteUn
     }
     
     private Optional<String> findLogicTableNameFromMetaData(final String 
logicIndexName) {
-        for (String each : schema.getAllTableNames()) {
-            if (schema.getTable(each).containsIndex(logicIndexName)) {
-                return Optional.of(each);
+        for (ShardingSphereTable each : schema.getAllTables()) {
+            if (each.containsIndex(logicIndexName)) {
+                return Optional.of(each.getName());
             }
         }
         return Optional.empty();
diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/checker/ddl/ShardingDropIndexRouteContextChecker.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/checker/ddl/ShardingDropIndexRouteContextChecker.java
index cadc11463fa..23d3ab11805 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/checker/ddl/ShardingDropIndexRouteContextChecker.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/checker/ddl/ShardingDropIndexRouteContextChecker.java
@@ -21,6 +21,7 @@ import 
org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
+import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
 import org.apache.shardingsphere.infra.route.context.RouteContext;
 import org.apache.shardingsphere.infra.session.query.QueryContext;
 import 
org.apache.shardingsphere.sharding.checker.sql.util.ShardingSupportedCheckUtils;
@@ -49,10 +50,8 @@ public final class ShardingDropIndexRouteContextChecker 
implements ShardingRoute
         } else {
             String defaultSchemaName = new 
DatabaseTypeRegistry(queryContext.getSqlStatementContext().getDatabaseType()).getDefaultSchemaName(database.getName());
             for (IndexSegment each : indexSegments) {
-                ShardingSphereSchema schema = each.getOwner().map(optional -> 
optional.getIdentifier().getValue())
-                        .map(database::getSchema).orElseGet(() -> 
database.getSchema(defaultSchemaName));
-                logicTableName =
-                        schema.getAllTableNames().stream().filter(tableName -> 
schema.getTable(tableName).containsIndex(each.getIndexName().getIdentifier().getValue())).findFirst();
+                ShardingSphereSchema schema = each.getOwner().map(optional -> 
optional.getIdentifier().getValue()).map(database::getSchema).orElseGet(() -> 
database.getSchema(defaultSchemaName));
+                logicTableName = schema.getAllTables().stream().filter(table 
-> 
table.containsIndex(each.getIndexName().getIdentifier().getValue())).findFirst().map(ShardingSphereTable::getName);
                 logicTableName.ifPresent(optional -> 
validateDropIndexRouteUnit(shardingRule, routeContext, indexSegments, 
optional));
             }
         }
diff --git 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/checker/sql/ddl/ShardingAlterIndexSupportedCheckerTest.java
 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/checker/sql/ddl/ShardingAlterIndexSupportedCheckerTest.java
index 6bfba6b808d..52b9691129a 100644
--- 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/checker/sql/ddl/ShardingAlterIndexSupportedCheckerTest.java
+++ 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/checker/sql/ddl/ShardingAlterIndexSupportedCheckerTest.java
@@ -58,8 +58,7 @@ class ShardingAlterIndexSupportedCheckerTest {
         sqlStatement.setRenameIndex(new IndexSegment(0, 0, new 
IndexNameSegment(0, 0, new IdentifierValue("t_order_index_new"))));
         ShardingSphereTable table = mock(ShardingSphereTable.class);
         ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
-        
when(schema.getAllTableNames()).thenReturn(Collections.singletonList("t_order"));
-        when(schema.getTable("t_order")).thenReturn(table);
+        when(schema.getAllTables()).thenReturn(Collections.singleton(table));
         when(table.containsIndex("t_order_index")).thenReturn(true);
         when(table.containsIndex("t_order_index_new")).thenReturn(false);
         assertDoesNotThrow(() -> new 
ShardingAlterIndexSupportedChecker().check(shardingRule, database, schema, new 
AlterIndexStatementContext(sqlStatement, DefaultDatabase.LOGIC_NAME)));
@@ -71,7 +70,6 @@ class ShardingAlterIndexSupportedCheckerTest {
         sqlStatement.setIndex(new IndexSegment(0, 0, new IndexNameSegment(0, 
0, new IdentifierValue("t_order_index"))));
         sqlStatement.setRenameIndex(new IndexSegment(0, 0, new 
IndexNameSegment(0, 0, new IdentifierValue("t_order_index_new"))));
         ShardingSphereTable table = mock(ShardingSphereTable.class);
-        
when(database.getSchema("public").getAllTableNames()).thenReturn(Collections.singletonList("t_order"));
         
when(database.getSchema("public").getTable("t_order")).thenReturn(table);
         assertThrows(IndexNotExistedException.class, () -> new 
ShardingAlterIndexSupportedChecker().check(shardingRule, database, 
mock(ShardingSphereSchema.class),
                 new AlterIndexStatementContext(sqlStatement, 
DefaultDatabase.LOGIC_NAME)));
@@ -82,10 +80,9 @@ class ShardingAlterIndexSupportedCheckerTest {
         PostgreSQLAlterIndexStatement sqlStatement = new 
PostgreSQLAlterIndexStatement();
         sqlStatement.setIndex(new IndexSegment(0, 0, new IndexNameSegment(0, 
0, new IdentifierValue("t_order_index"))));
         sqlStatement.setRenameIndex(new IndexSegment(0, 0, new 
IndexNameSegment(0, 0, new IdentifierValue("t_order_index_new"))));
-        ShardingSphereTable table = mock(ShardingSphereTable.class);
         ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
-        
when(schema.getAllTableNames()).thenReturn(Collections.singletonList("t_order"));
-        when(schema.getTable("t_order")).thenReturn(table);
+        ShardingSphereTable table = mock(ShardingSphereTable.class);
+        when(schema.getAllTables()).thenReturn(Collections.singleton(table));
         when(table.containsIndex("t_order_index")).thenReturn(true);
         when(table.containsIndex("t_order_index_new")).thenReturn(true);
         assertThrows(DuplicateIndexException.class,
diff --git 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/checker/sql/ddl/ShardingDropIndexSupportedCheckerTest.java
 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/checker/sql/ddl/ShardingDropIndexSupportedCheckerTest.java
index 43bcadd40d9..f298c0de897 100644
--- 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/checker/sql/ddl/ShardingDropIndexSupportedCheckerTest.java
+++ 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/checker/sql/ddl/ShardingDropIndexSupportedCheckerTest.java
@@ -55,10 +55,9 @@ class ShardingDropIndexSupportedCheckerTest {
         PostgreSQLDropIndexStatement sqlStatement = new 
PostgreSQLDropIndexStatement(false);
         sqlStatement.getIndexes().add(new IndexSegment(0, 0, new 
IndexNameSegment(0, 0, new IdentifierValue("t_order_index"))));
         sqlStatement.getIndexes().add(new IndexSegment(0, 0, new 
IndexNameSegment(0, 0, new IdentifierValue("t_order_index_new"))));
-        ShardingSphereTable table = mock(ShardingSphereTable.class);
         ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
-        
when(schema.getAllTableNames()).thenReturn(Collections.singletonList("t_order"));
-        when(schema.getTable("t_order")).thenReturn(table);
+        ShardingSphereTable table = mock(ShardingSphereTable.class);
+        when(schema.getAllTables()).thenReturn(Collections.singleton(table));
         when(table.containsIndex("t_order_index")).thenReturn(true);
         when(table.containsIndex("t_order_index_new")).thenReturn(true);
         assertDoesNotThrow(() -> new 
ShardingDropIndexSupportedChecker().check(shardingRule, database, schema, new 
DropIndexStatementContext(sqlStatement, DefaultDatabase.LOGIC_NAME)));
@@ -70,7 +69,7 @@ class ShardingDropIndexSupportedCheckerTest {
         sqlStatement.getIndexes().add(new IndexSegment(0, 0, new 
IndexNameSegment(0, 0, new IdentifierValue("t_order_index"))));
         sqlStatement.getIndexes().add(new IndexSegment(0, 0, new 
IndexNameSegment(0, 0, new IdentifierValue("t_order_index_new"))));
         ShardingSphereTable table = mock(ShardingSphereTable.class);
-        
when(database.getSchema("public").getAllTableNames()).thenReturn(Collections.singletonList("t_order"));
+        
when(database.getSchema("public").getAllTables()).thenReturn(Collections.singleton(table));
         
when(database.getSchema("public").getTable("t_order")).thenReturn(table);
         assertThrows(IndexNotExistedException.class,
                 () -> new 
ShardingDropIndexSupportedChecker().check(shardingRule, database, 
mock(ShardingSphereSchema.class), new DropIndexStatementContext(sqlStatement, 
DefaultDatabase.LOGIC_NAME)));
diff --git 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/IndexTokenTest.java
 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/IndexTokenTest.java
index 2d778e5a2d9..b1e20f6d9e9 100644
--- 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/IndexTokenTest.java
+++ 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/IndexTokenTest.java
@@ -22,6 +22,7 @@ import 
org.apache.shardingsphere.infra.binder.context.statement.ddl.CreateIndexS
 import 
org.apache.shardingsphere.infra.binder.context.statement.dml.SelectStatementContext;
 import org.apache.shardingsphere.infra.database.core.DefaultDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
+import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
 import org.apache.shardingsphere.infra.route.context.RouteMapper;
 import org.apache.shardingsphere.infra.route.context.RouteUnit;
 import org.apache.shardingsphere.sharding.rule.ShardingRule;
@@ -71,7 +72,12 @@ class IndexTokenTest {
     
     private ShardingSphereSchema mockSchema() {
         ShardingSphereSchema result = mock(ShardingSphereSchema.class, 
RETURNS_DEEP_STUBS);
-        when(result.getAllTableNames()).thenReturn(Arrays.asList("no_tbl", 
"foo_tbl"));
+        ShardingSphereTable table1 = mock(ShardingSphereTable.class);
+        when(table1.getName()).thenReturn("no_tbl");
+        ShardingSphereTable table2 = mock(ShardingSphereTable.class);
+        when(table2.getName()).thenReturn("foo_tbl");
+        when(table2.containsIndex("foo_idx")).thenReturn(true);
+        when(result.getAllTables()).thenReturn(Arrays.asList(table1, table2));
         
when(result.getTable("foo_tbl").containsIndex("foo_idx")).thenReturn(true);
         return result;
     }
diff --git 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/checker/ddl/ShardingDropIndexRouteContextCheckerTest.java
 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/checker/ddl/ShardingDropIndexRouteContextCheckerTest.java
index 21fa1aaa3d5..c35d7007b4a 100644
--- 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/checker/ddl/ShardingDropIndexRouteContextCheckerTest.java
+++ 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/checker/ddl/ShardingDropIndexRouteContextCheckerTest.java
@@ -70,7 +70,8 @@ class ShardingDropIndexRouteContextCheckerTest {
         sqlStatement.getIndexes().add(new IndexSegment(0, 0, new 
IndexNameSegment(0, 0, new IdentifierValue("t_order_index"))));
         sqlStatement.getIndexes().add(new IndexSegment(0, 0, new 
IndexNameSegment(0, 0, new IdentifierValue("t_order_index_new"))));
         ShardingSphereTable table = mock(ShardingSphereTable.class);
-        
when(database.getSchema("public").getAllTableNames()).thenReturn(Collections.singletonList("t_order"));
+        when(table.getName()).thenReturn("t_order");
+        
when(database.getSchema("public").getAllTables()).thenReturn(Collections.singleton(table));
         
when(database.getSchema("public").getTable("t_order")).thenReturn(table);
         when(table.containsIndex("t_order_index")).thenReturn(true);
         when(shardingRule.isShardingTable("t_order")).thenReturn(true);
@@ -89,7 +90,8 @@ class ShardingDropIndexRouteContextCheckerTest {
         sqlStatement.getIndexes().add(new IndexSegment(0, 0, new 
IndexNameSegment(0, 0, new IdentifierValue("t_order_index"))));
         sqlStatement.getIndexes().add(new IndexSegment(0, 0, new 
IndexNameSegment(0, 0, new IdentifierValue("t_order_index_new"))));
         ShardingSphereTable table = mock(ShardingSphereTable.class);
-        
when(database.getSchema("public").getAllTableNames()).thenReturn(Collections.singletonList("t_order"));
+        when(table.getName()).thenReturn("t_order");
+        
when(database.getSchema("public").getAllTables()).thenReturn(Collections.singleton(table));
         
when(database.getSchema("public").getTable("t_order")).thenReturn(table);
         when(table.containsIndex("t_order_index")).thenReturn(true);
         when(shardingRule.isShardingTable("t_order")).thenReturn(true);
diff --git 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/broadcast/ShardingTableBroadcastRouteEngineTest.java
 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/broadcast/ShardingTableBroadcastRouteEngineTest.java
index 3357d2e1568..8ba6026c290 100644
--- 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/broadcast/ShardingTableBroadcastRouteEngineTest.java
+++ 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/broadcast/ShardingTableBroadcastRouteEngineTest.java
@@ -29,6 +29,7 @@ import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaData;
 import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
+import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
 import org.apache.shardingsphere.infra.route.context.RouteContext;
 import org.apache.shardingsphere.infra.route.context.RouteMapper;
 import org.apache.shardingsphere.infra.route.context.RouteUnit;
@@ -85,7 +86,10 @@ class ShardingTableBroadcastRouteEngineTest {
     @Test
     void assertRouteForDropIndexStatement() {
         ShardingSphereSchema schema = mock(ShardingSphereSchema.class, 
RETURNS_DEEP_STUBS);
-        
when(schema.getAllTableNames()).thenReturn(Collections.singleton("t_order"));
+        ShardingSphereTable table = mock(ShardingSphereTable.class);
+        when(table.getName()).thenReturn("t_order");
+        when(table.containsIndex("t_order")).thenReturn(true);
+        when(schema.getAllTables()).thenReturn(Collections.singleton(table));
         
when(schema.getTable(anyString()).containsIndex(anyString())).thenReturn(true);
         IndexSegment segment = mock(IndexSegment.class, RETURNS_DEEP_STUBS);
         
when(segment.getIndexName().getIdentifier().getValue()).thenReturn("t_order");
@@ -96,8 +100,7 @@ class ShardingTableBroadcastRouteEngineTest {
         when(sqlStatementContext.getDatabaseType()).thenReturn(databaseType);
         when(((IndexAvailable) 
sqlStatementContext).getIndexes()).thenReturn(Collections.singletonList(segment));
         Map<String, ShardingSphereSchema> schemas = 
Collections.singletonMap(DefaultDatabase.LOGIC_NAME, schema);
-        ShardingSphereDatabase database = new 
ShardingSphereDatabase(DefaultDatabase.LOGIC_NAME,
-                databaseType, mock(ResourceMetaData.class), 
mock(RuleMetaData.class), schemas);
+        ShardingSphereDatabase database = new 
ShardingSphereDatabase(DefaultDatabase.LOGIC_NAME, databaseType, 
mock(ResourceMetaData.class), mock(RuleMetaData.class), schemas);
         ShardingTableBroadcastRouteEngine shardingTableBroadcastRouteEngine = 
new ShardingTableBroadcastRouteEngine(database, sqlStatementContext, 
tableNames);
         RouteContext routeContext = 
shardingTableBroadcastRouteEngine.route(createShardingRule());
         assertThat(routeContext.getActualDataSourceNames().size(), is(2));
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/util/IndexMetaDataUtils.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/util/IndexMetaDataUtils.java
index d6de79b216e..0a9eee33eca 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/util/IndexMetaDataUtils.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/util/IndexMetaDataUtils.java
@@ -25,6 +25,7 @@ import 
org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.metadata.database.schema.QualifiedTable;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
+import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.index.IndexSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.column.ColumnSegment;
 
@@ -99,9 +100,9 @@ public final class IndexMetaDataUtils {
     }
     
     private static Optional<String> findLogicTableNameFromMetaData(final 
ShardingSphereSchema schema, final String logicIndexName) {
-        for (String each : schema.getAllTableNames()) {
-            if (schema.getTable(each).containsIndex(logicIndexName)) {
-                return Optional.of(each);
+        for (ShardingSphereTable each : schema.getAllTables()) {
+            if (each.containsIndex(logicIndexName)) {
+                return Optional.of(each.getName());
             }
         }
         return Optional.empty();
diff --git 
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereSchemaTest.java
 
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereSchemaTest.java
index 84ce48d1f8e..5ba04348813 100644
--- 
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereSchemaTest.java
+++ 
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereSchemaTest.java
@@ -21,7 +21,6 @@ import 
org.apache.shardingsphere.infra.database.core.DefaultDatabase;
 import org.junit.jupiter.api.Test;
 
 import java.util.Collections;
-import java.util.HashSet;
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
@@ -32,13 +31,6 @@ import static org.mockito.Mockito.when;
 
 class ShardingSphereSchemaTest {
     
-    @Test
-    void assertGetAllTableNames() {
-        ShardingSphereTable table = mock(ShardingSphereTable.class);
-        when(table.getName()).thenReturn("tbl");
-        assertThat(new ShardingSphereSchema(DefaultDatabase.LOGIC_NAME, 
Collections.singleton(table), Collections.emptyList()).getAllTableNames(), 
is(new HashSet<>(Collections.singleton("tbl"))));
-    }
-    
     @Test
     void assertGetTable() {
         ShardingSphereTable table = mock(ShardingSphereTable.class);
diff --git 
a/kernel/data-pipeline/scenario/cdc/core/src/main/java/org/apache/shardingsphere/data/pipeline/cdc/util/CDCSchemaTableUtils.java
 
b/kernel/data-pipeline/scenario/cdc/core/src/main/java/org/apache/shardingsphere/data/pipeline/cdc/util/CDCSchemaTableUtils.java
index 95bc0727ec5..654955097e8 100644
--- 
a/kernel/data-pipeline/scenario/cdc/core/src/main/java/org/apache/shardingsphere/data/pipeline/cdc/util/CDCSchemaTableUtils.java
+++ 
b/kernel/data-pipeline/scenario/cdc/core/src/main/java/org/apache/shardingsphere/data/pipeline/cdc/util/CDCSchemaTableUtils.java
@@ -24,11 +24,12 @@ import 
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDa
 import 
org.apache.shardingsphere.infra.database.core.metadata.database.system.DialectSystemDatabase;
 import 
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
+import 
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
 import 
org.apache.shardingsphere.infra.exception.kernel.metadata.SchemaNotFoundException;
 import 
org.apache.shardingsphere.infra.exception.kernel.metadata.TableNotFoundException;
-import 
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
+import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
 
 import java.util.Collection;
 import java.util.Collections;
@@ -38,6 +39,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * CDC schema table utility class.
@@ -80,9 +82,8 @@ public final class CDCSchemaTableUtils {
         Map<String, Set<String>> result = new 
HashMap<>(database.getSchemas().size(), 1F);
         for (Entry<String, ShardingSphereSchema> entry : 
database.getSchemas().entrySet()) {
             if (!systemSchemas.contains(entry.getKey())) {
-                entry.getValue().getAllTableNames().forEach(each -> 
result.computeIfAbsent(entry.getKey(), ignored -> new HashSet<>()).add(each));
+                entry.getValue().getAllTables().forEach(each -> 
result.computeIfAbsent(entry.getKey(), ignored -> new 
HashSet<>()).add(each.getName()));
             }
-            
         }
         return result;
     }
@@ -91,20 +92,23 @@ public final class CDCSchemaTableUtils {
         Map<String, Set<String>> result = new 
HashMap<>(database.getSchemas().size(), 1F);
         for (Entry<String, ShardingSphereSchema> entry : 
database.getSchemas().entrySet()) {
             if (!systemSchemas.contains(entry.getKey())) {
-                entry.getValue().getAllTableNames().stream().filter(each -> 
each.equals(table.getTable())).findFirst()
-                        .ifPresent(optional -> 
result.computeIfAbsent(entry.getKey(), ignored -> new 
HashSet<>()).add(optional));
+                entry.getValue().getAllTables().stream().filter(each -> 
each.getName().equals(table.getTable())).findFirst()
+                        .ifPresent(optional -> 
result.computeIfAbsent(entry.getKey(), ignored -> new 
HashSet<>()).add(optional.getName()));
             }
         }
         return result;
     }
     
-    private static Map<String, Set<String>> 
parseTableExpressionWithAllTable(final ShardingSphereDatabase database, final 
SchemaTable each) {
+    private static Map<String, Set<String>> 
parseTableExpressionWithAllTable(final ShardingSphereDatabase database, final 
SchemaTable schemaTable) {
         DialectDatabaseMetaData dialectDatabaseMetaData = new 
DatabaseTypeRegistry(database.getProtocolType()).getDialectDatabaseMetaData();
-        String schemaName = each.getSchema().isEmpty() ? 
dialectDatabaseMetaData.getDefaultSchema().orElseThrow(() -> new 
IllegalStateException("Default schema should exist.")) : each.getSchema();
+        String schemaName = schemaTable.getSchema().isEmpty()
+                ? dialectDatabaseMetaData.getDefaultSchema().orElseThrow(() -> 
new IllegalStateException("Default schema should exist."))
+                : schemaTable.getSchema();
         ShardingSphereSchema schema = database.getSchema(schemaName);
-        ShardingSpherePreconditions.checkNotNull(schema, () -> new 
SchemaNotFoundException(each.getSchema()));
-        Map<String, Set<String>> result = new 
HashMap<>(schema.getAllTableNames().size(), 1F);
-        schema.getAllTableNames().forEach(tableName -> 
result.computeIfAbsent(schemaName, ignored -> new HashSet<>()).add(tableName));
+        ShardingSpherePreconditions.checkNotNull(schema, () -> new 
SchemaNotFoundException(schemaTable.getSchema()));
+        Collection<ShardingSphereTable> tables = schema.getAllTables();
+        Map<String, Set<String>> result = new HashMap<>(tables.size(), 1F);
+        tables.forEach(each -> result.computeIfAbsent(schemaName, ignored -> 
new HashSet<>()).add(each.getName()));
         return result;
     }
     
@@ -117,7 +121,7 @@ public final class CDCSchemaTableUtils {
      */
     public static Collection<String> parseTableExpressionWithoutSchema(final 
ShardingSphereDatabase database, final List<String> tableNames) {
         ShardingSphereSchema schema = database.getSchema(database.getName());
-        Set<String> allTableNames = null == schema ? Collections.emptySet() : 
new HashSet<>(schema.getAllTableNames());
+        Set<String> allTableNames = null == schema ? Collections.emptySet() : 
new 
HashSet<>(schema.getAllTables().stream().map(ShardingSphereTable::getName).collect(Collectors.toSet()));
         return tableNames.stream().anyMatch("*"::equals) ? allTableNames : new 
HashSet<>(tableNames);
     }
 }
diff --git 
a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/checker/sql/schema/SingleDropSchemaSupportedChecker.java
 
b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/checker/sql/schema/SingleDropSchemaSupportedChecker.java
index c8ab2bf4800..50262062a94 100644
--- 
a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/checker/sql/schema/SingleDropSchemaSupportedChecker.java
+++ 
b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/checker/sql/schema/SingleDropSchemaSupportedChecker.java
@@ -46,7 +46,7 @@ public final class SingleDropSchemaSupportedChecker 
implements SupportedSQLCheck
             String schemaName = each.getValue();
             ShardingSphereSchema schema = database.getSchema(schemaName);
             ShardingSpherePreconditions.checkNotNull(schema, () -> new 
SchemaNotFoundException(schemaName));
-            ShardingSpherePreconditions.checkState(containsCascade || 
schema.getAllTableNames().isEmpty(), () -> new 
DropNotEmptySchemaException(schemaName));
+            ShardingSpherePreconditions.checkState(containsCascade || 
schema.getAllTables().isEmpty(), () -> new 
DropNotEmptySchemaException(schemaName));
         }
     }
 }
diff --git 
a/kernel/sql-federation/executor/src/main/java/org/apache/shardingsphere/sqlfederation/executor/utils/StatisticsAssembleUtils.java
 
b/kernel/sql-federation/executor/src/main/java/org/apache/shardingsphere/sqlfederation/executor/utils/StatisticsAssembleUtils.java
index 5c4b0f43074..a8f3db81cbe 100644
--- 
a/kernel/sql-federation/executor/src/main/java/org/apache/shardingsphere/sqlfederation/executor/utils/StatisticsAssembleUtils.java
+++ 
b/kernel/sql-federation/executor/src/main/java/org/apache/shardingsphere/sqlfederation/executor/utils/StatisticsAssembleUtils.java
@@ -73,10 +73,10 @@ public final class StatisticsAssembleUtils {
     
     private static void assembleOpenGaussTableData(final 
ShardingSphereTableData tableData, final Map<String, ShardingSphereSchema> 
schemas) {
         for (Entry<String, ShardingSphereSchema> entry : schemas.entrySet()) {
-            for (String each : entry.getValue().getAllTableNames()) {
+            for (ShardingSphereTable each : entry.getValue().getAllTables()) {
                 Object[] rows = new Object[10];
                 rows[0] = entry.getKey();
-                rows[1] = each;
+                rows[1] = each.getName();
                 tableData.getRows().add(new 
ShardingSphereRowData(Arrays.asList(rows)));
             }
         }
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/index/AlterIndexStatementSchemaRefresher.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/index/AlterIndexStatementSchemaRefresher.java
index 9f6cc68119c..f0501f1aff0 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/index/AlterIndexStatementSchemaRefresher.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/refresher/type/index/AlterIndexStatementSchemaRefresher.java
@@ -62,7 +62,7 @@ public final class AlterIndexStatementSchemaRefresher 
implements MetaDataRefresh
     }
     
     private Optional<String> findLogicTableName(final ShardingSphereSchema 
schema, final String indexName) {
-        return schema.getAllTableNames().stream().filter(each -> 
schema.getTable(each).containsIndex(indexName)).findFirst();
+        return schema.getAllTables().stream().filter(each -> 
each.containsIndex(indexName)).findFirst().map(ShardingSphereTable::getName);
     }
     
     private ShardingSphereTable newShardingSphereTable(final 
ShardingSphereTable table) {
diff --git 
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/StandaloneMetaDataManagerPersistService.java
 
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/StandaloneMetaDataManagerPersistService.java
index 09abed96a5a..6de859597db 100644
--- 
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/StandaloneMetaDataManagerPersistService.java
+++ 
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/StandaloneMetaDataManagerPersistService.java
@@ -57,6 +57,7 @@ import java.util.LinkedList;
 import java.util.Map;
 import java.util.Optional;
 import java.util.Properties;
+import java.util.stream.Collectors;
 
 /**
  * Standalone meta data manager persist service.
@@ -119,15 +120,15 @@ public final class 
StandaloneMetaDataManagerPersistService implements MetaDataMa
     private void putSchemaMetaData(final ShardingSphereDatabase database, 
final String schemaName, final String renameSchemaName, final String 
logicDataSourceName) {
         ShardingSphereSchema schema = database.getSchema(schemaName);
         database.addSchema(renameSchemaName, schema);
-        addDataNode(database, logicDataSourceName, schemaName, 
schema.getAllTableNames());
+        addDataNode(database, logicDataSourceName, schemaName, 
schema.getAllTables());
     }
     
-    private void addDataNode(final ShardingSphereDatabase database, final 
String logicDataSourceName, final String schemaName, final Collection<String> 
tobeAddedTableNames) {
-        tobeAddedTableNames.forEach(each -> {
-            if (!Strings.isNullOrEmpty(logicDataSourceName) && 
TableRefreshUtils.isSingleTable(each, database)) {
-                
database.getRuleMetaData().getAttributes(MutableDataNodeRuleAttribute.class).forEach(rule
 -> rule.put(logicDataSourceName, schemaName, each));
+    private void addDataNode(final ShardingSphereDatabase database, final 
String logicDataSourceName, final String schemaName, final 
Collection<ShardingSphereTable> tobeAddedTables) {
+        for (ShardingSphereTable each : tobeAddedTables) {
+            if (!Strings.isNullOrEmpty(logicDataSourceName) && 
TableRefreshUtils.isSingleTable(each.getName(), database)) {
+                
database.getRuleMetaData().getAttributes(MutableDataNodeRuleAttribute.class).forEach(rule
 -> rule.put(logicDataSourceName, schemaName, each.getName()));
             }
-        });
+        }
     }
     
     private void addDataNode(final ShardingSphereDatabase database, final 
String logicDataSourceName, final String schemaName, final 
Collection<ShardingSphereTable> toBeAddedTables,
@@ -159,7 +160,8 @@ public final class StandaloneMetaDataManagerPersistService 
implements MetaDataMa
     private void removeSchemaMetaData(final ShardingSphereDatabase database, 
final String schemaName) {
         ShardingSphereSchema schema = new ShardingSphereSchema(schemaName, 
database.getSchema(schemaName).getAllTables(), 
database.getSchema(schemaName).getAllViews());
         database.dropSchema(schemaName);
-        
removeDataNode(database.getRuleMetaData().getAttributes(MutableDataNodeRuleAttribute.class),
 Collections.singletonList(schemaName), schema.getAllTableNames());
+        
removeDataNode(database.getRuleMetaData().getAttributes(MutableDataNodeRuleAttribute.class),
 Collections.singleton(schemaName),
+                
schema.getAllTables().stream().map(ShardingSphereTable::getName).collect(Collectors.toSet()));
     }
     
     private void removeDataNode(final Collection<MutableDataNodeRuleAttribute> 
ruleAttributes, final Collection<String> schemaNames, final Collection<String> 
tobeRemovedTables) {
@@ -196,7 +198,7 @@ public final class StandaloneMetaDataManagerPersistService 
implements MetaDataMa
         for (String each : schemaNames) {
             ShardingSphereSchema schema = new ShardingSphereSchema(each, 
database.getSchema(each).getAllTables(), 
database.getSchema(each).getAllViews());
             database.dropSchema(each);
-            Optional.of(schema).ifPresent(optional -> 
tobeRemovedTables.addAll(optional.getAllTableNames()));
+            Optional.of(schema).ifPresent(optional -> 
tobeRemovedTables.addAll(optional.getAllTables().stream().map(ShardingSphereTable::getName).collect(Collectors.toSet())));
             tobeRemovedSchemas.add(each.toLowerCase());
         }
         
removeDataNode(database.getRuleMetaData().getAttributes(MutableDataNodeRuleAttribute.class),
 new HashSet<>(tobeRemovedSchemas), new HashSet<>(tobeRemovedTables));
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowTableMetaDataExecutor.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowTableMetaDataExecutor.java
index 69f6cf61c7b..d727832d01f 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowTableMetaDataExecutor.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowTableMetaDataExecutor.java
@@ -52,8 +52,8 @@ public final class ShowTableMetaDataExecutor implements 
DistSQLQueryExecutor<Sho
     public Collection<LocalDataQueryResultRow> getRows(final 
ShowTableMetaDataStatement sqlStatement, final ContextManager contextManager) {
         String defaultSchema = new 
DatabaseTypeRegistry(database.getProtocolType()).getDefaultSchemaName(database.getName());
         ShardingSphereSchema schema = database.getSchema(defaultSchema);
-        return sqlStatement.getTableNames().stream().filter(each -> 
schema.getAllTableNames().contains(each.toLowerCase()))
-                .map(each -> buildTableRows(database.getName(), schema, 
each.toLowerCase())).flatMap(Collection::stream).collect(Collectors.toList());
+        return sqlStatement.getTableNames().stream()
+                .filter(schema::containsTable).map(each -> 
buildTableRows(database.getName(), schema, 
each.toLowerCase())).flatMap(Collection::stream).collect(Collectors.toList());
     }
     
     private Collection<LocalDataQueryResultRow> buildTableRows(final String 
databaseName, final ShardingSphereSchema schema, final String tableName) {


Reply via email to