copy unmerged records in merge sort to new buffer

Project: http://git-wip-us.apache.org/repos/asf/incubator-drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-drill/commit/d616259d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-drill/tree/d616259d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-drill/diff/d616259d

Branch: refs/heads/master
Commit: d616259d30ac0fbafc56637df53207a9464bbc6e
Parents: 05c9e42
Author: Steven Phillips <[email protected]>
Authored: Thu May 22 17:27:52 2014 -0700
Committer: Jinfeng Ni <[email protected]>
Committed: Thu May 22 17:35:10 2014 -0700

----------------------------------------------------------------------
 .../drill/exec/physical/impl/xsort/MSortTemplate.java       | 9 +++++++++
 1 file changed, 9 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/d616259d/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/xsort/MSortTemplate.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/xsort/MSortTemplate.java
 
b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/xsort/MSortTemplate.java
index c54b2b7..0c98c6f 100644
--- 
a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/xsort/MSortTemplate.java
+++ 
b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/xsort/MSortTemplate.java
@@ -111,6 +111,9 @@ public abstract class MSortTemplate implements MSorter, 
IndexedSortable{
         outIndex = merge(left, right, end, outIndex);
         if (outIndex < vector4.getTotalCount()) newRunStarts.add(outIndex);
       }
+      if (outIndex < vector4.getTotalCount()) {
+        copyRun(outIndex, vector4.getTotalCount());
+      }
       SelectionVector4 tmp = aux.createNewWrapperCurrent();
       aux.clear();
       aux = this.vector4.createNewWrapperCurrent();
@@ -122,6 +125,12 @@ public abstract class MSortTemplate implements MSorter, 
IndexedSortable{
     aux.clear();
   }
 
+  private void copyRun(int start, int end) {
+    for (int i = start; i < end; i++) {
+      aux.set(i, vector4.get(i));
+    }
+  }
+
   @Override
   public void swap(int sv0, int sv1) {
     int tmp = vector4.get(sv0);

Reply via email to