diff --git a/symmetric/symmetric-core/src/main/java/org/jumpmind/symmetric/model/IncomingError.java b/symmetric/symmetric-core/src/main/java/org/jumpmind/symmetric/model/IncomingError.java index 544baf012d..33c3387fa4 100644 --- a/symmetric/symmetric-core/src/main/java/org/jumpmind/symmetric/model/IncomingError.java +++ b/symmetric/symmetric-core/src/main/java/org/jumpmind/symmetric/model/IncomingError.java @@ -48,6 +48,8 @@ public class IncomingError implements Serializable { private String columnNames; + private String primaryKeyColumnNames; + private CsvData csvData = new CsvData(); private boolean resolveIgnore = false; @@ -212,4 +214,12 @@ public void setColumnNames(String columnNames) { this.columnNames = columnNames; } + public String getPrimaryKeyColumnNames() { + return primaryKeyColumnNames; + } + + public void setPrimaryKeyColumnNames(String primaryKeyColumnNames) { + this.primaryKeyColumnNames = primaryKeyColumnNames; + } + } diff --git a/symmetric/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataLoaderService.java b/symmetric/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataLoaderService.java index a64afd0422..d0cd8da803 100644 --- a/symmetric/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataLoaderService.java +++ b/symmetric/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataLoaderService.java @@ -517,7 +517,8 @@ public void insertIncomingError(IncomingError incomingError) { incomingError.getNodeId(), incomingError.getFailedRowNumber(), incomingError.getFailedLineNumber(), incomingError.getTargetCatalogName(), incomingError.getTargetSchemaName(), incomingError.getTargetTableName(), - incomingError.getEventType().getCode(), incomingError.getColumnNames(), incomingError.getRowData(), + incomingError.getEventType().getCode(), incomingError.getColumnNames(), + incomingError.getPrimaryKeyColumnNames(), incomingError.getRowData(), incomingError.getOldData(), incomingError.getResolveData(), incomingError.getResolveData(), incomingError.getCreateTime(), incomingError.getLastUpdateBy(), incomingError.getLastUpdateTime()); @@ -573,6 +574,7 @@ public IncomingError mapRow(Row rs) { incomingError.setTargetTableName(rs.getString("target_table_name")); incomingError.setEventType(DataEventType.getEventType(rs.getString("event_type"))); incomingError.setColumnNames(rs.getString("column_names")); + incomingError.setPrimaryKeyColumnNames(rs.getString("pk_column_names")); incomingError.setRowData(rs.getString("row_data")); incomingError.setOldData(rs.getString("old_data")); incomingError.setResolveData(rs.getString("resolve_data")); @@ -736,6 +738,7 @@ public void batchInError(DataContext context, Exception ex) { error.setBatchId(this.currentBatch.getBatchId()); error.setNodeId(this.currentBatch.getNodeId()); error.setColumnNames(Table.getCommaDeliminatedColumns(context.getTable().getColumns())); + error.setPrimaryKeyColumnNames(Table.getCommaDeliminatedColumns(context.getTable().getPrimaryKeyColumns())); error.setCsvData(context.getData()); error.setEventType(context.getData().getDataEventType()); error.setFailedLineNumber(this.currentBatch.getFailedLineNumber()); diff --git a/symmetric/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataLoaderServiceSqlMap.java b/symmetric/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataLoaderServiceSqlMap.java index 6993ca2a48..feb72572f1 100644 --- a/symmetric/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataLoaderServiceSqlMap.java +++ b/symmetric/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataLoaderServiceSqlMap.java @@ -40,12 +40,12 @@ public class DataLoaderServiceSqlMap extends AbstractSqlMap { putSql("selectIncomingErrorSql", "select batch_id, node_id, failed_row_number, failed_line_number, target_catalog_name, target_schema_name, " + - "target_table_name, event_type, column_names, row_data, old_data, resolve_data, resolve_ignore, " + + "target_table_name, event_type, column_names, pk_column_names, row_data, old_data, resolve_data, resolve_ignore, " + "create_time, last_update_by, last_update_time from $(incoming_error) where batch_id = ? and node_id = ?"); putSql("selectCurrentIncomingErrorSql", "select e.batch_id, e.node_id, e.failed_row_number, e.failed_line_number, e.target_catalog_name, e.target_schema_name, " + - "e.target_table_name, e.event_type, e.column_names, e.row_data, e.old_data, e.resolve_data, e.resolve_ignore, " + + "e.target_table_name, e.event_type, e.column_names, e.pk_column_names, e.row_data, e.old_data, e.resolve_data, e.resolve_ignore, " + "e.create_time, e.last_update_by, e.last_update_time " + "from $(incoming_error) e inner join $(incoming_batch) b on b.batch_id = e.batch_id " + "and b.node_id = e.node_id and b.failed_row_number = e.failed_row_number " + @@ -54,8 +54,8 @@ public class DataLoaderServiceSqlMap extends AbstractSqlMap { putSql("insertIncomingErrorSql", "insert into $(incoming_error) " + "(batch_id, node_id, failed_row_number, failed_line_number, target_catalog_name, target_schema_name, " + - "target_table_name, event_type, column_names, row_data, old_data, resolve_data, resolve_ignore, " + - "create_time, last_update_by, last_update_time) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); + "target_table_name, event_type, column_names, pk_column_names, row_data, old_data, resolve_data, resolve_ignore, " + + "create_time, last_update_by, last_update_time) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); putSql("updateIncomingErrorSql", "update $(incoming_error) set resolve_data = ?, resolve_ignore = ? " + diff --git a/symmetric/symmetric-core/src/main/resources/symmetric-schema.xml b/symmetric/symmetric-core/src/main/resources/symmetric-schema.xml index ee01e8d9c6..534f23af74 100644 --- a/symmetric/symmetric-core/src/main/resources/symmetric-schema.xml +++ b/symmetric/symmetric-core/src/main/resources/symmetric-schema.xml @@ -457,6 +457,7 @@ +