fix(gaussdb): support M-mode type metadata

This commit is contained in:
Andrew authored and GitHub committed 2026-08-12 02:05:54 +08:00
1 parent dbe3375739
commit 26bb10dad0
13 files changed
+904 -146

No files matched your search

@@ -115,7 +115,7 @@ public abstract class ConfiguredJdbcAgent extends AbstractJdbcAgent {
@Override
public List<IndexInfo> listIndexes(String schema, String table) {
return StandardJdbcMetadata.INSTANCE.listIndexes(requireConnection(), schema, table);
return StandardJdbcMetadata.INSTANCE.listIndexes(requireConnection(), profile, configuredDatabase, schema, table);
}
@Override
@@ -207,12 +207,28 @@ public final class StandardJdbcMetadata {
});
}
public List<IndexInfo> listIndexes(Connection conn, String schema, String table) {
public List<IndexInfo> listIndexes(
Connection conn,
JdbcAgentProfile profile,
String configuredDatabase,
String schema,
String table
) {
return unchecked(() -> {
List<IndexInfo> result = listIndexesInternal(conn, null, schema, table);
if (result.isEmpty() && profile.getCatalogFallbackEnabled() && hasConfiguredDatabase(configuredDatabase)) {
result = listIndexesInternal(conn, configuredDatabase, schema, table);
}
return result;
});
}
private List<IndexInfo> listIndexesInternal(Connection conn, String catalog, String schema, String table) {
return unchecked(() -> {
DatabaseMetaData meta = conn.getMetaData();
Map<String, List<IndexColumn>> indexes = new LinkedHashMap<>();
Map<String, Boolean> unique = new LinkedHashMap<>();
try (ResultSet rs = meta.getIndexInfo(null, blankToNull(schema), table, false, false)) {
try (ResultSet rs = meta.getIndexInfo(blankToNull(catalog), blankToNull(schema), table, false, false)) {
while (rs.next()) {
String name = rs.getString("INDEX_NAME");
String column = rs.getString("COLUMN_NAME");