@Override protected void loadUniqueKeys(DefaultRelations r) throws SQLException { for (Record record : create() .select( concat(SYSTABLE.TABLE_NAME, val("__"), SYSIDX.INDEX_NAME).as("indexName"), SYSTABLE.TABLE_NAME, SYSTABCOL.COLUMN_NAME) .from(SYSIDX) .join(SYSIDXCOL) .on(SYSIDX.TABLE_ID.equal(SYSIDXCOL.TABLE_ID)) .and(SYSIDX.INDEX_ID.equal(SYSIDXCOL.INDEX_ID)) .join(SYSTABLE) .on(SYSIDXCOL.TABLE_ID.equal(SYSTABLE.TABLE_ID)) .join(SYSTABCOL) .on(SYSIDXCOL.TABLE_ID.equal(SYSTABCOL.TABLE_ID)) .and(SYSIDXCOL.COLUMN_ID.equal(SYSTABCOL.COLUMN_ID)) .where(SYSIDX.INDEX_CATEGORY.equal((byte) 3)) .and(SYSIDX.UNIQUE.equal((byte) 2)) .orderBy(SYSIDXCOL.SEQUENCE) .fetch()) { String key = record.getValue("indexName", String.class); String tableName = record.getValue(SYSTABLE.TABLE_NAME); String columnName = record.getValue(SYSTABCOL.COLUMN_NAME); TableDefinition table = getTable(getSchema(), tableName); if (table != null) { r.addUniqueKey(key, table.getColumn(columnName)); } } }
@Override protected void loadUniqueKeys(DefaultRelations relations) throws SQLException { for (Record record : fetchKeys("UNIQUE")) { SchemaDefinition schema = getSchema(record.getValue(KeyColumnUsage.TABLE_SCHEMA)); String constraintName = record.getValue(KeyColumnUsage.CONSTRAINT_NAME); String tableName = record.getValue(KeyColumnUsage.TABLE_NAME); String columnName = record.getValue(KeyColumnUsage.COLUMN_NAME); String key = getKeyName(tableName, constraintName); TableDefinition table = getTable(schema, tableName); if (table != null) { relations.addUniqueKey(key, table.getColumn(columnName)); } } }
@Override protected void loadUniqueKeys(DefaultRelations relations) throws SQLException { for (Record record : fetchKeys(false)) { SchemaDefinition schema = getSchema(record.get(Statistics.TABLE_SCHEMA)); String constraintName = record.get(Statistics.INDEX_NAME); String tableName = record.get(Statistics.TABLE_NAME); String columnName = record.get(Statistics.COLUMN_NAME); String key = getKeyName(tableName, constraintName); TableDefinition table = getTable(schema, tableName); if (table != null) { relations.addUniqueKey(key, table.getColumn(columnName)); } } }