You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by td...@apache.org on 2015/11/13 22:36:54 UTC
[11/12] phoenix git commit: PHOENIX-2412 Fix test failures due to use
of priority queue for merge sort (Ankit Singhal/Samarth Jain)
PHOENIX-2412 Fix test failures due to use of priority queue for merge sort (Ankit Singhal/Samarth Jain)
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/6a48b98c
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/6a48b98c
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/6a48b98c
Branch: refs/heads/txn
Commit: 6a48b98cc9b2f5c6c45a4fb21c91d08ebabf1a8d
Parents: 9343743
Author: Samarth <sa...@apache.org>
Authored: Fri Nov 13 10:15:51 2015 -0800
Committer: Samarth <sa...@apache.org>
Committed: Fri Nov 13 10:15:51 2015 -0800
----------------------------------------------------------------------
.../iterate/MergeSortResultIterator.java | 80 +++++++++-----------
1 file changed, 34 insertions(+), 46 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/6a48b98c/phoenix-core/src/main/java/org/apache/phoenix/iterate/MergeSortResultIterator.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/iterate/MergeSortResultIterator.java b/phoenix-core/src/main/java/org/apache/phoenix/iterate/MergeSortResultIterator.java
index 75843eb..e076a40 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/iterate/MergeSortResultIterator.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/iterate/MergeSortResultIterator.java
@@ -34,7 +34,6 @@ import org.apache.phoenix.util.ServerUtil;
public abstract class MergeSortResultIterator implements PeekingResultIterator {
protected final ResultIterators resultIterators;
protected final ImmutableBytesWritable tempPtr = new ImmutableBytesWritable();
- private List<PeekingResultIterator> iterators;
private PriorityQueue<MaterializedComparableResultIterator> minHeap;
private final IteratorComparator itrComparator = new IteratorComparator();
@@ -42,34 +41,6 @@ public abstract class MergeSortResultIterator implements PeekingResultIterator {
this.resultIterators = iterators;
}
- private List<PeekingResultIterator> getIterators() throws SQLException {
- if (iterators == null) {
- iterators = resultIterators.getIterators();
- }
- return iterators;
- }
-
- private PriorityQueue<MaterializedComparableResultIterator> getMinHeap() throws SQLException {
- if (minHeap == null) {
- List<PeekingResultIterator> iterators = getIterators();
- minHeap = new PriorityQueue<MaterializedComparableResultIterator>(iterators.size());
- for (PeekingResultIterator itr : iterators) {
- if (itr.peek() == null) {
- itr.close();
- continue;
- }
- minHeap.add(new MaterializedComparableResultIterator(itr, itrComparator));
- }
- }
- return minHeap;
- }
-
- private class IteratorComparator implements Comparator<Tuple> {
- public int compare(Tuple c1, Tuple c2) {
- return MergeSortResultIterator.this.compare(c1, c2);
- }
- }
-
@Override
public void close() throws SQLException {
SQLException toThrow = null;
@@ -81,8 +52,8 @@ public abstract class MergeSortResultIterator implements PeekingResultIterator {
toThrow = ServerUtil.parseServerException(e);
} finally {
try {
- if (iterators != null) {
- SQLCloseables.closeAll(iterators);
+ if (minHeap != null) {
+ SQLCloseables.closeAllQuietly(minHeap);
}
} catch (Exception e) {
if (toThrow == null) {
@@ -91,36 +62,24 @@ public abstract class MergeSortResultIterator implements PeekingResultIterator {
toThrow.setNextException(ServerUtil.parseServerException(e));
}
} finally {
- if (toThrow != null) {
- throw toThrow;
- }
+ if (toThrow != null) { throw toThrow; }
}
}
}
abstract protected int compare(Tuple t1, Tuple t2);
- private MaterializedComparableResultIterator minIterator() throws SQLException {
- PriorityQueue<MaterializedComparableResultIterator> minHeap = getMinHeap();
- MaterializedComparableResultIterator minIterator = minHeap.peek();
- return minIterator;
- }
-
@Override
public Tuple peek() throws SQLException {
MaterializedComparableResultIterator iterator = minIterator();
- if (iterator == null) {
- return null;
- }
+ if (iterator == null) { return null; }
return iterator.peek();
}
@Override
public Tuple next() throws SQLException {
MaterializedComparableResultIterator iterator = minIterator();
- if (iterator == null) {
- return null;
- }
+ if (iterator == null) { return null; }
Tuple next = iterator.next();
minHeap.poll();
if (iterator.peek() != null) {
@@ -130,4 +89,33 @@ public abstract class MergeSortResultIterator implements PeekingResultIterator {
}
return next;
}
+
+ private PriorityQueue<MaterializedComparableResultIterator> getMinHeap() throws SQLException {
+ if (minHeap == null) {
+ List<PeekingResultIterator> iterators = resultIterators.getIterators();
+ minHeap = new PriorityQueue<MaterializedComparableResultIterator>(iterators.size());
+ for (PeekingResultIterator itr : iterators) {
+ if (itr.peek() == null) {
+ itr.close();
+ continue;
+ }
+ minHeap.add(new MaterializedComparableResultIterator(itr, itrComparator));
+ }
+ }
+ return minHeap;
+ }
+
+ private class IteratorComparator implements Comparator<Tuple> {
+ @Override
+ public int compare(Tuple c1, Tuple c2) {
+ return MergeSortResultIterator.this.compare(c1, c2);
+ }
+ }
+
+ private MaterializedComparableResultIterator minIterator() throws SQLException {
+ PriorityQueue<MaterializedComparableResultIterator> minHeap = getMinHeap();
+ MaterializedComparableResultIterator minIterator = minHeap.peek();
+ return minIterator;
+ }
+
}