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 2014/11/22 06:10:45 UTC
[2/2] phoenix git commit: PHOENIX-1476 Immediately open scanner for
parallel queries
PHOENIX-1476 Immediately open scanner for parallel queries
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/b8e7da27
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/b8e7da27
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/b8e7da27
Branch: refs/heads/4.0
Commit: b8e7da27f5a035a6772c397d9ca2ed8708635ded
Parents: 907e656
Author: James Taylor <jt...@salesforce.com>
Authored: Fri Nov 21 21:09:37 2014 -0800
Committer: James Taylor <jt...@salesforce.com>
Committed: Fri Nov 21 21:09:37 2014 -0800
----------------------------------------------------------------------
.../java/org/apache/phoenix/iterate/SerialIterators.java | 3 ++-
.../org/apache/phoenix/iterate/TableResultIterator.java | 9 +++++++++
2 files changed, 11 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/b8e7da27/phoenix-core/src/main/java/org/apache/phoenix/iterate/SerialIterators.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/iterate/SerialIterators.java b/phoenix-core/src/main/java/org/apache/phoenix/iterate/SerialIterators.java
index c01a268..ded9344 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/iterate/SerialIterators.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/iterate/SerialIterators.java
@@ -26,6 +26,7 @@ import java.util.concurrent.Future;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.util.Pair;
import org.apache.phoenix.compile.QueryPlan;
+import org.apache.phoenix.iterate.TableResultIterator.ScannerCreation;
import org.apache.phoenix.job.JobManager.JobCallable;
import org.apache.phoenix.trace.util.Tracing;
import org.apache.phoenix.util.LogUtil;
@@ -79,7 +80,7 @@ public class SerialIterators extends BaseResultIterators {
List<PeekingResultIterator> concatIterators = Lists.newArrayListWithExpectedSize(scans.size());
for (final Scan scan : scans) {
long startTime = System.currentTimeMillis();
- ResultIterator scanner = new TableResultIterator(context, tableRef, scan);
+ ResultIterator scanner = new TableResultIterator(context, tableRef, scan, ScannerCreation.DELAYED);
if (logger.isDebugEnabled()) {
logger.debug(LogUtil.addCustomAnnotations("Id: " + scanId + ", Time: " + (System.currentTimeMillis() - startTime) + "ms, Scan: " + scan, ScanUtil.getCustomAnnotations(scan)));
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/b8e7da27/phoenix-core/src/main/java/org/apache/phoenix/iterate/TableResultIterator.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/iterate/TableResultIterator.java b/phoenix-core/src/main/java/org/apache/phoenix/iterate/TableResultIterator.java
index 9cc4ad0..ea13dfd 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/iterate/TableResultIterator.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/iterate/TableResultIterator.java
@@ -39,6 +39,8 @@ import org.apache.phoenix.util.ServerUtil;
* @since 0.1
*/
public class TableResultIterator extends ExplainTable implements ResultIterator {
+ public enum ScannerCreation {IMMEDIATE, DELAYED};
+
private final Scan scan;
private final HTableInterface htable;
private volatile ResultIterator delegate;
@@ -72,9 +74,16 @@ public class TableResultIterator extends ExplainTable implements ResultIterator
}
public TableResultIterator(StatementContext context, TableRef tableRef, Scan scan) throws SQLException {
+ this(context, tableRef, scan, ScannerCreation.IMMEDIATE);
+ }
+
+ public TableResultIterator(StatementContext context, TableRef tableRef, Scan scan, ScannerCreation creationMode) throws SQLException {
super(context, tableRef);
this.scan = scan;
htable = context.getConnection().getQueryServices().getTable(tableRef.getTable().getPhysicalName().getBytes());
+ if (creationMode == ScannerCreation.IMMEDIATE) {
+ getDelegate(false);
+ }
}
@Override