This is an automated email from the ASF dual-hosted git repository.
jianglongtao 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 e56531c5a5e Fix query some system data error when there are multiple
logical database (#34106)
e56531c5a5e is described below
commit e56531c5a5e1f1e1fae60b22f1b68e00842bdba2
Author: jiangML <[email protected]>
AuthorDate: Fri Dec 20 10:21:40 2024 +0800
Fix query some system data error when there are multiple logical database
(#34106)
---
.../admin/executor/AbstractDatabaseMetaDataExecutor.java | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/AbstractDatabaseMetaDataExecutor.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/AbstractDatabaseMetaDataExecutor.java
index dbbe100f996..95f16274eb8 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/AbstractDatabaseMetaDataExecutor.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/AbstractDatabaseMetaDataExecutor.java
@@ -29,6 +29,7 @@ import
org.apache.shardingsphere.infra.executor.sql.execute.result.query.impl.ra
import
org.apache.shardingsphere.infra.executor.sql.execute.result.query.type.memory.row.MemoryQueryResultDataRow;
import org.apache.shardingsphere.infra.merge.result.MergedResult;
import
org.apache.shardingsphere.infra.merge.result.impl.transparent.TransparentMergedResult;
+import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import
org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaData;
import
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
import org.apache.shardingsphere.infra.metadata.user.Grantee;
@@ -144,9 +145,13 @@ public abstract class AbstractDatabaseMetaDataExecutor
implements DatabaseAdminQ
@Override
protected Collection<String> getDatabaseNames(final ConnectionSession
connectionSession) {
- Optional<String> database =
ProxyContext.getInstance().getAllDatabaseNames().stream().filter(each ->
isAuthorized(each, connectionSession.getConnectionContext().getGrantee()))
-
.filter(AbstractDatabaseMetaDataExecutor::hasDataSource).findFirst();
- return
database.map(Collections::singletonList).orElse(Collections.emptyList());
+ ShardingSphereDatabase database =
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getDatabase(connectionSession.getCurrentDatabaseName());
+ if (null != database && isAuthorized(database.getName(),
connectionSession.getConnectionContext().getGrantee()) &&
AbstractDatabaseMetaDataExecutor.hasDataSource(database.getName())) {
+ return Collections.singleton(database.getName());
+ }
+ Collection<String> databaseNames =
ProxyContext.getInstance().getAllDatabaseNames().stream().filter(each ->
isAuthorized(each, connectionSession.getConnectionContext().getGrantee()))
+
.filter(AbstractDatabaseMetaDataExecutor::hasDataSource).collect(Collectors.toList());
+ return databaseNames.isEmpty() ? Collections.emptyList() :
Collections.singletonList(databaseNames.iterator().next());
}
@Override