diff --git a/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/writer/SimpleStagingDataWriter.java b/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/writer/SimpleStagingDataWriter.java index 6e34940ce9..0bca155eaf 100644 --- a/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/writer/SimpleStagingDataWriter.java +++ b/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/writer/SimpleStagingDataWriter.java @@ -79,7 +79,6 @@ public void process() throws IOException { IStagedResource resource = null; String line = null; long startTime = System.currentTimeMillis(), ts = startTime, lineCount = 0; - while (reader.readRecord()) { line = reader.getRawRecord(); @@ -175,7 +174,23 @@ public void process() throws IOException { } else if (line.startsWith(CsvConstants.CHANNEL)) { channelLine = line; } else { - int size = line.length(); + TableLine batchLine = batchTableLines.get(tableLine); + if (batchLine == null || (batchLine != null && batchLine.columnsLine == null)) { + TableLine syncLine = syncTableLines.get(tableLine); + if (syncLine != null) { + log.debug("Injecting keys and columns to be backwards compatible"); + if (batchLine == null) { + batchLine = syncLine; + batchTableLines.put(batchLine, batchLine); + writeLine(batchLine.tableLine); + } + batchLine.keysLine = syncLine.keysLine; + writeLine(syncLine.keysLine); + batchLine.columnsLine = syncLine.columnsLine; + writeLine(syncLine.columnsLine); + } + } + int size = line.length(); if (size > MAX_WRITE_LENGTH) { log.debug("Exceeded max line length with {}", size); for (int i = 0; i < size; i = i + MAX_WRITE_LENGTH) {