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;
}