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

menghaoranss 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 09daebf4a17 Use database default schema in ShowTableMetaDataExecutor 
(#39492)
09daebf4a17 is described below

commit 09daebf4a17f768dde5f3985f18b8d56da120760
Author: Haoran Meng <[email protected]>
AuthorDate: Mon Aug 17 15:06:22 2026 +0800

    Use database default schema in ShowTableMetaDataExecutor (#39492)
---
 .../ral/queryable/export/ShowTableMetaDataExecutor.java    |  9 ++++-----
 .../queryable/export/ShowTableMetaDataExecutorTest.java    | 14 ++++++++++++--
 2 files changed, 16 insertions(+), 7 deletions(-)

diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/export/ShowTableMetaDataExecutor.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/export/ShowTableMetaDataExecutor.java
index 90d23128a9f..54b8b2ef4f8 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/export/ShowTableMetaDataExecutor.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/export/ShowTableMetaDataExecutor.java
@@ -18,7 +18,6 @@
 package 
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.queryable.export;
 
 import lombok.Setter;
-import 
org.apache.shardingsphere.database.connector.core.type.DatabaseTypeRegistry;
 import 
org.apache.shardingsphere.distsql.handler.aware.DistSQLExecutorDatabaseAware;
 import 
org.apache.shardingsphere.distsql.handler.engine.query.DistSQLQueryExecutor;
 import 
org.apache.shardingsphere.distsql.statement.type.ral.queryable.show.ShowTableMetaDataStatement;
@@ -33,6 +32,7 @@ import 
org.apache.shardingsphere.sql.parser.statement.core.value.identifier.Iden
 
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.LinkedList;
 import java.util.stream.Collectors;
 
@@ -51,10 +51,9 @@ public final class ShowTableMetaDataExecutor implements 
DistSQLQueryExecutor<Sho
     
     @Override
     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(schema::containsTable).map(each -> 
buildTableRows(database.getName(), schema, 
each)).flatMap(Collection::stream).collect(Collectors.toList());
+        return database.findDefaultSchema().map(schema -> 
sqlStatement.getTableNames().stream()
+                .filter(schema::containsTable).map(each -> 
buildTableRows(database.getName(), schema, 
each)).flatMap(Collection::stream).collect(Collectors.toList()))
+                .orElseGet(Collections::emptyList);
     }
     
     private Collection<LocalDataQueryResultRow> buildTableRows(final String 
databaseName, final ShardingSphereSchema schema, final IdentifierValue 
tableName) {
diff --git 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/export/ShowTableMetaDataExecutorTest.java
 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/export/ShowTableMetaDataExecutorTest.java
index c2914c61b22..bf2fe4bb642 100644
--- 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/export/ShowTableMetaDataExecutorTest.java
+++ 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/export/ShowTableMetaDataExecutorTest.java
@@ -41,6 +41,7 @@ import org.mockito.junit.jupiter.MockitoExtension;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Iterator;
+import java.util.Optional;
 import java.util.Properties;
 
 import static org.hamcrest.MatcherAssert.assertThat;
@@ -101,11 +102,20 @@ class ShowTableMetaDataExecutorTest {
         assertThat(actual.iterator().next().getCell(2), is("T_USER_UPPER"));
     }
     
+    @Test
+    void assertExecuteWithMissingDefaultSchema() {
+        ShardingSphereDatabase database = mock(ShardingSphereDatabase.class);
+        when(database.findDefaultSchema()).thenReturn(Optional.empty());
+        ShowTableMetaDataExecutor executor = new ShowTableMetaDataExecutor();
+        executor.setDatabase(database);
+        assertTrue(executor.getRows(createSqlStatement(), 
mock(ContextManager.class)).isEmpty());
+    }
+    
     private ShardingSphereDatabase mockDatabase() {
         ShardingSphereDatabase result = mock(ShardingSphereDatabase.class, 
RETURNS_DEEP_STUBS);
-        
when(result.getProtocolType()).thenReturn(TypedSPILoader.getService(DatabaseType.class,
 "FIXTURE"));
         when(result.getName()).thenReturn("foo_db");
-        when(result.getSchema("foo_db")).thenReturn(new 
ShardingSphereSchema("foo_db", mock(DatabaseType.class), createTables(), 
Collections.emptyList()));
+        ShardingSphereSchema defaultSchema = new 
ShardingSphereSchema("foo_schema", mock(DatabaseType.class), createTables(), 
Collections.emptyList());
+        
when(result.findDefaultSchema()).thenReturn(Optional.of(defaultSchema));
         return result;
     }
     

Reply via email to