Github user Ben-Zvi commented on a diff in the pull request: https://github.com/apache/drill/pull/1057#discussion_r157646058 --- Diff: exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/svremover/CopierTemplate2.java --- @@ -53,17 +51,32 @@ public int copyRecords(int index, int recordCount) throws SchemaChangeException } } - int outgoingPosition = 0; + return insertRecords(0, index, recordCount); + } + + @Override + public int appendRecord(int index) throws SchemaChangeException { + return appendRecords(index, 1); + } + + @Override + public int appendRecords(int index, int recordCount) throws SchemaChangeException { + return insertRecords(outgoing.getRecordCount(), index, recordCount); + } + + private int insertRecords(int outgoingPosition, int index, int recordCount) throws SchemaChangeException { + final int endIndex = index + recordCount; - for(int svIndex = index; svIndex < index + recordCount; svIndex++, outgoingPosition++){ + for(int svIndex = index; svIndex < endIndex; svIndex++, outgoingPosition++){ doEval(sv2.getIndex(svIndex), outgoingPosition); } + + outgoing.setRecordCount(outgoingPosition); return outgoingPosition; } - public abstract void doSetup(@Named("context") FragmentContext context, - @Named("incoming") RecordBatch incoming, - @Named("outgoing") RecordBatch outgoing) + public abstract void doSetup(@Named("incoming") RecordBatch incoming, + @Named("outgoing") VectorContainer outgoing) --- End diff -- As the "generated code" methods are replaced with "in line" methods, we should remove these abstract signatures (both *doSetup* and *doEval*) to avoid generating code, and to distinguish these methods. Maybe we should _rename_ them as well to make the distinction clear. Then probably also eliminate the "code generation" code in **getGenerated2Copier()** and **getGenerated4Copier()**.
---