Github user Ben-Zvi commented on a diff in the pull request: https://github.com/apache/drill/pull/1057#discussion_r157612792 --- Diff: exec/java-exec/src/main/java/org/apache/drill/exec/record/VectorContainer.java --- @@ -353,6 +353,23 @@ public int getRecordCount() { public boolean hasRecordCount() { return recordCount != -1; } + /** + * This works with non-hyper {@link VectorContainer}s which have no selection vectors. + * Appends a row taken from a source {@link VectorContainer} to this {@link VectorContainer}. + * @param srcContainer The {@link VectorContainer} to copy a row from. + * @param srcIndex The index of the row to copy from the source {@link VectorContainer}. + */ + public void appendRow(VectorContainer srcContainer, int srcIndex) { + for (int vectorIndex = 0; vectorIndex < wrappers.size(); vectorIndex++) { + ValueVector destVector = wrappers.get(vectorIndex).getValueVector(); + ValueVector srcVector = srcContainer.wrappers.get(vectorIndex).getValueVector(); + + destVector.copyEntry(recordCount, srcVector, srcIndex); + } + + recordCount++; --- End diff -- (1) Need to change the initial value of *recordCount* from -1 to 0 ; (2) That "-1" is used to note "uninitialized". So need to add a boolean flag for that purpose. (3) Please change the *appendRow()* signature to return *recordCount*. (E.g., so the caller would know when the target container is full).
---