protected String getPkDataFor(CsvData data, Column column) { String[] values = data.getParsedData(CsvData.PK_DATA); if (values != null) { Column[] columns = targetTable.getColumns(); int index = -1; for (Column column2 : columns) { if (column2.isPrimaryKey()) { index++; } if (column2.equals(column)) { return values[index]; } } } else { return data.getParsedData(CsvData.ROW_DATA)[targetTable.getColumnIndex(column)]; } return null; }
@Override protected Table readTable(Connection connection, DatabaseMetaDataWrapper metaData, Map<String, Object> values) throws SQLException { Table table = super.readTable(connection, metaData, values); if (table != null) { // PostgreSQL also returns unique indices for non-pk auto-increment // columns which are of the form "[table]_[column]_key" HashMap<String,IIndex> uniquesByName = new HashMap<String,IIndex>(); for (int indexIdx = 0; indexIdx < table.getIndexCount(); indexIdx++) { IIndex index = table.getIndex(indexIdx); if (index.isUnique() && (index.getName() != null)) { uniquesByName.put(index.getName(), index); } } for (int columnIdx = 0; columnIdx < table.getColumnCount(); columnIdx++) { Column column = table.getColumn(columnIdx); if (column.isAutoIncrement() && !column.isPrimaryKey()) { String indexName = table.getName() + "_" + column.getName() + "_key"; if (uniquesByName.containsKey(indexName)) { table.removeIndex((IIndex) uniquesByName.get(indexName)); uniquesByName.remove(indexName); } } } } setPrimaryKeyConstraintName(connection, table); return table; }
needsUpdated = !column.isPrimaryKey() || !StringUtils.equals(rowData[columnIndex], getPkDataFor(data, column));
protected void removeInternalForeignKeyIndex(Connection connection, DatabaseMetaDataWrapper metaData, Table table, ForeignKey fk) throws SQLException { List<String> columnNames = new ArrayList<String>(); boolean mustBeUnique = !getPlatformInfo().isSystemForeignKeyIndicesAlwaysNonUnique(); for (int columnIdx = 0; columnIdx < fk.getReferenceCount(); columnIdx++) { String name = fk.getReference(columnIdx).getLocalColumnName(); Column localColumn = table.findColumn(name, getPlatform().getDdlBuilder() .isDelimitedIdentifierModeOn()); if (mustBeUnique && !localColumn.isPrimaryKey()) { mustBeUnique = false; } columnNames.add(name); } for (int indexIdx = 0; indexIdx < table.getIndexCount();) { IIndex index = table.getIndex(indexIdx); if ((mustBeUnique == index.isUnique()) && matches(index, columnNames) && isInternalForeignKeyIndex(connection, metaData, table, fk, index)) { fk.setAutoIndexPresent(true); table.removeIndex(indexIdx); } else { indexIdx++; } } }
if (columns[i].isPrimaryKey() || localFkRefColumns.contains(columns[i].getName())) { values[i] = row.getString(columns[i].getName()); } else {
Column[] columns = trigger.filterExcludedColumns(table.getColumns()); for (Column column : columns) { foundPk |= column.isPrimaryKey();