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