fix(metadata): scope schemas to current catalog

Closes #8461
This commit is contained in:
t8y2 committed 2026-09-09 12:13:16 +08:00
1 parent 271ed56a00
commit 776d01199c
3 files changed
+45 -2

No files matched your search

@@ -47,7 +47,7 @@ public abstract class ConfiguredJdbcAgent extends AbstractJdbcAgent {
@Override
public List<String> listSchemas() {
return StandardJdbcMetadata.INSTANCE.listSchemas(requireConnection(), profile);
return StandardJdbcMetadata.INSTANCE.listSchemas(requireConnection(), profile, configuredDatabase);
}
@Override
@@ -42,11 +42,23 @@ public final class StandardJdbcMetadata {
}
public List<String> listSchemas(Connection conn, JdbcAgentProfile profile) {
return listSchemas(conn, profile, null);
}
public List<String> listSchemas(Connection conn, JdbcAgentProfile profile, String configuredCatalog) {
return unchecked(() -> {
Set<String> names = new LinkedHashSet<>();
DatabaseMetaData meta = conn.getMetaData();
String catalog = blankToNull(configuredCatalog);
try {
appendSchemas(names, meta.getSchemas(null, null));
String currentCatalog = conn.getCatalog();
if (currentCatalog != null && !currentCatalog.trim().isEmpty()) {
catalog = currentCatalog.trim();
}
} catch (Exception | AbstractMethodError ignored) {
}
try {
appendSchemas(names, meta.getSchemas(catalog, null));
} catch (Exception | AbstractMethodError first) {
try {
appendSchemas(names, meta.getSchemas());