You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by ja...@apache.org on 2016/02/24 01:52:23 UTC
phoenix git commit: PHOENIX-2707 Differentiate between a table+family
have zero guideposts from not having collected guideposts
Repository: phoenix
Updated Branches:
refs/heads/master c25f88791 -> e3a62026c
PHOENIX-2707 Differentiate between a table+family have zero guideposts from not having collected guideposts
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/e3a62026
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/e3a62026
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/e3a62026
Branch: refs/heads/master
Commit: e3a62026cbfaf1eb7c50a35a8871e0f059d7d668
Parents: c25f887
Author: James Taylor <ja...@apache.org>
Authored: Tue Feb 23 16:52:05 2016 -0800
Committer: James Taylor <ja...@apache.org>
Committed: Tue Feb 23 16:52:05 2016 -0800
----------------------------------------------------------------------
.../java/org/apache/phoenix/execute/AggregatePlan.java | 6 ++++--
.../java/org/apache/phoenix/execute/BaseQueryPlan.java | 11 +++++++++++
.../main/java/org/apache/phoenix/execute/ScanPlan.java | 7 +++++--
3 files changed, 20 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/e3a62026/phoenix-core/src/main/java/org/apache/phoenix/execute/AggregatePlan.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/execute/AggregatePlan.java b/phoenix-core/src/main/java/org/apache/phoenix/execute/AggregatePlan.java
index 73a995c..a8a7dc5 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/execute/AggregatePlan.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/execute/AggregatePlan.java
@@ -35,6 +35,7 @@ import org.apache.phoenix.expression.OrderByExpression;
import org.apache.phoenix.expression.RowKeyExpression;
import org.apache.phoenix.expression.aggregator.Aggregators;
import org.apache.phoenix.iterate.AggregatingResultIterator;
+import org.apache.phoenix.iterate.BaseResultIterators;
import org.apache.phoenix.iterate.ConcatResultIterator;
import org.apache.phoenix.iterate.DistinctAggregatingResultIterator;
import org.apache.phoenix.iterate.FilterAggregatingResultIterator;
@@ -48,7 +49,6 @@ import org.apache.phoenix.iterate.ParallelIterators;
import org.apache.phoenix.iterate.ParallelScanGrouper;
import org.apache.phoenix.iterate.PeekingResultIterator;
import org.apache.phoenix.iterate.ResultIterator;
-import org.apache.phoenix.iterate.ResultIterators;
import org.apache.phoenix.iterate.SequenceResultIterator;
import org.apache.phoenix.iterate.SerialIterators;
import org.apache.phoenix.iterate.SpoolingResultIterator;
@@ -197,12 +197,14 @@ public class AggregatePlan extends BaseQueryPlan {
context.getScan().setAttribute(BaseScannerRegionObserver.GROUP_BY_LIMIT, PInteger.INSTANCE.toBytes(limit));
}
}
- ResultIterators iterators = statement.getHint().hasHint(HintNode.Hint.SERIAL) ?
+ BaseResultIterators iterators = statement.getHint().hasHint(HintNode.Hint.SERIAL) ?
new SerialIterators(this, null, wrapParallelIteratorFactory(), scanGrouper) :
new ParallelIterators(this, null, wrapParallelIteratorFactory());
splits = iterators.getSplits();
scans = iterators.getScans();
+ estimatedSize = iterators.getEstimatedByteCount();
+ estimatedRows = iterators.getEstimatedRowCount();
AggregatingResultIterator aggResultIterator;
// No need to merge sort for ungrouped aggregation
http://git-wip-us.apache.org/repos/asf/phoenix/blob/e3a62026/phoenix-core/src/main/java/org/apache/phoenix/execute/BaseQueryPlan.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/execute/BaseQueryPlan.java b/phoenix-core/src/main/java/org/apache/phoenix/execute/BaseQueryPlan.java
index 2aef7f7..0ee70ba 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/execute/BaseQueryPlan.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/execute/BaseQueryPlan.java
@@ -108,6 +108,9 @@ public abstract class BaseQueryPlan implements QueryPlan {
* immediately before creating the ResultIterator.
*/
protected final Expression dynamicFilter;
+ protected Long estimatedRows;
+ protected Long estimatedSize;
+
protected BaseQueryPlan(
StatementContext context, FilterableStatement statement, TableRef table,
@@ -127,6 +130,14 @@ public abstract class BaseQueryPlan implements QueryPlan {
this.dynamicFilter = dynamicFilter;
}
+ public Long getEstimatedRowCount() {
+ return this.estimatedRows;
+ }
+
+ public Long getEstimatedByteCount() {
+ return this.estimatedSize;
+ }
+
@Override
public Operation getOperation() {
http://git-wip-us.apache.org/repos/asf/phoenix/blob/e3a62026/phoenix-core/src/main/java/org/apache/phoenix/execute/ScanPlan.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/execute/ScanPlan.java b/phoenix-core/src/main/java/org/apache/phoenix/execute/ScanPlan.java
index d51e6c8..4a5cb83 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/execute/ScanPlan.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/execute/ScanPlan.java
@@ -31,6 +31,7 @@ import org.apache.phoenix.compile.StatementContext;
import org.apache.phoenix.coprocessor.BaseScannerRegionObserver;
import org.apache.phoenix.coprocessor.ScanRegionObserver;
import org.apache.phoenix.expression.Expression;
+import org.apache.phoenix.iterate.BaseResultIterators;
import org.apache.phoenix.iterate.ChunkedResultIterator;
import org.apache.phoenix.iterate.ConcatResultIterator;
import org.apache.phoenix.iterate.LimitingResultIterator;
@@ -40,7 +41,6 @@ import org.apache.phoenix.iterate.ParallelIteratorFactory;
import org.apache.phoenix.iterate.ParallelIterators;
import org.apache.phoenix.iterate.ParallelScanGrouper;
import org.apache.phoenix.iterate.ResultIterator;
-import org.apache.phoenix.iterate.ResultIterators;
import org.apache.phoenix.iterate.RoundRobinResultIterator;
import org.apache.phoenix.iterate.SequenceResultIterator;
import org.apache.phoenix.iterate.SerialIterators;
@@ -195,7 +195,7 @@ public class ScanPlan extends BaseQueryPlan {
boolean isOrdered = !orderBy.getOrderByExpressions().isEmpty();
boolean isSerial = isSerial(context, statement, tableRef, orderBy, limit, allowPageFilter);
Integer perScanLimit = !allowPageFilter || isOrdered ? null : limit;
- ResultIterators iterators;
+ BaseResultIterators iterators;
if (isSerial) {
iterators = new SerialIterators(this, perScanLimit, parallelIteratorFactory, scanGrouper);
} else {
@@ -203,6 +203,9 @@ public class ScanPlan extends BaseQueryPlan {
}
splits = iterators.getSplits();
scans = iterators.getScans();
+ estimatedSize = iterators.getEstimatedByteCount();
+ estimatedRows = iterators.getEstimatedRowCount();
+
if (isOrdered) {
scanner = new MergeSortTopNResultIterator(iterators, limit, orderBy.getOrderByExpressions());
} else {