You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by to...@apache.org on 2022/12/27 07:37:36 UTC
[shardingsphere] branch master updated: Fixes #23115 (#23116)
This is an automated email from the ASF dual-hosted git repository.
totalo 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 e7098c40bfb Fixes #23115 (#23116)
e7098c40bfb is described below
commit e7098c40bfb3c0c346437bdad2b8d76c021d0af2
Author: Raigor <ra...@gmail.com>
AuthorDate: Tue Dec 27 15:37:29 2022 +0800
Fixes #23115 (#23116)
---
.../CreateShardingTableReferenceRuleStatementUpdater.java | 2 +-
.../admin/executor/AbstractDatabaseMetaDataExecutor.java | 13 ++++++++++++-
2 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/CreateShardingTableReferenceRuleStatementUpdater.java b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/CreateShardingTableReferenceRuleStatementUpdater.java
index 13297a31556..bf513f92ec5 100644
--- a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/CreateShardingTableReferenceRuleStatementUpdater.java
+++ b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/CreateShardingTableReferenceRuleStatementUpdater.java
@@ -63,7 +63,7 @@ public final class CreateShardingTableReferenceRuleStatementUpdater implements R
}
private void checkDuplicatedRuleNames(final String databaseName, final CreateShardingTableReferenceRuleStatement sqlStatement,
- final ShardingRuleConfiguration currentRuleConfig) throws DuplicateRuleException {
+ final ShardingRuleConfiguration currentRuleConfig) throws DuplicateRuleException {
if (null != currentRuleConfig) {
Collection<String> currentRuleNames = currentRuleConfig.getBindingTableGroups().stream().map(ShardingTableReferenceRuleConfiguration::getName).collect(Collectors.toSet());
Collection<String> duplicatedRuleNames = sqlStatement.getRules().stream().map(TableReferenceRuleSegment::getName).filter(currentRuleNames::contains).collect(Collectors.toList());
diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/AbstractDatabaseMetaDataExecutor.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/AbstractDatabaseMetaDataExecutor.java
index bfe8cecb4b9..78f9e05e9da 100644
--- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/AbstractDatabaseMetaDataExecutor.java
+++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/AbstractDatabaseMetaDataExecutor.java
@@ -66,6 +66,8 @@ public abstract class AbstractDatabaseMetaDataExecutor implements DatabaseAdminQ
private final LinkedList<Map<String, Object>> rows = new LinkedList<>();
+ private final Collection<String> labels = new LinkedList<>();
+
@Override
public final void execute(final ConnectionSession connectionSession) throws SQLException {
List<String> databaseNames = getDatabaseNames(connectionSession);
@@ -79,10 +81,10 @@ public abstract class AbstractDatabaseMetaDataExecutor implements DatabaseAdminQ
}
private void handleResultSet(final String databaseName, final ResultSet resultSet) throws SQLException {
+ ResultSetMetaData metaData = resultSet.getMetaData();
while (resultSet.next()) {
Map<String, Object> rowMap = new LinkedHashMap<>();
Map<String, String> aliasMap = new LinkedHashMap<>();
- ResultSetMetaData metaData = resultSet.getMetaData();
for (int i = 1; i < metaData.getColumnCount() + 1; i++) {
aliasMap.put(metaData.getColumnName(i), metaData.getColumnLabel(i));
rowMap.put(metaData.getColumnLabel(i), resultSet.getString(i));
@@ -92,6 +94,11 @@ public abstract class AbstractDatabaseMetaDataExecutor implements DatabaseAdminQ
rows.addFirst(rowMap);
}
}
+ if (rows.isEmpty()) {
+ for (int i = 1; i < metaData.getColumnCount() + 1; i++) {
+ labels.add(metaData.getColumnLabel(i));
+ }
+ }
}
/**
@@ -139,6 +146,10 @@ public abstract class AbstractDatabaseMetaDataExecutor implements DatabaseAdminQ
}
private RawQueryResultMetaData createQueryResultMetaData() {
+ if (rows.isEmpty() && !labels.isEmpty()) {
+ List<RawQueryResultColumnMetaData> columns = labels.stream().map(each -> new RawQueryResultColumnMetaData("", each, each, Types.VARCHAR, "VARCHAR", 20, 0)).collect(Collectors.toList());
+ return new RawQueryResultMetaData(columns);
+ }
List<RawQueryResultColumnMetaData> columns = rows.stream().flatMap(each -> each.keySet().stream()).collect(Collectors.toCollection(LinkedHashSet::new))
.stream().map(each -> new RawQueryResultColumnMetaData("", each, each, Types.VARCHAR, "VARCHAR", 20, 0)).collect(Collectors.toList());
return new RawQueryResultMetaData(columns);