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)); } }
