PHOENIX-944 Support derived tables in FROM clause that needs extra steps of 
client-side aggregation or other processing


Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/301f87ea
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/301f87ea
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/301f87ea

Branch: refs/heads/4.0
Commit: 301f87ea2d3f2f8749010592f225f71924ab3c16
Parents: f004e13
Author: maryannxue <maryann...@apache.org>
Authored: Thu Oct 23 20:26:17 2014 -0400
Committer: maryannxue <maryann...@apache.org>
Committed: Thu Oct 23 23:26:49 2014 -0400

----------------------------------------------------------------------
 .../main/java/org/apache/phoenix/compile/QueryCompiler.java    | 4 ++++
 .../java/org/apache/phoenix/execute/ClientAggregatePlan.java   | 4 +++-
 .../org/apache/phoenix/iterate/LookAheadResultIterator.java    | 6 +++---
 3 files changed, 10 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/phoenix/blob/301f87ea/phoenix-core/src/main/java/org/apache/phoenix/compile/QueryCompiler.java
----------------------------------------------------------------------
diff --git 
a/phoenix-core/src/main/java/org/apache/phoenix/compile/QueryCompiler.java 
b/phoenix-core/src/main/java/org/apache/phoenix/compile/QueryCompiler.java
index 0eafcdb..214330c 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/compile/QueryCompiler.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/compile/QueryCompiler.java
@@ -43,6 +43,7 @@ import org.apache.phoenix.execute.ScanPlan;
 import org.apache.phoenix.execute.TupleProjectionPlan;
 import org.apache.phoenix.execute.TupleProjector;
 import org.apache.phoenix.expression.Expression;
+import org.apache.phoenix.expression.LiteralExpression;
 import org.apache.phoenix.expression.RowValueConstructorExpression;
 import org.apache.phoenix.hbase.index.util.ImmutableBytesPtr;
 import org.apache.phoenix.iterate.ParallelIterators.ParallelIteratorFactory;
@@ -427,6 +428,9 @@ public class QueryCompiler {
         }
         
         if (innerPlan != null) {
+            if (LiteralExpression.isTrue(where)) {
+                where = null; // we do not pass "true" as filter
+            }
             plan =  select.isAggregate() || select.isDistinct() ?
                       new ClientAggregatePlan(context, select, tableRef, 
projector, limit, where, orderBy, groupBy, having, plan)
                     : new ClientScanPlan(context, select, tableRef, projector, 
limit, where, orderBy, plan);

http://git-wip-us.apache.org/repos/asf/phoenix/blob/301f87ea/phoenix-core/src/main/java/org/apache/phoenix/execute/ClientAggregatePlan.java
----------------------------------------------------------------------
diff --git 
a/phoenix-core/src/main/java/org/apache/phoenix/execute/ClientAggregatePlan.java
 
b/phoenix-core/src/main/java/org/apache/phoenix/execute/ClientAggregatePlan.java
index a9347e1..59aab2d 100644
--- 
a/phoenix-core/src/main/java/org/apache/phoenix/execute/ClientAggregatePlan.java
+++ 
b/phoenix-core/src/main/java/org/apache/phoenix/execute/ClientAggregatePlan.java
@@ -17,6 +17,8 @@
  */
 package org.apache.phoenix.execute;
 
+import static org.apache.phoenix.query.QueryConstants.*;
+
 import java.io.IOException;
 import java.sql.SQLException;
 import java.util.Collections;
@@ -210,7 +212,7 @@ public class ClientAggregatePlan extends 
ClientProcessingPlan {
         @Override
         protected ImmutableBytesWritable getGroupingKey(Tuple tuple,
                 ImmutableBytesWritable ptr) throws SQLException {
-            tuple.getKey(ptr);
+            ptr.set(UNGROUPED_AGG_ROW_KEY);
             return ptr;
         }
 

http://git-wip-us.apache.org/repos/asf/phoenix/blob/301f87ea/phoenix-core/src/main/java/org/apache/phoenix/iterate/LookAheadResultIterator.java
----------------------------------------------------------------------
diff --git 
a/phoenix-core/src/main/java/org/apache/phoenix/iterate/LookAheadResultIterator.java
 
b/phoenix-core/src/main/java/org/apache/phoenix/iterate/LookAheadResultIterator.java
index 971b1a5..3293f65 100644
--- 
a/phoenix-core/src/main/java/org/apache/phoenix/iterate/LookAheadResultIterator.java
+++ 
b/phoenix-core/src/main/java/org/apache/phoenix/iterate/LookAheadResultIterator.java
@@ -25,9 +25,9 @@ import org.apache.phoenix.schema.tuple.Tuple;
 
 
 abstract public class LookAheadResultIterator implements PeekingResultIterator 
{
-    public static LookAheadResultIterator wrap(final ResultIterator iterator) {
-        if (iterator instanceof LookAheadResultIterator) {
-            return (LookAheadResultIterator) iterator;
+    public static PeekingResultIterator wrap(final ResultIterator iterator) {
+        if (iterator instanceof PeekingResultIterator) {
+            return (PeekingResultIterator) iterator;
         }
         
         return new LookAheadResultIterator() {

Reply via email to