[jOOQ/jOOQ#16493] Intercept SQLFeatureNotSupportedException caused by
DatabaseMetaData::getImportedKeys and other calls
This commit is contained in:
parent
af55a0a14e
commit
f4f6dfd0bb
@ -77,7 +77,10 @@ import static org.jooq.impl.MetaSQL.M_COMMENTS;
|
||||
import static org.jooq.impl.MetaSQL.M_SEQUENCES;
|
||||
import static org.jooq.impl.MetaSQL.M_SEQUENCES_INCLUDING_SYSTEM_SEQUENCES;
|
||||
import static org.jooq.impl.MetaSQL.M_SOURCES;
|
||||
import static org.jooq.impl.SQLDataType.BIGINT;
|
||||
import static org.jooq.impl.SQLDataType.BOOLEAN;
|
||||
import static org.jooq.impl.SQLDataType.INTEGER;
|
||||
import static org.jooq.impl.SQLDataType.SMALLINT;
|
||||
import static org.jooq.impl.SQLDataType.VARCHAR;
|
||||
import static org.jooq.impl.Tools.EMPTY_OBJECT;
|
||||
import static org.jooq.impl.Tools.EMPTY_SORTFIELD;
|
||||
@ -91,6 +94,7 @@ import java.io.Serializable;
|
||||
import java.sql.DatabaseMetaData;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.SQLFeatureNotSupportedException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.EnumSet;
|
||||
import java.util.HashMap;
|
||||
@ -959,16 +963,40 @@ final class MetaImpl extends AbstractMeta {
|
||||
String.class, // TABLE_NAME
|
||||
boolean.class, // NON_UNIQUE
|
||||
String.class, // INDEX_QUALIFIER
|
||||
|
||||
String.class, // INDEX_NAME
|
||||
int.class, // TYPE
|
||||
int.class, // ORDINAL_POSITION
|
||||
String.class, // COLUMN_NAME
|
||||
String.class, // ASC_OR_DESC
|
||||
|
||||
long.class, // CARDINALITY
|
||||
long.class, // PAGES
|
||||
String.class // FILTER_CONDITION
|
||||
);
|
||||
}
|
||||
|
||||
catch (SQLFeatureNotSupportedException e) {
|
||||
log.debug("Cannot call DatabaseMetaData::getIndexInfo", e);
|
||||
|
||||
return dsl().newResult(asList(
|
||||
DSL.field("TABLE_CAT", VARCHAR),
|
||||
DSL.field("TABLE_SCHEM", VARCHAR),
|
||||
DSL.field("TABLE_NAME", VARCHAR),
|
||||
DSL.field("NON_UNIQUE", BOOLEAN),
|
||||
DSL.field("INDEX_QUALIFIER", VARCHAR),
|
||||
|
||||
DSL.field("INDEX_NAME", VARCHAR),
|
||||
DSL.field("TYPE", INTEGER),
|
||||
DSL.field("ORDINAL_POSITION", INTEGER),
|
||||
DSL.field("COLUMN_NAME", SMALLINT),
|
||||
DSL.field("ASC_OR_DESC", SMALLINT),
|
||||
|
||||
DSL.field("CARDINALITY", BIGINT),
|
||||
DSL.field("PAGES", BIGINT),
|
||||
DSL.field("FILTER_CONDITION", VARCHAR)
|
||||
));
|
||||
}
|
||||
}));
|
||||
|
||||
// Sort by INDEX_NAME (5), ORDINAL_POSITION (7)
|
||||
@ -1093,6 +1121,27 @@ final class MetaImpl extends AbstractMeta {
|
||||
String.class // PK_NAME
|
||||
);
|
||||
}
|
||||
catch (SQLFeatureNotSupportedException e) {
|
||||
log.debug("Cannot call DatabaseMetaData::getImportedKeys", e);
|
||||
|
||||
return dsl().newResult(asList(
|
||||
DSL.field("PKTABLE_CAT", VARCHAR),
|
||||
DSL.field("PKTABLE_SCHEM", VARCHAR),
|
||||
DSL.field("PKTABLE_NAME", VARCHAR),
|
||||
DSL.field("PKCOLUMN_NAME", VARCHAR),
|
||||
DSL.field("FKTABLE_CAT", VARCHAR),
|
||||
|
||||
DSL.field("FKTABLE_SCHEM", VARCHAR),
|
||||
DSL.field("FKTABLE_NAME", VARCHAR),
|
||||
DSL.field("FKCOLUMN_NAME", VARCHAR),
|
||||
DSL.field("KEY_SEQ", SMALLINT),
|
||||
DSL.field("UPDATE_RULE", SMALLINT),
|
||||
|
||||
DSL.field("DELETE_RULE", SMALLINT),
|
||||
DSL.field("FK_NAME", VARCHAR),
|
||||
DSL.field("PK_NAME", VARCHAR)
|
||||
));
|
||||
}
|
||||
});
|
||||
|
||||
Map<Record, Result<Record>> groups = result.intoGroups(new Field[] {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user