void retrievePrimaryKey(final MutableTable table) throws SQLException { MetadataResultSet results = null; try { results = new MetadataResultSet( getMetaData() .getPrimaryKeys( unquotedName(table.getSchema().getCatalogName()), unquotedName(table.getSchema().getSchemaName()), unquotedName(table.getName()))); MutablePrimaryKey primaryKey; while (results.next()) { // "TABLE_CAT", "TABLE_SCHEM", "TABLE_NAME" final String columnName = quotedName(results.getString("COLUMN_NAME")); final String primaryKeyName = quotedName(results.getString("PK_NAME")); final int keySequence = Integer.parseInt(results.getString("KEY_SEQ")); primaryKey = table.getPrimaryKey(); if (primaryKey == null) { primaryKey = new MutablePrimaryKey(table, primaryKeyName); } // Register primary key information final MutableColumn column = table.getColumn(columnName); if (column != null) { column.setPartOfPrimaryKey(true); final MutableIndexColumn indexColumn = new MutableIndexColumn(primaryKey, column); indexColumn.setSortSequence(IndexColumnSortSequence.ascending); indexColumn.setIndexOrdinalPosition(keySequence); // primaryKey.addColumn(indexColumn); } table.setPrimaryKey(primaryKey); } } catch (final SQLException e) { throw new SchemaCrawlerSQLException("Could not retrieve primary keys for table " + table, e); } finally { if (results != null) { results.close(); } } }