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