You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by me...@apache.org on 2026/08/17 07:06:29 UTC
(shardingsphere) branch master updated: Use database default schema in ShowTableMetaDataExecutor (#39492)
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 <me...@gmail.com>
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;
}