HIVE-11794 : GBY vectorization appears to process COMPLETE reduce-side GBY 
incorrectly (Sergey Shelukhin, reviewed by Matt McCline)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/072c5a0b
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/072c5a0b
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/072c5a0b

Branch: refs/heads/beeline-cli
Commit: 072c5a0bce78cde0124d98a1243392cdee2f2f3e
Parents: e82bf25
Author: Sergey Shelukhin <[email protected]>
Authored: Tue Sep 22 18:13:15 2015 -0700
Committer: Sergey Shelukhin <[email protected]>
Committed: Tue Sep 22 18:13:15 2015 -0700

----------------------------------------------------------------------
 .../ql/exec/vector/VectorGroupByOperator.java   |    5 +-
 .../hive/ql/optimizer/physical/Vectorizer.java  |   16 +-
 .../hive/ql/plan/ExprNodeGenericFuncDesc.java   |   10 +-
 .../hadoop/hive/ql/plan/VectorGroupByDesc.java  |   10 +
 .../clientpositive/vector_groupby_reduce.q      |   62 +-
 .../clientpositive/vectorization_limit.q        |    4 +-
 .../tez/vector_groupby_reduce.q.out             | 1452 ++++++++++++++++-
 .../tez/vectorization_limit.q.out               |    8 +-
 .../clientpositive/vector_groupby_reduce.q.out  | 1466 +++++++++++++++++-
 .../clientpositive/vectorization_limit.q.out    |    8 +-
 10 files changed, 2958 insertions(+), 83 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/072c5a0b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupByOperator.java
----------------------------------------------------------------------
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupByOperator.java 
b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupByOperator.java
index 917f406..7a552b8 100644
--- 
a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupByOperator.java
+++ 
b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupByOperator.java
@@ -625,8 +625,7 @@ public class VectorGroupByOperator extends 
Operator<GroupByDesc> implements
           rowsToFlush[flushMark] = currentStreamingAggregators;
           if (keysToFlush[flushMark] == null) {
             keysToFlush[flushMark] = (VectorHashKeyWrapper) 
streamingKey.copyKey();
-          }
-          else {
+          } else {
             streamingKey.duplicateTo(keysToFlush[flushMark]);
           }
 
