Repository: tajo
Updated Branches:
  refs/heads/branch-0.11.1 17c3cb3ef -> c07c5ae6d


TAJO-1972: Invalid sort order with NULLS FIRST|LAST.


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

Branch: refs/heads/branch-0.11.1
Commit: c07c5ae6da43715a812854bbf7c8ec9b55ab25dc
Parents: 17c3cb3
Author: Jihoon Son <[email protected]>
Authored: Mon Nov 9 19:09:45 2015 +0900
Committer: Jihoon Son <[email protected]>
Committed: Mon Nov 9 19:09:45 2015 +0900

----------------------------------------------------------------------
 CHANGES                                              |  2 ++
 .../java/org/apache/tajo/plan/logical/SortNode.java  |  2 +-
 .../org/apache/tajo/storage/BaseTupleComparator.java | 15 ++++++---------
 .../org/apache/tajo/storage/TestTupleComparator.java | 12 ++++++------
 4 files changed, 15 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tajo/blob/c07c5ae6/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 58c0abe..40fbad7 100644
--- a/CHANGES
+++ b/CHANGES
@@ -12,6 +12,8 @@ Release 0.11.1 - unreleased
 
   BUG FIXES
 
+    TAJO-1972: Invalid sort order with NULLS FIRST|LAST. (jihoon)
+
     TAJO-1964: TestKillQuery::testKillQueryFromInitState causes NPE. (jinho)
 
     TAJO-1578: User configuration for pull server port is ignored.

http://git-wip-us.apache.org/repos/asf/tajo/blob/c07c5ae6/tajo-plan/src/main/java/org/apache/tajo/plan/logical/SortNode.java
----------------------------------------------------------------------
diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/logical/SortNode.java 
b/tajo-plan/src/main/java/org/apache/tajo/plan/logical/SortNode.java
index 5157d45..a31ec5a 100644
--- a/tajo-plan/src/main/java/org/apache/tajo/plan/logical/SortNode.java
+++ b/tajo-plan/src/main/java/org/apache/tajo/plan/logical/SortNode.java
@@ -28,7 +28,7 @@ import org.apache.tajo.plan.PlanString;
 import org.apache.tajo.util.TUtil;
 
 public final class SortNode extends UnaryNode implements Cloneable {
-  public static enum SortPurpose {
+  public enum SortPurpose {
     NORMAL,
     STORAGE_SPECIFIED
   }

http://git-wip-us.apache.org/repos/asf/tajo/blob/c07c5ae6/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/BaseTupleComparator.java
----------------------------------------------------------------------
diff --git 
a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/BaseTupleComparator.java
 
b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/BaseTupleComparator.java
index b25b2fd..6e0d6c2 100644
--- 
a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/BaseTupleComparator.java
+++ 
b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/BaseTupleComparator.java
@@ -25,6 +25,8 @@ import org.apache.tajo.catalog.SortSpec;
 import org.apache.tajo.common.ProtoObject;
 import org.apache.tajo.datum.Datum;
 
+import java.util.Arrays;
+
 import static 
org.apache.tajo.catalog.proto.CatalogProtos.TupleComparatorSpecProto;
 import static org.apache.tajo.index.IndexProtos.TupleComparatorProto;
 
@@ -116,14 +118,9 @@ public class BaseTupleComparator extends TupleComparator 
implements ProtoObject<
       if (left.isNull() || right.isNull()) {
         if (!left.equals(right)) {
           if (left.isNull()) {
-            compVal = 1;
-          } else if (right.isNull()) {
-            compVal = -1;
-          }
-          if (compVal != 0) {
-            if ((nullFirsts[i] && asc[i]) || (!nullFirsts[i] && !asc[i])) {
-              compVal *= -1;
-            }
+            compVal = nullFirsts[i] ? -1 : 1;
+          } else {
+            compVal = nullFirsts[i] ? 1 : -1;
           }
         } else {
           compVal = 0;
@@ -145,7 +142,7 @@ public class BaseTupleComparator extends TupleComparator 
implements ProtoObject<
 
   @Override
   public int hashCode() {
-    return Objects.hashCode(sortKeyIds);
+    return Arrays.hashCode(sortSpecs);
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/tajo/blob/c07c5ae6/tajo-storage/tajo-storage-common/src/test/java/org/apache/tajo/storage/TestTupleComparator.java
----------------------------------------------------------------------
diff --git 
a/tajo-storage/tajo-storage-common/src/test/java/org/apache/tajo/storage/TestTupleComparator.java
 
b/tajo-storage/tajo-storage-common/src/test/java/org/apache/tajo/storage/TestTupleComparator.java
index 9eec96f..3917242 100644
--- 
a/tajo-storage/tajo-storage-common/src/test/java/org/apache/tajo/storage/TestTupleComparator.java
+++ 
b/tajo-storage/tajo-storage-common/src/test/java/org/apache/tajo/storage/TestTupleComparator.java
@@ -110,9 +110,9 @@ public class TestTupleComparator {
     BaseTupleComparator descComp = new BaseTupleComparator(schema, new 
SortSpec[]{sortSpecDesc});
     Collections.sort(tupleList, descComp);
 
-    assertEquals(tuple3, tupleList.get(0));
-    assertEquals(tuple1, tupleList.get(1));
-    assertEquals(nullTuple, tupleList.get(2));
+    assertEquals(nullTuple, tupleList.get(0));
+    assertEquals(tuple3, tupleList.get(1));
+    assertEquals(tuple1, tupleList.get(2));
   }
 
   @Test
@@ -152,8 +152,8 @@ public class TestTupleComparator {
 
     Collections.sort(tupleList, descComp);
 
-    assertEquals(nullTuple, tupleList.get(0));
-    assertEquals(tuple3, tupleList.get(1));
-    assertEquals(tuple1, tupleList.get(2));
+    assertEquals(tuple3, tupleList.get(0));
+    assertEquals(tuple1, tupleList.get(1));
+    assertEquals(nullTuple, tupleList.get(2));
   }
 }

Reply via email to