fix(gaussdb): support M-mode type metadata
This commit is contained in:
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");
|
||||
|
||||
Reference in new issue
Block a user