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()**.
---