@@ -836,6 +835,8 @@ public class VectorGroupByOperator extends 
Operator<GroupByDesc> implements
     } else if (conf.getVectorDesc().isReduceMergePartial()) {
       // Sorted GroupBy of vector batches where an individual batch has the 
same group key (e.g. reduce).
       processingMode = this.new ProcessingModeReduceMergePartialKeys();
+    } else if (conf.getVectorDesc().isReduceStreaming()) {
+      processingMode = this.new ProcessingModeUnsortedStreaming();
     } else {
       // We start in hash mode and may dynamically switch to unsorted stream 
mode.
       processingMode = this.new ProcessingModeHashAggregate();

http://git-wip-us.apache.org/repos/asf/hive/blob/072c5a0b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java
----------------------------------------------------------------------
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java 
b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java
index 2e3bd76..0d4c1d8 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java
@@ -1139,8 +1139,6 @@ public class Vectorizer implements PhysicalPlanResolver {
       return false;
     }
 
-    boolean isMergePartial = (desc.getMode() != GroupByDesc.Mode.HASH);
-
     if (!isReduce) {
 
       // MapWork
@@ -1153,12 +1151,15 @@ public class Vectorizer implements PhysicalPlanResolver 
{
 
       // ReduceWork
 
-      if (isMergePartial) {
+      boolean isComplete = desc.getMode() == GroupByDesc.Mode.COMPLETE;
+      if (desc.getMode() != GroupByDesc.Mode.HASH) {
 
         // Reduce Merge-Partial GROUP BY.
 
         // A merge-partial GROUP BY is fed by grouping by keys from 
reduce-shuffle.  It is the
         // first (or root) operator for its reduce task.
+        // TODO: Technically, we should also handle FINAL, PARTIAL1, PARTIAL2 
and PARTIALS
+        //       that are not hash or complete, but aren't merge-partial, 
somehow.
 
         if (desc.isDistinct()) {
           LOG.info("Vectorized Reduce MergePartial GROUP BY does not support 
DISTINCT");
@@ -1174,7 +1175,7 @@ public class Vectorizer implements PhysicalPlanResolver {
         }
 
         if (hasKeys) {
-          if (op.getParentOperators().size() > 0) {
+          if (op.getParentOperators().size() > 0 && !isComplete) {
             LOG.info("Vectorized Reduce MergePartial GROUP BY keys can only 
handle a key group when it is fed by reduce-shuffle");
             return false;
           }
@@ -1187,7 +1188,11 @@ public class Vectorizer implements PhysicalPlanResolver {
         } else {
           LOG.info("Vectorized Reduce MergePartial GROUP BY will do global 
aggregation");
         }
-        vectorDesc.setIsReduceMergePartial(true);
+        if (!isComplete) {
+          vectorDesc.setIsReduceMergePartial(true);
+        } else {
+          vectorDesc.setIsReduceStreaming(true);
+        }
       } else {
 
         // Reduce Hash GROUP BY or global aggregation.
@@ -1259,6 +1264,7 @@ public class Vectorizer implements PhysicalPlanResolver {
       ExprNodeGenericFuncDesc d = (ExprNodeGenericFuncDesc) desc;
       boolean r = validateGenericUdf(d);
       if (!r) {
+        LOG.info("Cannot vectorize UDF " + d);
         return false;
       }
     }

http://git-wip-us.apache.org/repos/asf/hive/blob/072c5a0b/ql/src/java/org/apache/hadoop/hive/ql/plan/ExprNodeGenericFuncDesc.java
----------------------------------------------------------------------
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/plan/ExprNodeGenericFuncDesc.java 
b/ql/src/java/org/apache/hadoop/hive/ql/plan/ExprNodeGenericFuncDesc.java
index 4b2c1ad..b5d2ddf 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/plan/ExprNodeGenericFuncDesc.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/ExprNodeGenericFuncDesc.java
@@ -136,11 +136,13 @@ public class ExprNodeGenericFuncDesc extends ExprNodeDesc 
implements
     StringBuilder sb = new StringBuilder();
     sb.append(genericUDF.getClass().getSimpleName());
     sb.append("(");
-    for (int i = 0; i < chidren.size(); i++) {
-      if (i > 0) {
-        sb.append(", ");
+    if (chidren != null) {
+      for (int i = 0; i < chidren.size(); i++) {
+        if (i > 0) {
+          sb.append(", ");
+        }
+        sb.append(chidren.get(i));
       }
-      sb.append(chidren.get(i).toString());
     }
     sb.append(")");
     return sb.toString();

http://git-wip-us.apache.org/repos/asf/hive/blob/072c5a0b/ql/src/java/org/apache/hadoop/hive/ql/plan/VectorGroupByDesc.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/VectorGroupByDesc.java 
b/ql/src/java/org/apache/hadoop/hive/ql/plan/VectorGroupByDesc.java
index 7e791f2..e613a4e 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/plan/VectorGroupByDesc.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/VectorGroupByDesc.java
@@ -34,6 +34,8 @@ public class VectorGroupByDesc extends AbstractVectorDesc  {
 
   private boolean isVectorOutput;
 
+  private boolean isReduceStreaming;
+
   public VectorGroupByDesc() {
     this.isReduceMergePartial = false;
     this.isVectorOutput = false;
@@ -54,4 +56,12 @@ public class VectorGroupByDesc extends AbstractVectorDesc  {
   public void setVectorOutput(boolean isVectorOutput) {
     this.isVectorOutput = isVectorOutput;
   }
+
+  public void setIsReduceStreaming(boolean isReduceStreaming) {
+    this.isReduceStreaming = isReduceStreaming;
+  }
+
+  public boolean isReduceStreaming() {
+    return isReduceStreaming;
+  }
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/072c5a0b/ql/src/test/queries/clientpositive/vector_groupby_reduce.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/vector_groupby_reduce.q 
b/ql/src/test/queries/clientpositive/vector_groupby_reduce.q
index 1438c29..8fe6b7e 100644
--- a/ql/src/test/queries/clientpositive/vector_groupby_reduce.q
+++ b/ql/src/test/queries/clientpositive/vector_groupby_reduce.q
@@ -105,12 +105,11 @@ from
 group by ss_ticket_number
 limit 20;
 
--- The Reduce task has 2 MergePartial GROUP BY operators in a row.  Currently,
--- we don't issue startGroup with keys out of the 1st vectorized GROUP BY, so 
we can't
--- vectorize the 2nd GROUP BY...
+
+
 explain
 select 
-    min(ss_ticket_number)
+    min(ss_ticket_number) m
 from
     (select 
         ss_ticket_number
@@ -118,10 +117,10 @@ from
         store_sales
     group by ss_ticket_number) a
 group by ss_ticket_number
-limit 20;
+order by m;
 
 select 
-    min(ss_ticket_number)
+    min(ss_ticket_number) m
 from
     (select 
         ss_ticket_number
@@ -129,5 +128,54 @@ from
         store_sales
     group by ss_ticket_number) a
 group by ss_ticket_number
-limit 20;
+order by m;
+
+
+
+explain
+select
+    ss_ticket_number, sum(ss_item_sk), sum(q)
+from
+    (select
+        ss_ticket_number, ss_item_sk, min(ss_quantity) q
+    from
+        store_sales
+    group by ss_ticket_number, ss_item_sk) a
+group by ss_ticket_number
+order by ss_ticket_number;
+
+select
+    ss_ticket_number, sum(ss_item_sk), sum(q)
+from
+    (select
+        ss_ticket_number, ss_item_sk, min(ss_quantity) q
+    from
+        store_sales
+    group by ss_ticket_number, ss_item_sk) a
+group by ss_ticket_number
+order by ss_ticket_number;
+
+
+explain
+select
+    ss_ticket_number, ss_item_sk, sum(q)
+from
+    (select
+        ss_ticket_number, ss_item_sk, min(ss_quantity) q
+    from
+        store_sales
+    group by ss_ticket_number, ss_item_sk) a
+group by ss_ticket_number, ss_item_sk
+order by ss_ticket_number, ss_item_sk;
+
+select
+    ss_ticket_number, ss_item_sk, sum(q)
+from
+    (select
+        ss_ticket_number, ss_item_sk, min(ss_quantity) q
+    from
+        store_sales
+    group by ss_ticket_number, ss_item_sk) a
+group by ss_ticket_number, ss_item_sk
+order by ss_ticket_number, ss_item_sk;
 

http://git-wip-us.apache.org/repos/asf/hive/blob/072c5a0b/ql/src/test/queries/clientpositive/vectorization_limit.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/vectorization_limit.q 
b/ql/src/test/queries/clientpositive/vectorization_limit.q
index 8799087..f261a36 100644
--- a/ql/src/test/queries/clientpositive/vectorization_limit.q
+++ b/ql/src/test/queries/clientpositive/vectorization_limit.q
@@ -23,8 +23,8 @@ select distinct(ctinyint) from alltypesorc limit 20;
 select distinct(ctinyint) from alltypesorc limit 20;
 
 explain
-select ctinyint, count(distinct(cdouble)) from alltypesorc group by ctinyint 
limit 20;
-select ctinyint, count(distinct(cdouble)) from alltypesorc group by ctinyint 
limit 20;
+select ctinyint, count(distinct(cdouble)) from alltypesorc group by ctinyint 
order by ctinyint limit 20;
+select ctinyint, count(distinct(cdouble)) from alltypesorc group by ctinyint 
order by ctinyint limit 20;
 
 -- limit zero
 explain

http://git-wip-us.apache.org/repos/asf/hive/blob/072c5a0b/ql/src/test/results/clientpositive/tez/vector_groupby_reduce.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/tez/vector_groupby_reduce.q.out 
b/ql/src/test/results/clientpositive/tez/vector_groupby_reduce.q.out
index 814ee39..fe7e829 100644
--- a/ql/src/test/results/clientpositive/tez/vector_groupby_reduce.q.out
+++ b/ql/src/test/results/clientpositive/tez/vector_groupby_reduce.q.out
@@ -321,12 +321,9 @@ POSTHOOK: Input: default@store_sales
 18
 19
 20
-PREHOOK: query: -- The Reduce task has 2 MergePartial GROUP BY operators in a 
row.  Currently,
--- we don't issue startGroup with keys out of the 1st vectorized GROUP BY, so 
we can't
--- vectorize the 2nd GROUP BY...
-explain
+PREHOOK: query: explain
 select 
-    min(ss_ticket_number)
+    min(ss_ticket_number) m
 from
     (select 
         ss_ticket_number
@@ -334,14 +331,11 @@ from
         store_sales
     group by ss_ticket_number) a
 group by ss_ticket_number
-limit 20
+order by m
 PREHOOK: type: QUERY
-POSTHOOK: query: -- The Reduce task has 2 MergePartial GROUP BY operators in a 
row.  Currently,
--- we don't issue startGroup with keys out of the 1st vectorized GROUP BY, so 
we can't
--- vectorize the 2nd GROUP BY...
-explain
+POSTHOOK: query: explain
 select 
-    min(ss_ticket_number)
+    min(ss_ticket_number) m
 from
     (select 
         ss_ticket_number
@@ -349,7 +343,7 @@ from
         store_sales
     group by ss_ticket_number) a
 group by ss_ticket_number
-limit 20
+order by m
 POSTHOOK: type: QUERY
 STAGE DEPENDENCIES:
   Stage-1 is a root stage
@@ -360,6 +354,7 @@ STAGE PLANS:
     Tez
       Edges:
         Reducer 2 <- Map 1 (SIMPLE_EDGE)
+        Reducer 3 <- Reducer 2 (SIMPLE_EDGE)
 #### A masked pattern was here ####
       Vertices:
         Map 1 
@@ -399,25 +394,34 @@ STAGE PLANS:
                     expressions: _col1 (type: int)
                     outputColumnNames: _col0
                     Statistics: Num rows: 250 Data size: 22069 Basic stats: 
COMPLETE Column stats: NONE
-                    Limit
-                      Number of rows: 20
-                      Statistics: Num rows: 20 Data size: 1760 Basic stats: 
COMPLETE Column stats: NONE
-                      File Output Operator
-                        compressed: false
-                        Statistics: Num rows: 20 Data size: 1760 Basic stats: 
COMPLETE Column stats: NONE
-                        table:
-                            input format: 
org.apache.hadoop.mapred.TextInputFormat
-                            output format: 
org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
-                            serde: 
org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+                    Reduce Output Operator
+                      key expressions: _col0 (type: int)
+                      sort order: +
+                      Statistics: Num rows: 250 Data size: 22069 Basic stats: 
COMPLETE Column stats: NONE
+            Execution mode: vectorized
+        Reducer 3
+            Reduce Operator Tree:
+              Select Operator
+                expressions: KEY.reducesinkkey0 (type: int)
+                outputColumnNames: _col0
+                Statistics: Num rows: 250 Data size: 22069 Basic stats: 
COMPLETE Column stats: NONE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 250 Data size: 22069 Basic stats: 
COMPLETE Column stats: NONE
+                  table:
+                      input format: org.apache.hadoop.mapred.TextInputFormat
+                      output format: 
org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+                      serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+            Execution mode: vectorized
 
   Stage: Stage-0
     Fetch Operator
-      limit: 20
+      limit: -1
       Processor Tree:
         ListSink
 
 PREHOOK: query: select 
-    min(ss_ticket_number)
+    min(ss_ticket_number) m
 from
     (select 
         ss_ticket_number
@@ -425,12 +429,12 @@ from
         store_sales
     group by ss_ticket_number) a
 group by ss_ticket_number
-limit 20
+order by m
 PREHOOK: type: QUERY
 PREHOOK: Input: default@store_sales
 #### A masked pattern was here ####
 POSTHOOK: query: select 
-    min(ss_ticket_number)
+    min(ss_ticket_number) m
 from
     (select 
         ss_ticket_number
@@ -438,7 +442,7 @@ from
         store_sales
     group by ss_ticket_number) a
 group by ss_ticket_number
-limit 20
+order by m
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@store_sales
 #### A masked pattern was here ####
@@ -462,3 +466,1397 @@ POSTHOOK: Input: default@store_sales
 18
 19
 20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+PREHOOK: query: explain
+select
+    ss_ticket_number, sum(ss_item_sk), sum(q)
+from
+    (select
+        ss_ticket_number, ss_item_sk, min(ss_quantity) q
+    from
+        store_sales
+    group by ss_ticket_number, ss_item_sk) a
+group by ss_ticket_number
+order by ss_ticket_number
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select
+    ss_ticket_number, sum(ss_item_sk), sum(q)
+from
+    (select
+        ss_ticket_number, ss_item_sk, min(ss_quantity) q
+    from
+        store_sales
+    group by ss_ticket_number, ss_item_sk) a
+group by ss_ticket_number
+order by ss_ticket_number
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Tez
+      Edges:
+        Reducer 2 <- Map 1 (SIMPLE_EDGE)
+        Reducer 3 <- Reducer 2 (SIMPLE_EDGE)
+#### A masked pattern was here ####
+      Vertices:
+        Map 1
+            Map Operator Tree:
+                TableScan
+                  alias: store_sales
+                  Statistics: Num rows: 1000 Data size: 88276 Basic stats: 
COMPLETE Column stats: NONE
+                  Select Operator
+                    expressions: ss_ticket_number (type: int), ss_item_sk 
(type: int), ss_quantity (type: int)
+                    outputColumnNames: _col0, _col1, _col2
+                    Statistics: Num rows: 1000 Data size: 88276 Basic stats: 
COMPLETE Column stats: NONE
+                    Group By Operator
+                      aggregations: min(_col2)
+                      keys: _col0 (type: int), _col1 (type: int)
+                      mode: hash
+                      outputColumnNames: _col0, _col1, _col2
+                      Statistics: Num rows: 1000 Data size: 88276 Basic stats: 
COMPLETE Column stats: NONE
+                      Reduce Output Operator
+                        key expressions: _col0 (type: int), _col1 (type: int)
+                        sort order: ++
+                        Map-reduce partition columns: _col0 (type: int)
+                        Statistics: Num rows: 1000 Data size: 88276 Basic 
stats: COMPLETE Column stats: NONE
+                        value expressions: _col2 (type: int)
+            Execution mode: vectorized
+        Reducer 2
+            Reduce Operator Tree:
+              Group By Operator
+                aggregations: min(VALUE._col0)
+                keys: KEY._col0 (type: int), KEY._col1 (type: int)
+                mode: mergepartial
+                outputColumnNames: _col0, _col1, _col2
+                Statistics: Num rows: 500 Data size: 44138 Basic stats: 
COMPLETE Column stats: NONE
+                Group By Operator
+                  aggregations: sum(_col1), sum(_col2)
+                  keys: _col0 (type: int)
+                  mode: complete
+                  outputColumnNames: _col0, _col1, _col2
+                  Statistics: Num rows: 250 Data size: 22069 Basic stats: 
COMPLETE Column stats: NONE
+                  Reduce Output Operator
+                    key expressions: _col0 (type: int)
+                    sort order: +
+                    Statistics: Num rows: 250 Data size: 22069 Basic stats: 
COMPLETE Column stats: NONE
+                    value expressions: _col1 (type: bigint), _col2 (type: 
bigint)
+            Execution mode: vectorized
+        Reducer 3
+            Reduce Operator Tree:
+              Select Operator
+                expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 
(type: bigint), VALUE._col1 (type: bigint)
+                outputColumnNames: _col0, _col1, _col2
+                Statistics: Num rows: 250 Data size: 22069 Basic stats: 
COMPLETE Column stats: NONE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 250 Data size: 22069 Basic stats: 
COMPLETE Column stats: NONE
+                  table:
+                      input format: org.apache.hadoop.mapred.TextInputFormat
+                      output format: 
org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+                      serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+            Execution mode: vectorized
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select
+    ss_ticket_number, sum(ss_item_sk), sum(q)
+from
+    (select
+        ss_ticket_number, ss_item_sk, min(ss_quantity) q
+    from
+        store_sales
+    group by ss_ticket_number, ss_item_sk) a
+group by ss_ticket_number
+order by ss_ticket_number
+PREHOOK: type: QUERY
+PREHOOK: Input: default@store_sales
+#### A masked pattern was here ####
+POSTHOOK: query: select
+    ss_ticket_number, sum(ss_item_sk), sum(q)
+from
+    (select
+        ss_ticket_number, ss_item_sk, min(ss_quantity) q
+    from
+        store_sales
+    group by ss_ticket_number, ss_item_sk) a
+group by ss_ticket_number
+order by ss_ticket_number
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@store_sales
+#### A masked pattern was here ####
+1      85411   816
+2      157365  812
+3      147948  710
+4      69545   411
+5      163232  840
+6      86307   627
+7      114874  563
+8      117953  662
+9      173250  690
+10     60338   602
+11     138545  657
+12     97181   586
+13     109484  555
+14     137333  442
+15     176829  652
+16     115004  654
+17     105008  460
+18     165135  738
+19     128252  831
+20     104789  374
+21     72771   469
+22     128153  449
+23     110253  603
+24     100662  1029
+25     118714  760
+26     81596   502
+27     164068  871
+28     58632   409
+29     133777  417
+30     130451  772
+31     114967  586
+32     142021  592
+33     151818  691
+34     112559  662
+35     137027  780
+36     118285  538
+37     94528   401
+38     81368   521
+39     101064  937
+40     84435   480
+41     112444  688
+42     95731   840
+43     57298   410
+44     159880  839
+45     68919   474
+46     111212  374
+47     78210   416
+48     94459   445
+49     90879   589
+50     37821   407
+51     124927  612
+52     98099   489
+53     138706  609
+54     87478   354
+55     90290   406
+56     78812   372
+57     101175  597
+58     88044   202
+59     104582  753
+60     99218   900
+61     66514   392
+62     126713  527
+63     98778   648
+64     131659  380
+65     86990   494
+66     108808  492
+67     75250   711
+68     91671   548
+69     92821   405
+70     75021   319
+71     124484  748
+72     161470  744
+73     104358  621
+74     88609   688
+75     92940   649
+76     75853   580
+77     124755  873
+78     98285   573
+79     160595  581
+80     151471  704
+81     105109  429
+82     55611   254
+PREHOOK: query: explain
+select
+    ss_ticket_number, ss_item_sk, sum(q)
+from
+    (select
+        ss_ticket_number, ss_item_sk, min(ss_quantity) q
+    from
+        store_sales
+    group by ss_ticket_number, ss_item_sk) a
+group by ss_ticket_number, ss_item_sk
+order by ss_ticket_number, ss_item_sk
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select
+    ss_ticket_number, ss_item_sk, sum(q)
+from
+    (select
+        ss_ticket_number, ss_item_sk, min(ss_quantity) q
+    from
+        store_sales
+    group by ss_ticket_number, ss_item_sk) a
+group by ss_ticket_number, ss_item_sk
+order by ss_ticket_number, ss_item_sk
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Tez
+      Edges:
+        Reducer 2 <- Map 1 (SIMPLE_EDGE)
+        Reducer 3 <- Reducer 2 (SIMPLE_EDGE)
+#### A masked pattern was here ####
+      Vertices:
+        Map 1
+            Map Operator Tree:
+                TableScan
+                  alias: store_sales
+                  Statistics: Num rows: 1000 Data size: 88276 Basic stats: 
COMPLETE Column stats: NONE
+                  Select Operator
+                    expressions: ss_ticket_number (type: int), ss_item_sk 
(type: int), ss_quantity (type: int)
+                    outputColumnNames: _col0, _col1, _col2
+                    Statistics: Num rows: 1000 Data size: 88276 Basic stats: 
COMPLETE Column stats: NONE
+                    Group By Operator
+                      aggregations: min(_col2)
+                      keys: _col0 (type: int), _col1 (type: int)
+                      mode: hash
+                      outputColumnNames: _col0, _col1, _col2
+                      Statistics: Num rows: 1000 Data size: 88276 Basic stats: 
COMPLETE Column stats: NONE
+                      Reduce Output Operator
+                        key expressions: _col0 (type: int), _col1 (type: int)
+                        sort order: ++
+                        Map-reduce partition columns: _col0 (type: int), _col1 
(type: int)
+                        Statistics: Num rows: 1000 Data size: 88276 Basic 
stats: COMPLETE Column stats: NONE
+                        value expressions: _col2 (type: int)
+            Execution mode: vectorized
+        Reducer 2
+            Reduce Operator Tree:
+              Group By Operator
+                aggregations: min(VALUE._col0)
+                keys: KEY._col0 (type: int), KEY._col1 (type: int)
+                mode: mergepartial
+                outputColumnNames: _col0, _col1, _col2
+                Statistics: Num rows: 500 Data size: 44138 Basic stats: 
COMPLETE Column stats: NONE
+                Group By Operator
+                  aggregations: sum(_col2)
+                  keys: _col0 (type: int), _col1 (type: int)
+                  mode: complete
+                  outputColumnNames: _col0, _col1, _col2
+                  Statistics: Num rows: 250 Data size: 22069 Basic stats: 
COMPLETE Column stats: NONE
+                  Reduce Output Operator
+                    key expressions: _col0 (type: int), _col1 (type: int)
+                    sort order: ++
+                    Statistics: Num rows: 250 Data size: 22069 Basic stats: 
COMPLETE Column stats: NONE
+                    value expressions: _col2 (type: bigint)
+            Execution mode: vectorized
+        Reducer 3
+            Reduce Operator Tree:
+              Select Operator
+                expressions: KEY.reducesinkkey0 (type: int), 
KEY.reducesinkkey1 (type: int), VALUE._col0 (type: bigint)
+                outputColumnNames: _col0, _col1, _col2
+                Statistics: Num rows: 250 Data size: 22069 Basic stats: 
COMPLETE Column stats: NONE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 250 Data size: 22069 Basic stats: 
COMPLETE Column stats: NONE
+                  table:
+                      input format: org.apache.hadoop.mapred.TextInputFormat
+                      output format: 
org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+                      serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+            Execution mode: vectorized
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select
+    ss_ticket_number, ss_item_sk, sum(q)
+from
+    (select
+        ss_ticket_number, ss_item_sk, min(ss_quantity) q
+    from
+        store_sales
+    group by ss_ticket_number, ss_item_sk) a
+group by ss_ticket_number, ss_item_sk
+order by ss_ticket_number, ss_item_sk
+PREHOOK: type: QUERY
+PREHOOK: Input: default@store_sales
+#### A masked pattern was here ####
+POSTHOOK: query: select
+    ss_ticket_number, ss_item_sk, sum(q)
+from
+    (select
+        ss_ticket_number, ss_item_sk, min(ss_quantity) q
+    from
+        store_sales
+    group by ss_ticket_number, ss_item_sk) a
+group by ss_ticket_number, ss_item_sk
+order by ss_ticket_number, ss_item_sk
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@store_sales
+#### A masked pattern was here ####
+1      49      5
+1      173     65
+1      1553    50
+1      3248    58
+1      3617    79
+1      4553    100
+1      4583    72
+1      4682    44
+1      5527    88
+1      5981    14
+1      10993   91
+1      13283   37
+1      13538   14
+1      13631   99
+2      1363    4
+2      2930    36
+2      3740    49
+2      6928    65
+2      7654    25
+2      9436    79
+2      10768   30
+2      12068   74
+2      12223   78
+2      13340   71
+2      13927   93
+2      14701   58
+2      15085   88
+2      15782   62
+2      17420   NULL
+3      246     96
+3      1531    NULL
+3      3525    42
+3      4698    98
+3      5355    53
+3      10693   27
+3      12447   82
+3      13021   64
+3      14100   79
+3      14443   4
+3      15786   56
+3      16869   4
+3      17263   17
+3      17971   88
+4      163     17
+4      1576    74
+4      5350    86
+4      5515    23
+4      6988    23
+4      7990    56
+4      8452    27
+4      9685    21
+4      11036   41
+4      12790   43
+5      1808    NULL
+5      1940    60
+5      5842    50
+5      6068    76
+5      6466    36
+5      11324   52
+5      11590   15
+5      12650   66
+5      13562   64
+5      13958   60
+5      14599   83
+5      14686   91
+5      15752   66
+5      16195   50
+5      16792   71
+6      2549    62
+6      2647    100
+6      3049    31
+6      3291    100
+6      6437    72
+6      8621    NULL
+6      10355   94
+6      10895   1
+6      11705   61
+6      13245   64
+6      13513   42
+7      4627    9
+7      4795    73
+7      4833    88
+7      5183    51
+7      5905    69
+7      8955    54
+7      9751    4
+7      10487   52
+7      12571   82
+7      15179   12
+7      15333   NULL
+7      17255   69
+8      665     31
+8      4183    90
+8      5929    83
+8      7115    54
+8      11365   7
+8      11893   95
+8      12041   95
+8      13427   87
+8      16671   20
+8      17119   51
+8      17545   49
+9      69      11
+9      889     6
+9      1185    62
+9      4623    34
+9      7945    83
+9      8334    71
+9      12027   27
+9      12969   59
+9      13483   NULL
+9      13717   53
+9      15133   15
+9      16083   32
+9      16363   54
+9      16461   66
+9      16659   84
+9      17310   33
+10     755     74
+10     1425    92
+10     1511    76
+10     3433    83
+10     3933    52
+10     4357    17
+10     5863    47
+10     9811    28
+10     13803   66
+10     15447   67
+11     157     84
+11     1315    70
+11     7519    68
+11     7608    66
+11     9901    57
+11     10699   33
+11     11490   NULL
+11     11991   38
+11     12438   16
+11     15157   96
+11     15649   33
+11     17226   11
+11     17395   85
+12     373     57
+12     1591    82
+12     4888    56
+12     6148    36
+12     6248    36
+12     9616    66
+12     9788    73
+12     13399   46
+12     14746   26
+12     14944   9
+12     15440   99
+13     868     NULL
+13     1760    12
+13     1898    NULL
+13     2108    9
+13     2191    NULL
+13     4430    73
+13     5971    80
+13     6085    58
+13     6140    15
+13     6682    80
+13     7640    48
+13     7723    27
+13     10096   12
+13     11758   34
+13     16894   87
+13     17240   20
+14     177     41
+14     769     20
+14     4507    4
+14     10175   19
+14     11549   6
+14     11653   60
+14     11817   81
+14     12587   NULL
+14     13069   77
+14     13515   57
+14     13845   17
+14     16741   46
+14     16929   14
+15     4241    21
+15     4505    59
+15     4777    28
+15     7391    98
+15     8336    15
+15     8353    NULL
+15     8690    32
+15     8707    21
+15     10361   39
+15     11659   80
+15     13172   25
+15     16619   81
+15     17267   7
+15     17330   82
+15     17564   26
+15     17857   38
+16     457     60
+16     1888    4
+16     4144    94
+16     6008    59
+16     7504    51
+16     8887    35
+16     9769    42
+16     9790    17
+16     9997    94
+16     11168   86
+16     11920   29
+16     16226   13
+16     17246   70
+17     2092    37
+17     4678    34
+17     6811    70
+17     9214    57
+17     10543   54
+17     11203   21
+17     13177   45
+17     13826   32
+17     15781   76
+17     17683   34
+18     2440    40
+18     5251    41
+18     7378    94
+18     8779    9
+18     8884    18
+18     9886    62
+18     11584   76
+18     11890   7
+18     12602   81
+18     12826   93
+18     12860   18
+18     14011   95
+18     14372   76
+18     14377   15
+18     17995   13
+19     1094    48
+19     3133    96
+19     3376    84
+19     4882    84
+19     6772    97
+19     7087    1
+19     7814    29
+19     8662    97
+19     9094    49
+19     9346    39
+19     10558   82
+19     10651   46
+19     11914   59
+19     16330   NULL
+19     17539   20
+20     1451    89
+20     2618    4
+20     5312    9
+20     5425    15
+20     5483    8
+20     6026    21
+20     7207    90
+20     8714    NULL
+20     9086    4
+20     9800    32
+20     13601   17
+20     14935   NULL
+20     15131   85
+21     230     48
+21     1810    59
+21     2870    50
+21     5170    45
+21     5998    51
+21     6476    49
+21     9187    14
+21     12266   47
+21     14368   18
+21     14396   88
+22     9985    70
+22     10474   31
+22     11599   66
+22     12415   10
+22     15310   15
+22     16396   85
+22     16922   88
+22     17392   14
+22     17660   70
+23     319     86
+23     7242    37
+23     8181    13
+23     8413    1
+23     9093    38
+23     9097    81
+23     11220   91
+23     11257   64
+23     12397   80
+23     15403   96
+23     17631   16
+24     407     53
+24     1389    72
+24     1795    21
+24     2497    85
+24     3103    73
+24     4425    57
+24     4749    28
+24     4873    41
+24     5653    92
+24     6043    1
+24     6751    82
+24     7375    97
+24     10265   93
+24     11551   48
+24     13303   97
+24     16483   89
+25     1333    55
+25     2150    100
+25     2608    76
+25     3454    100
+25     4880    29
+25     5954    34
+25     6955    40
+25     7874    65
+25     9472    48
+25     10159   24
+25     14488   26
+25     14635   68
+25     17000   40
+25     17752   55
+26     1989    26
+26     5053    4
+26     5385    97
+26     5721    81
+26     6647    64
+26     7337    45
+26     9679    18
+26     11895   77
+26     12851   56
+26     15039   34
+27     1305    44
+27     2137    96
+27     2671    92
+27     5831    61
+27     7139    59
+27     8167    28
+27     10757   15
+27     11441   15
+27     11509   65
+27     12237   89
+27     12749   31
+27     13885   66
+27     15025   26
+27     16029   59
+27     16419   65
+27     16767   60
+28     1807    98
+28     2817    8
+28     2967    29
+28     4483    78
+28     5437    15
+28     6411    3
+28     7965    93
+28     8043    58
+28     8407    14
+28     10295   13
+29     20      18
+29     1363    75
+29     2930    23
+29     3740    5
+29     7654    20
+29     9458    33
+29     10795   33
+29     12068   37
+29     12223   59
+29     13340   21
+29     13693   NULL
+29     15085   40
+29     15626   NULL
+29     15782   53
+30     217     91
+30     1951    59
+30     3238    16
+30     3506    15
+30     3928    87
+30     5431    77
+30     6752    69
+30     7870    7
+30     8666    21
+30     12572   33
+30     12670   20
+30     13579   75
+30     14848   62
+30     17348   62
+30     17875   78
+31     913     54
+31     4963    67
+31     6617    11
+31     6917    4
+31     7513    82
+31     11739   95
+31     14575   97
+31     14727   41
+31     15341   31
+31     15411   53
+31     16251   51
+32     1115    61
+32     2095    34
+32     2887    8
+32     4339    6
+32     4537    22
+32     4808    NULL
+32     5798    87
+32     7547    24
+32     9683    26
+32     11005   46
+32     11348   41
+32     12134   21
+32     15001   57
+32     15644   34
+32     16421   74
+32     17659   51
+33     4798    27
+33     7300    3
+33     9649    36
+33     10376   21
+33     11119   92
+33     11756   26
+33     12643   89
+33     12760   54
+33     12964   80
+33     14125   66
+33     14158   82
+33     14692   93
+33     15478   22
+34     1526    91
+34     1717    53
+34     2312    6
+34     4118    88
+34     5197    63
+34     5449    9
+34     6193    61
+34     9325    3
+34     9766    83
+34     12016   42
+34     12290   53
+34     12512   60
+34     13814   20
+34     16324   30
+35     411     51
+35     2377    52
+35     3667    97
+35     4325    56
+35     5179    83
+35     11635   87
+35     11661   81
+35     14239   55
+35     15619   45
+35     15757   9
+35     17341   92
+35     17365   65
+35     17451   7
+36     1115    80
+36     2095    43
+36     2887    31
+36     7547    46
+36     11005   49
+36     11349   80
+36     15001   54
+36     15645   23
+36     16421   25
+36     17561   16
+36     17659   91
+37     2997    94
+37     7283    87
+37     10715   52
+37     10929   88
+37     13171   6
+37     15337   62
+37     16971   12
+37     17125   NULL
+38     757     2
+38     2164    17
+38     3439    84
+38     4154    35
+38     5113    73
+38     6220    98
+38     7018    15
+38     7784    56
+38     8870    15
+38     9710    7
+38     10441   62
+38     15698   57
+39     386     89
+39     1598    64
+39     3476    73
+39     3943    64
+39     4190    86
+39     4957    24
+39     5393    98
+39     7097    78
+39     7118    67
+39     7604    49
+39     7697    24
+39     8078    54
+39     8411    96
+39     15491   54
+39     15625   17
+40     2854    71
+40     3490    65
+40     3985    63
+40     5098    35
+40     5318    87
+40     10094   80
+40     10912   23
+40     12050   NULL
+40     13658   53
+40     16976   3
+41     10      50
+41     64      29
+41     3380    88
+41     5566    11
+41     6310    90
+41     7402    69
+41     7603    94
+41     9322    8
+41     10915   81
+41     14788   15
+41     15242   87
+41     15328   46
+41     16514   20
+42     619     69
+42     976     100
+42     1436    94
+42     2314    74
+42     2392    14
+42     2602    30
+42     3346    74
+42     3613    30
+42     6058    30
+42     6134    92
+42     8462    23
+42     9740    52
+42     10016   57
+42     10471   19
+42     12550   41
+42     15002   41
+43     2923    16
+43     3344    22
+43     3911    26
+43     4364    77
+43     4691    41
+43     5773    85
+43     5852    16
+43     11771   30
+43     14669   97
+44     2351    56
+44     2623    18
+44     7303    14
+44     7527    67
+44     9059    68
+44     11707   83
+44     12341   20
+44     13331   98
+44     13449   45
+44     14149   80
+44     15803   81
+44     16491   56
+44     16837   92
+44     16909   61
+45     811     62
+45     1479    49
+45     3265    98
+45     5309    18
+45     7363    87
+45     10115   68
+45     11095   40
+45     13133   46
+45     16349   6
+46     1960    12
+46     3010    67
+46     7040    33
+46     8065    NULL
+46     11426   72
+46     13042   58
+46     15595   32
+46     16540   30
+46     17150   57
+46     17384   13
+47     254     NULL
+47     481     30
+47     1132    66
+47     1916    71
+47     3085    51
+47     3202    7
+47     3878    NULL
+47     4774    11
+47     5008    82
+47     5305    NULL
+47     5468    7
+47     7214    1
+47     9770    33
+47     13246   47
+47     13477   10
+48     1761    22
+48     2820    4
+48     2829    65
+48     4431    39
+48     5971    29
+48     6085    1
+48     6684    44
+48     9199    88
+48     11259   NULL
+48     12468   62
+48     13153   74
+48     17799   17
+49     749     60
+49     2135    4
+49     5342    69
+49     5852    47
+49     6805    40
+49     7141    94
+49     9049    68
+49     9553    71
+49     12737   48
+49     15155   84
+49     16361   4
+50     1280    69
+50     1312    30
+50     1909    53
+50     1984    40
+50     3097    64
+50     5023    NULL
+50     7135    69
+50     16081   82
+51     422     21
+51     3091    28
+51     4687    6
+51     5029    12
+51     5059    51
+51     6565    33
+51     8384    79
+51     9311    90
+51     10133   54
+51     11234   NULL
+51     12625   53
+51     13199   97
+51     17483   22
+51     17705   66
+52     2420    90
+52     3334    73
+52     6098    NULL
+52     7606    45
+52     11488   76
+52     15649   29
+52     16646   48
+52     17402   91
+52     17456   37
+53     1114    40
+53     2095    62
+53     2786    70
+53     2887    39
+53     7546    58
+53     11348   38
+53     13220   76
+53     13795   38
+53     15991   37
+53     16420   14
+53     16648   79
+53     17296   43
+53     17560   15
+54     702     40
+54     825     50
+54     1165    62
+54     3861    NULL
+54     6517    40
+54     9159    75
+54     14737   38
+54     16059   15
+54     16974   NULL
+54     17479   34
+55     1339    16
+55     3001    7
+55     5137    33
+55     9703    44
+55     12170   92
+55     12205   90
+55     14135   36
+55     14923   71
+55     17677   17
+56     4242    2
+56     4506    57
+56     8353    35
+56     8691    59
+56     8707    68
+56     10362   54
+56     16620   23
+56     17331   74
+57     3253    71
+57     4028    88
+57     4933    22
+57     12596   91
+57     12721   62
+57     12740   52
+57     15182   86
+57     17729   26
+57     17993   99
+58     1829    52
+58     3848    6
+58     5117    2
+58     7649    19
+58     9743    62
+58     10802   14
+58     15635   6
+58     16472   6
+58     16949   35
+59     3133    92
+59     3546    22
+59     5772    70
+59     7087    80
+59     8010    46
+59     8335    36
+59     9348    62
+59     9397    92
+59     10651   100
+59     11916   19
+59     12858   90
+59     14529   44
+60     97      50
+60     555     62
+60     633     71
+60     999     43
+60     1117    78
+60     1573    90
+60     4041    25
+60     4235    28
+60     4513    72
+60     4937    22
+60     7231    95
+60     10277   62
+60     10393   75
+60     13975   14
+60     16887   25
+60     17755   88
+61     1106    4
+61     2264    36
+61     3362    48
+61     4567    26
+61     5528    78
+61     6380    77
+61     7591    78
+61     8924    11
+61     10330   8
+61     16462   26
+62     4093    94
+62     6403    NULL
+62     8457    37
+62     10149   75
+62     12163   29
+62     12199   5
+62     12407   NULL
+62     13559   80
+62     15399   74
+62     15733   40
+62     16151   93
+63     4488    73
+63     5079    79
+63     5217    66
+63     5658    99
+63     9319    80
+63     11370   38
+63     11946   85
+63     13339   19
+63     15793   40
+63     16569   69
+64     1213    NULL
+64     3090    87
+64     3963    NULL
+64     11835   82
+64     13224   NULL
+64     14407   8
+64     15867   59
+64     15936   30
+64     16921   19
+64     17586   78
+64     17617   17
+65     2287    100
+65     4227    42
+65     9625    51
+65     9847    54
+65     13897   40
+65     14905   85
+65     15177   55
+65     17025   67
+66     6507    76
+66     7033    65
+66     7227    66
+66     8197    41
+66     9237    29
+66     10019   10
+66     11419   66
+66     15629   20
+66     16745   91
+66     16795   28
+67     757     77
+67     2133    74
+67     3439    73
+67     4155    87
+67     5113    NULL
+67     7020    79
+67     7507    77
+67     8469    59
+67     8871    71
+67     12087   70
+67     15699   44
+68     1387    74
+68     1603    57
+68     1820    54
+68     2035    22
+68     2296    52
+68     2564    83
+68     5162    23
+68     6763    77
+68     7765    NULL
+68     12526   3
+68     12724   88
+68     17426   2
+68     17600   13
+69     322     45
+69     337     34
+69     4208    9
+69     4267    10
+69     6136    7
+69     7264    67
+69     7822    30
+69     8599    53
+69     11137   68
+69     13489   66
+69     13792   NULL
+69     15448   16
+70     1592    53
+70     2462    NULL
+70     3296    48
+70     3947    NULL
+70     6185    82
+70     6425    NULL
+70     8893    17
+70     9857    20
+70     14549   4
+70     17815   95
+71     457     75
+71     1888    4
+71     2098    51
+71     4144    49
+71     5858    NULL
+71     6008    54
+71     7504    3
+71     8887    10
+71     9274    36
+71     9769    79
+71     9790    96
+71     9997    26
+71     10108   66
+71     10288   30
+71     11168   79
+71     17246   90
+72     1535    9
+72     5917    85
+72     6113    45
+72     6671    13
+72     9860    26
+72     10427   66
+72     10753   16
+72     11741   62
+72     12788   29
+72     12901   57
+72     13085   94
+72     13423   62
+72     13904   37
+72     15587   87
+72     16765   56
+73     247     53
+73     1063    37
+73     3205    82
+73     4946    54
+73     6862    58
+73     10051   49
+73     12502   75
+73     15109   38
+73     16519   97
+73     16585   38
+73     17269   40
+74     326     29
+74     3104    78
+74     3175    23
+74     3278    NULL
+74     3542    96
+74     3754    26
+74     5492    54
+74     7694    17
+74     8653    12
+74     9620    95
+74     10069   99
+74     13208   87
+74     16694   72
+75     607     20
+75     2948    25
+75     4625    73
+75     6938    89
+75     6953    71
+75     8726    6
+75     9905    54
+75     10217   85
+75     11039   70
+75     14186   63
+75     16796   93
+76     257     5
+76     465     2
+76     1107    16
+76     1503    97
+76     2265    98
+76     2869    32
+76     3363    25
+76     4237    48
+76     4567    40
+76     5529    78
+76     6381    50
+76     7591    27
+76     8925    6
+76     10331   3
+76     16463   53
+77     992     62
+77     1399    34
+77     2713    85
+77     3868    89
+77     6289    30
+77     7339    88
+77     7448    95
+77     7486    49
+77     8686    38
+77     9220    90
+77     11918   36
+77     12439   95
+77     13456   48
+77     14815   18
+77     16687   16
+78     901     3
+78     3304    50
+78     3856    27
+78     5965    78
+78     6044    59
+78     6110    43
+78     6500    76
+78     7576    87
+78     8611    79
+78     10507   6
+78     11209   7
+78     12706   19
+78     14996   39
+79     247     NULL
+79     1063    85
+79     3205    48
+79     4947    35
+79     6864    1
+79     10051   10
+79     10524   36
+79     12504   81
+79     14322   41
+79     15109   NULL
+79     15498   3
+79     15888   58
+79     16519   9
+79     16585   93
+79     17269   81
+80     998     93
+80     1519    25
+80     1573    40
+80     4040    66
+80     4513    NULL
+80     4622    1
+80     7231    49
+80     7610    37
+80     10393   5
+80     12968   NULL
+80     13717   91
+80     13975   13
+80     16363   84
+80     16886   77
+80     17308   29
+80     17755   94
+81     4486    31
+81     5078    75
+81     5216    64
+81     5656    24
+81     7166    7
+81     7663    79
+81     8918    37
+81     9319    36
+81     11107   36
+81     11368   26
+81     13339   6
+81     15793   8
+82     2572    53
+82     7862    75
+82     13138   59
+82     14998   49
+82     17041   18

http://git-wip-us.apache.org/repos/asf/hive/blob/072c5a0b/ql/src/test/results/clientpositive/tez/vectorization_limit.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/tez/vectorization_limit.q.out 
b/ql/src/test/results/clientpositive/tez/vectorization_limit.q.out
index 33f7ed9..fec2d2c 100644
--- a/ql/src/test/results/clientpositive/tez/vectorization_limit.q.out
+++ b/ql/src/test/results/clientpositive/tez/vectorization_limit.q.out
@@ -319,10 +319,10 @@ NULL
 -47
 -46
 PREHOOK: query: explain
-select ctinyint, count(distinct(cdouble)) from alltypesorc group by ctinyint 
limit 20
+select ctinyint, count(distinct(cdouble)) from alltypesorc group by ctinyint 
order by ctinyint limit 20
 PREHOOK: type: QUERY
 POSTHOOK: query: explain
-select ctinyint, count(distinct(cdouble)) from alltypesorc group by ctinyint 
limit 20
+select ctinyint, count(distinct(cdouble)) from alltypesorc group by ctinyint 
order by ctinyint limit 20
 POSTHOOK: type: QUERY
 STAGE DEPENDENCIES:
   Stage-1 is a root stage
@@ -385,11 +385,11 @@ STAGE PLANS:
       Processor Tree:
         ListSink
 
-PREHOOK: query: select ctinyint, count(distinct(cdouble)) from alltypesorc 
group by ctinyint limit 20
+PREHOOK: query: select ctinyint, count(distinct(cdouble)) from alltypesorc 
group by ctinyint order by ctinyint limit 20
 PREHOOK: type: QUERY
 PREHOOK: Input: default@alltypesorc
 #### A masked pattern was here ####
-POSTHOOK: query: select ctinyint, count(distinct(cdouble)) from alltypesorc 
group by ctinyint limit 20
+POSTHOOK: query: select ctinyint, count(distinct(cdouble)) from alltypesorc 
group by ctinyint order by ctinyint limit 20
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@alltypesorc
 #### A masked pattern was here ####

http://git-wip-us.apache.org/repos/asf/hive/blob/072c5a0b/ql/src/test/results/clientpositive/vector_groupby_reduce.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/vector_groupby_reduce.q.out 
b/ql/src/test/results/clientpositive/vector_groupby_reduce.q.out
index 331ba4f..fc1997c 100644
--- a/ql/src/test/results/clientpositive/vector_groupby_reduce.q.out
+++ b/ql/src/test/results/clientpositive/vector_groupby_reduce.q.out
@@ -314,12 +314,9 @@ POSTHOOK: Input: default@store_sales
 18
 19
 20
-PREHOOK: query: -- The Reduce task has 2 MergePartial GROUP BY operators in a 
row.  Currently,
--- we don't issue startGroup with keys out of the 1st vectorized GROUP BY, so 
we can't
--- vectorize the 2nd GROUP BY...
-explain
+PREHOOK: query: explain
 select 
-    min(ss_ticket_number)
+    min(ss_ticket_number) m
 from
     (select 
         ss_ticket_number
@@ -327,14 +324,11 @@ from
         store_sales
     group by ss_ticket_number) a
 group by ss_ticket_number
-limit 20
+order by m
 PREHOOK: type: QUERY
-POSTHOOK: query: -- The Reduce task has 2 MergePartial GROUP BY operators in a 
row.  Currently,
--- we don't issue startGroup with keys out of the 1st vectorized GROUP BY, so 
we can't
--- vectorize the 2nd GROUP BY...
-explain
+POSTHOOK: query: explain
 select 
-    min(ss_ticket_number)
+    min(ss_ticket_number) m
 from
     (select 
         ss_ticket_number
@@ -342,11 +336,12 @@ from
         store_sales
     group by ss_ticket_number) a
 group by ss_ticket_number
-limit 20
+order by m
 POSTHOOK: type: QUERY
 STAGE DEPENDENCIES:
   Stage-1 is a root stage
-  Stage-0 depends on stages: Stage-1
+  Stage-2 depends on stages: Stage-1
+  Stage-0 depends on stages: Stage-2
 
 STAGE PLANS:
   Stage: Stage-1
@@ -386,25 +381,42 @@ STAGE PLANS:
               expressions: _col1 (type: int)
               outputColumnNames: _col0
               Statistics: Num rows: 250 Data size: 22069 Basic stats: COMPLETE 
Column stats: NONE
-              Limit
-                Number of rows: 20
-                Statistics: Num rows: 20 Data size: 1760 Basic stats: COMPLETE 
Column stats: NONE
-                File Output Operator
-                  compressed: false
-                  Statistics: Num rows: 20 Data size: 1760 Basic stats: 
COMPLETE Column stats: NONE
-                  table:
-                      input format: org.apache.hadoop.mapred.TextInputFormat
-                      output format: 
org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
-                      serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+              File Output Operator
+                compressed: false
+                table:
+                    input format: 
org.apache.hadoop.mapred.SequenceFileInputFormat
+                    output format: 
org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                    serde: 
org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
+
+  Stage: Stage-2
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            Reduce Output Operator
+              key expressions: _col0 (type: int)
+              sort order: +
+              Statistics: Num rows: 250 Data size: 22069 Basic stats: COMPLETE 
Column stats: NONE
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int)
+          outputColumnNames: _col0
+          Statistics: Num rows: 250 Data size: 22069 Basic stats: COMPLETE 
Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 250 Data size: 22069 Basic stats: COMPLETE 
Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.TextInputFormat
+                output format: 
org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
 
   Stage: Stage-0
     Fetch Operator
-      limit: 20
+      limit: -1
       Processor Tree:
         ListSink
 
 PREHOOK: query: select 
-    min(ss_ticket_number)
+    min(ss_ticket_number) m
 from
     (select 
         ss_ticket_number
@@ -412,12 +424,12 @@ from
         store_sales
     group by ss_ticket_number) a
 group by ss_ticket_number
-limit 20
+order by m
 PREHOOK: type: QUERY
 PREHOOK: Input: default@store_sales
 #### A masked pattern was here ####
 POSTHOOK: query: select 
-    min(ss_ticket_number)
+    min(ss_ticket_number) m
 from
     (select 
         ss_ticket_number
@@ -425,7 +437,7 @@ from
         store_sales
     group by ss_ticket_number) a
 group by ss_ticket_number
-limit 20
+order by m
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@store_sales
 #### A masked pattern was here ####
@@ -449,3 +461,1401 @@ POSTHOOK: Input: default@store_sales
 18
 19
 20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+PREHOOK: query: explain
+select
+    ss_ticket_number, sum(ss_item_sk), sum(q)
+from
+    (select
+        ss_ticket_number, ss_item_sk, min(ss_quantity) q
+    from
+        store_sales
+    group by ss_ticket_number, ss_item_sk) a
+group by ss_ticket_number
+order by ss_ticket_number
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select
+    ss_ticket_number, sum(ss_item_sk), sum(q)
+from
+    (select
+        ss_ticket_number, ss_item_sk, min(ss_quantity) q
+    from
+        store_sales
+    group by ss_ticket_number, ss_item_sk) a
+group by ss_ticket_number
+order by ss_ticket_number
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-2 depends on stages: Stage-1
+  Stage-0 depends on stages: Stage-2
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: store_sales
+            Statistics: Num rows: 1000 Data size: 88276 Basic stats: COMPLETE 
Column stats: NONE
+            Select Operator
+              expressions: ss_ticket_number (type: int), ss_item_sk (type: 
int), ss_quantity (type: int)
+              outputColumnNames: _col0, _col1, _col2
+              Statistics: Num rows: 1000 Data size: 88276 Basic stats: 
COMPLETE Column stats: NONE
+              Group By Operator
+                aggregations: min(_col2)
+                keys: _col0 (type: int), _col1 (type: int)
+                mode: hash
+                outputColumnNames: _col0, _col1, _col2
+                Statistics: Num rows: 1000 Data size: 88276 Basic stats: 
COMPLETE Column stats: NONE
+                Reduce Output Operator
+                  key expressions: _col0 (type: int), _col1 (type: int)
+                  sort order: ++
+                  Map-reduce partition columns: _col0 (type: int)
+                  Statistics: Num rows: 1000 Data size: 88276 Basic stats: 
COMPLETE Column stats: NONE
+                  value expressions: _col2 (type: int)
+      Execution mode: vectorized
+      Reduce Operator Tree:
+        Group By Operator
+          aggregations: min(VALUE._col0)
+          keys: KEY._col0 (type: int), KEY._col1 (type: int)
+          mode: mergepartial
+          outputColumnNames: _col0, _col1, _col2
+          Statistics: Num rows: 500 Data size: 44138 Basic stats: COMPLETE 
Column stats: NONE
+          Group By Operator
+            aggregations: sum(_col1), sum(_col2)
+            keys: _col0 (type: int)
+            mode: complete
+            outputColumnNames: _col0, _col1, _col2
+            Statistics: Num rows: 250 Data size: 22069 Basic stats: COMPLETE 
Column stats: NONE
+            File Output Operator
+              compressed: false
+              table:
+                  input format: 
org.apache.hadoop.mapred.SequenceFileInputFormat
+                  output format: 
org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                  serde: 
org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
+
+  Stage: Stage-2
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            Reduce Output Operator
+              key expressions: _col0 (type: int)
+              sort order: +
+              Statistics: Num rows: 250 Data size: 22069 Basic stats: COMPLETE 
Column stats: NONE
+              value expressions: _col1 (type: bigint), _col2 (type: bigint)
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: 
bigint), VALUE._col1 (type: bigint)
+          outputColumnNames: _col0, _col1, _col2
+          Statistics: Num rows: 250 Data size: 22069 Basic stats: COMPLETE 
Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 250 Data size: 22069 Basic stats: COMPLETE 
Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.TextInputFormat
+                output format: 
org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select
+    ss_ticket_number, sum(ss_item_sk), sum(q)
+from
+    (select
+        ss_ticket_number, ss_item_sk, min(ss_quantity) q
+    from
+        store_sales
+    group by ss_ticket_number, ss_item_sk) a
+group by ss_ticket_number
+order by ss_ticket_number
+PREHOOK: type: QUERY
+PREHOOK: Input: default@store_sales
+#### A masked pattern was here ####
+POSTHOOK: query: select
+    ss_ticket_number, sum(ss_item_sk), sum(q)
+from
+    (select
+        ss_ticket_number, ss_item_sk, min(ss_quantity) q
+    from
+        store_sales
+    group by ss_ticket_number, ss_item_sk) a
+group by ss_ticket_number
+order by ss_ticket_number
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@store_sales
+#### A masked pattern was here ####
+1      85411   816
+2      157365  812
+3      147948  710
+4      69545   411
+5      163232  840
+6      86307   627
+7      114874  563
+8      117953  662
+9      173250  690
+10     60338   602
+11     138545  657
+12     97181   586
+13     109484  555
+14     137333  442
+15     176829  652
+16     115004  654
+17     105008  460
+18     165135  738
+19     128252  831
+20     104789  374
+21     72771   469
+22     128153  449
+23     110253  603
+24     100662  1029
+25     118714  760
+26     81596   502
+27     164068  871
+28     58632   409
+29     133777  417
+30     130451  772
+31     114967  586
+32     142021  592
+33     151818  691
+34     112559  662
+35     137027  780
+36     118285  538
+37     94528   401
+38     81368   521
+39     101064  937
+40     84435   480
+41     112444  688
+42     95731   840
+43     57298   410
+44     159880  839
+45     68919   474
+46     111212  374
+47     78210   416
+48     94459   445
+49     90879   589
+50     37821   407
+51     124927  612
+52     98099   489
+53     138706  609
+54     87478   354
+55     90290   406
+56     78812   372
+57     101175  597
+58     88044   202
+59     104582  753
+60     99218   900
+61     66514   392
+62     126713  527
+63     98778   648
+64     131659  380
+65     86990   494
+66     108808  492
+67     75250   711
+68     91671   548
+69     92821   405
+70     75021   319
+71     124484  748
+72     161470  744
+73     104358  621
+74     88609   688
+75     92940   649
+76     75853   580
+77     124755  873
+78     98285   573
+79     160595  581
+80     151471  704
+81     105109  429
+82     55611   254
+PREHOOK: query: explain
+select
+    ss_ticket_number, ss_item_sk, sum(q)
+from
+    (select
+        ss_ticket_number, ss_item_sk, min(ss_quantity) q
+    from
+        store_sales
+    group by ss_ticket_number, ss_item_sk) a
+group by ss_ticket_number, ss_item_sk
+order by ss_ticket_number, ss_item_sk
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select
+    ss_ticket_number, ss_item_sk, sum(q)
+from
+    (select
+        ss_ticket_number, ss_item_sk, min(ss_quantity) q
+    from
+        store_sales
+    group by ss_ticket_number, ss_item_sk) a
+group by ss_ticket_number, ss_item_sk
+order by ss_ticket_number, ss_item_sk
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-2 depends on stages: Stage-1
+  Stage-0 depends on stages: Stage-2
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: store_sales
+            Statistics: Num rows: 1000 Data size: 88276 Basic stats: COMPLETE 
Column stats: NONE
+            Select Operator
+              expressions: ss_ticket_number (type: int), ss_item_sk (type: 
int), ss_quantity (type: int)
+              outputColumnNames: _col0, _col1, _col2
+              Statistics: Num rows: 1000 Data size: 88276 Basic stats: 
COMPLETE Column stats: NONE
+              Group By Operator
+                aggregations: min(_col2)
+                keys: _col0 (type: int), _col1 (type: int)
+                mode: hash
+                outputColumnNames: _col0, _col1, _col2
+                Statistics: Num rows: 1000 Data size: 88276 Basic stats: 
COMPLETE Column stats: NONE
+                Reduce Output Operator
+                  key expressions: _col0 (type: int), _col1 (type: int)
+                  sort order: ++
+                  Map-reduce partition columns: _col0 (type: int), _col1 
(type: int)
+                  Statistics: Num rows: 1000 Data size: 88276 Basic stats: 
COMPLETE Column stats: NONE
+                  value expressions: _col2 (type: int)
+      Execution mode: vectorized
+      Reduce Operator Tree:
+        Group By Operator
+          aggregations: min(VALUE._col0)
+          keys: KEY._col0 (type: int), KEY._col1 (type: int)
+          mode: mergepartial
+          outputColumnNames: _col0, _col1, _col2
+          Statistics: Num rows: 500 Data size: 44138 Basic stats: COMPLETE 
Column stats: NONE
+          Group By Operator
+            aggregations: sum(_col2)
+            keys: _col0 (type: int), _col1 (type: int)
+            mode: complete
+            outputColumnNames: _col0, _col1, _col2
+            Statistics: Num rows: 250 Data size: 22069 Basic stats: COMPLETE 
Column stats: NONE
+            File Output Operator
+              compressed: false
+              table:
+                  input format: 
org.apache.hadoop.mapred.SequenceFileInputFormat
+                  output format: 
org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                  serde: 
org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
+
+  Stage: Stage-2
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            Reduce Output Operator
+              key expressions: _col0 (type: int), _col1 (type: int)
+              sort order: ++
+              Statistics: Num rows: 250 Data size: 22069 Basic stats: COMPLETE 
Column stats: NONE
+              value expressions: _col2 (type: bigint)
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), KEY.reducesinkkey1 
(type: int), VALUE._col0 (type: bigint)
+          outputColumnNames: _col0, _col1, _col2
+          Statistics: Num rows: 250 Data size: 22069 Basic stats: COMPLETE 
Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 250 Data size: 22069 Basic stats: COMPLETE 
Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.TextInputFormat
+                output format: 
org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select
+    ss_ticket_number, ss_item_sk, sum(q)
+from
+    (select
+        ss_ticket_number, ss_item_sk, min(ss_quantity) q
+    from
+        store_sales
+    group by ss_ticket_number, ss_item_sk) a
+group by ss_ticket_number, ss_item_sk
+order by ss_ticket_number, ss_item_sk
+PREHOOK: type: QUERY
+PREHOOK: Input: default@store_sales
+#### A masked pattern was here ####
+POSTHOOK: query: select
+    ss_ticket_number, ss_item_sk, sum(q)
+from
+    (select
+        ss_ticket_number, ss_item_sk, min(ss_quantity) q
+    from
+        store_sales
+    group by ss_ticket_number, ss_item_sk) a
+group by ss_ticket_number, ss_item_sk
+order by ss_ticket_number, ss_item_sk
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@store_sales
+#### A masked pattern was here ####
+1      49      5
+1      173     65
+1      1553    50
+1      3248    58
+1      3617    79
+1      4553    100
+1      4583    72
+1      4682    44
+1      5527    88
+1      5981    14
+1      10993   91
+1      13283   37
+1      13538   14
+1      13631   99
+2      1363    4
+2      2930    36
+2      3740    49
+2      6928    65
+2      7654    25
+2      9436    79
+2      10768   30
+2      12068   74
+2      12223   78
+2      13340   71
+2      13927   93
+2      14701   58
+2      15085   88
+2      15782   62
+2      17420   NULL
+3      246     96
+3      1531    NULL
+3      3525    42
+3      4698    98
+3      5355    53
+3      10693   27
+3      12447   82
+3      13021   64
+3      14100   79
+3      14443   4
+3      15786   56
+3      16869   4
+3      17263   17
+3      17971   88
+4      163     17
+4      1576    74
+4      5350    86
+4      5515    23
+4      6988    23
+4      7990    56
+4      8452    27
+4      9685    21
+4      11036   41
+4      12790   43
+5      1808    NULL
+5      1940    60
+5      5842    50
+5      6068    76
+5      6466    36
+5      11324   52
+5      11590   15
+5      12650   66
+5      13562   64
+5      13958   60
+5      14599   83
+5      14686   91
+5      15752   66
+5      16195   50
+5      16792   71
+6      2549    62
+6      2647    100
+6      3049    31
+6      3291    100
+6      6437    72
+6      8621    NULL
+6      10355   94
+6      10895   1
+6      11705   61
+6      13245   64
+6      13513   42
+7      4627    9
+7      4795    73
+7      4833    88
+7      5183    51
+7      5905    69
+7      8955    54
+7      9751    4
+7      10487   52
+7      12571   82
+7      15179   12
+7      15333   NULL
+7      17255   69
+8      665     31
+8      4183    90
+8      5929    83
+8      7115    54
+8      11365   7
+8      11893   95
+8      12041   95
+8      13427   87
+8      16671   20
+8      17119   51
+8      17545   49
+9      69      11
+9      889     6
+9      1185    62
+9      4623    34
+9      7945    83
+9      8334    71
+9      12027   27
+9      12969   59
+9      13483   NULL
+9      13717   53
+9      15133   15
+9      16083   32
+9      16363   54
+9      16461   66
+9      16659   84
+9      17310   33
+10     755     74
+10     1425    92
+10     1511    76
+10     3433    83
+10     3933    52
+10     4357    17
+10     5863    47
+10     9811    28
+10     13803   66
+10     15447   67
+11     157     84
+11     1315    70
+11     7519    68
+11     7608    66
+11     9901    57
+11     10699   33
+11     11490   NULL
+11     11991   38
+11     12438   16
+11     15157   96
+11     15649   33
+11     17226   11
+11     17395   85
+12     373     57
+12     1591    82
+12     4888    56
+12     6148    36
+12     6248    36
+12     9616    66
+12     9788    73
+12     13399   46
+12     14746   26
+12     14944   9
+12     15440   99
+13     868     NULL
+13     1760    12
+13     1898    NULL
+13     2108    9
+13     2191    NULL
+13     4430    73
+13     5971    80
+13     6085    58
+13     6140    15
+13     6682    80
+13     7640    48
+13     7723    27
+13     10096   12
+13     11758   34
+13     16894   87
+13     17240   20
+14     177     41
+14     769     20
+14     4507    4
+14     10175   19
+14     11549   6
+14     11653   60
+14     11817   81
+14     12587   NULL
+14     13069   77
+14     13515   57
+14     13845   17
+14     16741   46
+14     16929   14
+15     4241    21
+15     4505    59
+15     4777    28
+15     7391    98
+15     8336    15
+15     8353    NULL
+15     8690    32
+15     8707    21
+15     10361   39
+15     11659   80
+15     13172   25
+15     16619   81
+15     17267   7
+15     17330   82
+15     17564   26
+15     17857   38
+16     457     60
+16     1888    4
+16     4144    94
+16     6008    59
+16     7504    51
+16     8887    35
+16     9769    42
+16     9790    17
+16     9997    94
+16     11168   86
+16     11920   29
+16     16226   13
+16     17246   70
+17     2092    37
+17     4678    34
+17     6811    70
+17     9214    57
+17     10543   54
+17     11203   21
+17     13177   45
+17     13826   32
+17     15781   76
+17     17683   34
+18     2440    40
+18     5251    41
+18     7378    94
+18     8779    9
+18     8884    18
+18     9886    62
+18     11584   76
+18     11890   7
+18     12602   81
+18     12826   93
+18     12860   18
+18     14011   95
+18     14372   76
+18     14377   15
+18     17995   13
+19     1094    48
+19     3133    96
+19     3376    84
+19     4882    84
+19     6772    97
+19     7087    1
+19     7814    29
+19     8662    97
+19     9094    49
+19     9346    39
+19     10558   82
+19     10651   46
+19     11914   59
+19     16330   NULL
+19     17539   20
+20     1451    89
+20     2618    4
+20     5312    9
+20     5425    15
+20     5483    8
+20     6026    21
+20     7207    90
+20     8714    NULL
+20     9086    4
+20     9800    32
+20     13601   17
+20     14935   NULL
+20     15131   85
+21     230     48
+21     1810    59
+21     2870    50
+21     5170    45
+21     5998    51
+21     6476    49
+21     9187    14
+21     12266   47
+21     14368   18
+21     14396   88
+22     9985    70
+22     10474   31
+22     11599   66
+22     12415   10
+22     15310   15
+22     16396   85
+22     16922   88
+22     17392   14
+22     17660   70
+23     319     86
+23     7242    37
+23     8181    13
+23     8413    1
+23     9093    38
+23     9097    81
+23     11220   91
+23     11257   64
+23     12397   80
+23     15403   96
+23     17631   16
+24     407     53
+24     1389    72
+24     1795    21
+24     2497    85
+24     3103    73
+24     4425    57
+24     4749    28
+24     4873    41
+24     5653    92
+24     6043    1
+24     6751    82
+24     7375    97
+24     10265   93
+24     11551   48
+24     13303   97
+24     16483   89
+25     1333    55
+25     2150    100
+25     2608    76
+25     3454    100
+25     4880    29
+25     5954    34
+25     6955    40
+25     7874    65
+25     9472    48
+25     10159   24
+25     14488   26
+25     14635   68
+25     17000   40
+25     17752   55
+26     1989    26
+26     5053    4
+26     5385    97
+26     5721    81
+26     6647    64
+26     7337    45
+26     9679    18
+26     11895   77
+26     12851   56
+26     15039   34
+27     1305    44
+27     2137    96
+27     2671    92
+27     5831    61
+27     7139    59
+27     8167    28
+27     10757   15
+27     11441   15
+27     11509   65
+27     12237   89
+27     12749   31
+27     13885   66
+27     15025   26
+27     16029   59
+27     16419   65
+27     16767   60
+28     1807    98
+28     2817    8
+28     2967    29
+28     4483    78
+28     5437    15
+28     6411    3
+28     7965    93
+28     8043    58
+28     8407    14
+28     10295   13
+29     20      18
+29     1363    75
+29     2930    23
+29     3740    5
+29     7654    20
+29     9458    33
+29     10795   33
+29     12068   37
+29     12223   59
+29     13340   21
+29     13693   NULL
+29     15085   40
+29     15626   NULL
+29     15782   53
+30     217     91
+30     1951    59
+30     3238    16
+30     3506    15
+30     3928    87
+30     5431    77
+30     6752    69
+30     7870    7
+30     8666    21
+30     12572   33
+30     12670   20
+30     13579   75
+30     14848   62
+30     17348   62
+30     17875   78
+31     913     54
+31     4963    67
+31     6617    11
+31     6917    4
+31     7513    82
+31     11739   95
+31     14575   97
+31     14727   41
+31     15341   31
+31     15411   53
+31     16251   51
+32     1115    61
+32     2095    34
+32     2887    8
+32     4339    6
+32     4537    22
+32     4808    NULL
+32     5798    87
+32     7547    24
+32     9683    26
+32     11005   46
+32     11348   41
+32     12134   21
+32     15001   57
+32     15644   34
+32     16421   74
+32     17659   51
+33     4798    27
+33     7300    3
+33     9649    36
+33     10376   21
+33     11119   92
+33     11756   26
+33     12643   89
+33     12760   54
+33     12964   80
+33     14125   66
+33     14158   82
+33     14692   93
+33     15478   22
+34     1526    91
+34     1717    53
+34     2312    6
+34     4118    88
+34     5197    63
+34     5449    9
+34     6193    61
+34     9325    3
+34     9766    83
+34     12016   42
+34     12290   53
+34     12512   60
+34     13814   20
+34     16324   30
+35     411     51
+35     2377    52
+35     3667    97
+35     4325    56
+35     5179    83
+35     11635   87
+35     11661   81
+35     14239   55
+35     15619   45
+35     15757   9
+35     17341   92
+35     17365   65
+35     17451   7
+36     1115    80
+36     2095    43
+36     2887    31
+36     7547    46
+36     11005   49
+36     11349   80
+36     15001   54
+36     15645   23
+36     16421   25
+36     17561   16
+36     17659   91
+37     2997    94
+37     7283    87
+37     10715   52
+37     10929   88
+37     13171   6
+37     15337   62
+37     16971   12
+37     17125   NULL
+38     757     2
+38     2164    17
+38     3439    84
+38     4154    35
+38     5113    73
+38     6220    98
+38     7018    15
+38     7784    56
+38     8870    15
+38     9710    7
+38     10441   62
+38     15698   57
+39     386     89
+39     1598    64
+39     3476    73
+39     3943    64
+39     4190    86
+39     4957    24
+39     5393    98
+39     7097    78
+39     7118    67
+39     7604    49
+39     7697    24
+39     8078    54
+39     8411    96
+39     15491   54
+39     15625   17
+40     2854    71
+40     3490    65
+40     3985    63
+40     5098    35
+40     5318    87
+40     10094   80
+40     10912   23
+40     12050   NULL
+40     13658   53
+40     16976   3
+41     10      50
+41     64      29
+41     3380    88
+41     5566    11
+41     6310    90
+41     7402    69
+41     7603    94
+41     9322    8
+41     10915   81
+41     14788   15
+41     15242   87
+41     15328   46
+41     16514   20
+42     619     69
+42     976     100
+42     1436    94
+42     2314    74
+42     2392    14
+42     2602    30
+42     3346    74
+42     3613    30
+42     6058    30
+42     6134    92
+42     8462    23
+42     9740    52
+42     10016   57
+42     10471   19
+42     12550   41
+42     15002   41
+43     2923    16
+43     3344    22
+43     3911    26
+43     4364    77
+43     4691    41
+43     5773    85
+43     5852    16
+43     11771   30
+43     14669   97
+44     2351    56
+44     2623    18
+44     7303    14
+44     7527    67
+44     9059    68
+44     11707   83
+44     12341   20
+44     13331   98
+44     13449   45
+44     14149   80
+44     15803   81
+44     16491   56
+44     16837   92
+44     16909   61
+45     811     62
+45     1479    49
+45     3265    98
+45     5309    18
+45     7363    87
+45     10115   68
+45     11095   40
+45     13133   46
+45     16349   6
+46     1960    12
+46     3010    67
+46     7040    33
+46     8065    NULL
+46     11426   72
+46     13042   58
+46     15595   32
+46     16540   30
+46     17150   57
+46     17384   13
+47     254     NULL
+47     481     30
+47     1132    66
+47     1916    71
+47     3085    51
+47     3202    7
+47     3878    NULL
+47     4774    11
+47     5008    82
+47     5305    NULL
+47     5468    7
+47     7214    1
+47     9770    33
+47     13246   47
+47     13477   10
+48     1761    22
+48     2820    4
+48     2829    65
+48     4431    39
+48     5971    29
+48     6085    1
+48     6684    44
+48     9199    88
+48     11259   NULL
+48     12468   62
+48     13153   74
+48     17799   17
+49     749     60
+49     2135    4
+49     5342    69
+49     5852    47
+49     6805    40
+49     7141    94
+49     9049    68
+49     9553    71
+49     12737   48
+49     15155   84
+49     16361   4
+50     1280    69
+50     1312    30
+50     1909    53
+50     1984    40
+50     3097    64
+50     5023    NULL
+50     7135    69
+50     16081   82
+51     422     21
+51     3091    28
+51     4687    6
+51     5029    12
+51     5059    51
+51     6565    33
+51     8384    79
+51     9311    90
+51     10133   54
+51     11234   NULL
+51     12625   53
+51     13199   97
+51     17483   22
+51     17705   66
+52     2420    90
+52     3334    73
+52     6098    NULL
+52     7606    45
+52     11488   76
+52     15649   29
+52     16646   48
+52     17402   91
+52     17456   37
+53     1114    40
+53     2095    62
+53     2786    70
+53     2887    39
+53     7546    58
+53     11348   38
+53     13220   76
+53     13795   38
+53     15991   37
+53     16420   14
+53     16648   79
+53     17296   43
+53     17560   15
+54     702     40
+54     825     50
+54     1165    62
+54     3861    NULL
+54     6517    40
+54     9159    75
+54     14737   38
+54     16059   15
+54     16974   NULL
+54     17479   34
+55     1339    16
+55     3001    7
+55     5137    33
+55     9703    44
+55     12170   92
+55     12205   90
+55     14135   36
+55     14923   71
+55     17677   17
+56     4242    2
+56     4506    57
+56     8353    35
+56     8691    59
+56     8707    68
+56     10362   54
+56     16620   23
+56     17331   74
+57     3253    71
+57     4028    88
+57     4933    22
+57     12596   91
+57     12721   62
+57     12740   52
+57     15182   86
+57     17729   26
+57     17993   99
+58     1829    52
+58     3848    6
+58     5117    2
+58     7649    19
+58     9743    62
+58     10802   14
+58     15635   6
+58     16472   6
+58     16949   35
+59     3133    92
+59     3546    22
+59     5772    70
+59     7087    80
+59     8010    46
+59     8335    36
+59     9348    62
+59     9397    92
+59     10651   100
+59     11916   19
+59     12858   90
+59     14529   44
+60     97      50
+60     555     62
+60     633     71
+60     999     43
+60     1117    78
+60     1573    90
+60     4041    25
+60     4235    28
+60     4513    72
+60     4937    22
+60     7231    95
+60     10277   62
+60     10393   75
+60     13975   14
+60     16887   25
+60     17755   88
+61     1106    4
+61     2264    36
+61     3362    48
+61     4567    26
+61     5528    78
+61     6380    77
+61     7591    78
+61     8924    11
+61     10330   8
+61     16462   26
+62     4093    94
+62     6403    NULL
+62     8457    37
+62     10149   75
+62     12163   29
+62     12199   5
+62     12407   NULL
+62     13559   80
+62     15399   74
+62     15733   40
+62     16151   93
+63     4488    73
+63     5079    79
+63     5217    66
+63     5658    99
+63     9319    80
+63     11370   38
+63     11946   85
+63     13339   19
+63     15793   40
+63     16569   69
+64     1213    NULL
+64     3090    87
+64     3963    NULL
+64     11835   82
+64     13224   NULL
+64     14407   8
+64     15867   59
+64     15936   30
+64     16921   19
+64     17586   78
+64     17617   17
+65     2287    100
+65     4227    42
+65     9625    51
+65     9847    54
+65     13897   40
+65     14905   85
+65     15177   55
+65     17025   67
+66     6507    76
+66     7033    65
+66     7227    66
+66     8197    41
+66     9237    29
+66     10019   10
+66     11419   66
+66     15629   20
+66     16745   91
+66     16795   28
+67     757     77
+67     2133    74
+67     3439    73
+67     4155    87
+67     5113    NULL
+67     7020    79
+67     7507    77
+67     8469    59
+67     8871    71
+67     12087   70
+67     15699   44
+68     1387    74
+68     1603    57
+68     1820    54
+68     2035    22
+68     2296    52
+68     2564    83
+68     5162    23
+68     6763    77
+68     7765    NULL
+68     12526   3
+68     12724   88
+68     17426   2
+68     17600   13
+69     322     45
+69     337     34
+69     4208    9
+69     4267    10
+69     6136    7
+69     7264    67
+69     7822    30
+69     8599    53
+69     11137   68
+69     13489   66
+69     13792   NULL
+69     15448   16
+70     1592    53
+70     2462    NULL
+70     3296    48
+70     3947    NULL
+70     6185    82
+70     6425    NULL
+70     8893    17
+70     9857    20
+70     14549   4
+70     17815   95
+71     457     75
+71     1888    4
+71     2098    51
+71     4144    49
+71     5858    NULL
+71     6008    54
+71     7504    3
+71     8887    10
+71     9274    36
+71     9769    79
+71     9790    96
+71     9997    26
+71     10108   66
+71     10288   30
+71     11168   79
+71     17246   90
+72     1535    9
+72     5917    85
+72     6113    45
+72     6671    13
+72     9860    26
+72     10427   66
+72     10753   16
+72     11741   62
+72     12788   29
+72     12901   57
+72     13085   94
+72     13423   62
+72     13904   37
+72     15587   87
+72     16765   56
+73     247     53
+73     1063    37
+73     3205    82
+73     4946    54
+73     6862    58
+73     10051   49
+73     12502   75
+73     15109   38
+73     16519   97
+73     16585   38
+73     17269   40
+74     326     29
+74     3104    78
+74     3175    23
+74     3278    NULL
+74     3542    96
+74     3754    26
+74     5492    54
+74     7694    17
+74     8653    12
+74     9620    95
+74     10069   99
+74     13208   87
+74     16694   72
+75     607     20
+75     2948    25
+75     4625    73
+75     6938    89
+75     6953    71
+75     8726    6
+75     9905    54
+75     10217   85
+75     11039   70
+75     14186   63
+75     16796   93
+76     257     5
+76     465     2
+76     1107    16
+76     1503    97
+76     2265    98
+76     2869    32
+76     3363    25
+76     4237    48
+76     4567    40
+76     5529    78
+76     6381    50
+76     7591    27
+76     8925    6
+76     10331   3
+76     16463   53
+77     992     62
+77     1399    34
+77     2713    85
+77     3868    89
+77     6289    30
+77     7339    88
+77     7448    95
+77     7486    49
+77     8686    38
+77     9220    90
+77     11918   36
+77     12439   95
+77     13456   48
+77     14815   18
+77     16687   16
+78     901     3
+78     3304    50
+78     3856    27
+78     5965    78
+78     6044    59
+78     6110    43
+78     6500    76
+78     7576    87
+78     8611    79
+78     10507   6
+78     11209   7
+78     12706   19
+78     14996   39
+79     247     NULL
+79     1063    85
+79     3205    48
+79     4947    35
+79     6864    1
+79     10051   10
+79     10524   36
+79     12504   81
+79     14322   41
+79     15109   NULL
+79     15498   3
+79     15888   58
+79     16519   9
+79     16585   93
+79     17269   81
+80     998     93
+80     1519    25
+80     1573    40
+80     4040    66
+80     4513    NULL
+80     4622    1
+80     7231    49
+80     7610    37
+80     10393   5
+80     12968   NULL
+80     13717   91
+80     13975   13
+80     16363   84
+80     16886   77
+80     17308   29
+80     17755   94
+81     4486    31
+81     5078    75
+81     5216    64
+81     5656    24
+81     7166    7
+81     7663    79
+81     8918    37
+81     9319    36
+81     11107   36
+81     11368   26
+81     13339   6
+81     15793   8
+82     2572    53
+82     7862    75
+82     13138   59
+82     14998   49
+82     17041   18

http://git-wip-us.apache.org/repos/asf/hive/blob/072c5a0b/ql/src/test/results/clientpositive/vectorization_limit.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/vectorization_limit.q.out 
b/ql/src/test/results/clientpositive/vectorization_limit.q.out
index 9ff888c..2400baa 100644
--- a/ql/src/test/results/clientpositive/vectorization_limit.q.out
+++ b/ql/src/test/results/clientpositive/vectorization_limit.q.out
@@ -316,10 +316,10 @@ NULL
 -47
 -46
 PREHOOK: query: explain
-select ctinyint, count(distinct(cdouble)) from alltypesorc group by ctinyint 
limit 20
+select ctinyint, count(distinct(cdouble)) from alltypesorc group by ctinyint 
order by ctinyint limit 20
 PREHOOK: type: QUERY
 POSTHOOK: query: explain
-select ctinyint, count(distinct(cdouble)) from alltypesorc group by ctinyint 
limit 20
+select ctinyint, count(distinct(cdouble)) from alltypesorc group by ctinyint 
order by ctinyint limit 20
 POSTHOOK: type: QUERY
 STAGE DEPENDENCIES:
   Stage-1 is a root stage
@@ -373,11 +373,11 @@ STAGE PLANS:
       Processor Tree:
         ListSink
 
-PREHOOK: query: select ctinyint, count(distinct(cdouble)) from alltypesorc 
group by ctinyint limit 20
+PREHOOK: query: select ctinyint, count(distinct(cdouble)) from alltypesorc 
group by ctinyint order by ctinyint limit 20
 PREHOOK: type: QUERY
 PREHOOK: Input: default@alltypesorc
 #### A masked pattern was here ####
-POSTHOOK: query: select ctinyint, count(distinct(cdouble)) from alltypesorc 
group by ctinyint limit 20
+POSTHOOK: query: select ctinyint, count(distinct(cdouble)) from alltypesorc 
group by ctinyint order by ctinyint limit 20
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@alltypesorc
 #### A masked pattern was here ####

Reply via email to