You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by jc...@apache.org on 2016/11/11 01:40:46 UTC

[3/5] hive git commit: HIVE-15119: Support standard syntax for ROLLUP & CUBE (Vineet Garg, reviewed by Jesus Camacho Rodriguez)

http://git-wip-us.apache.org/repos/asf/hive/blob/444af207/ql/src/test/results/clientpositive/groupby_cube1.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/groupby_cube1.q.out b/ql/src/test/results/clientpositive/groupby_cube1.q.out
index b9cfeb2..0258bb8 100644
--- a/ql/src/test/results/clientpositive/groupby_cube1.q.out
+++ b/ql/src/test/results/clientpositive/groupby_cube1.q.out
@@ -77,6 +77,65 @@ STAGE PLANS:
       Processor Tree:
         ListSink
 
+PREHOOK: query: EXPLAIN
+SELECT key, val, count(1) FROM T1 GROUP BY CUBE(key, val)
+PREHOOK: type: QUERY
+POSTHOOK: query: EXPLAIN
+SELECT key, val, count(1) FROM T1 GROUP BY CUBE(key, val)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: t1
+            Statistics: Num rows: 1 Data size: 30 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: key (type: string), val (type: string)
+              outputColumnNames: _col0, _col1
+              Statistics: Num rows: 1 Data size: 30 Basic stats: COMPLETE Column stats: NONE
+              Group By Operator
+                aggregations: count(1)
+                keys: _col0 (type: string), _col1 (type: string), '0' (type: string)
+                mode: hash
+                outputColumnNames: _col0, _col1, _col2, _col3
+                Statistics: Num rows: 4 Data size: 120 Basic stats: COMPLETE Column stats: NONE
+                Reduce Output Operator
+                  key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string)
+                  sort order: +++
+                  Map-reduce partition columns: _col0 (type: string), _col1 (type: string), _col2 (type: string)
+                  Statistics: Num rows: 4 Data size: 120 Basic stats: COMPLETE Column stats: NONE
+                  value expressions: _col3 (type: bigint)
+      Reduce Operator Tree:
+        Group By Operator
+          aggregations: count(VALUE._col0)
+          keys: KEY._col0 (type: string), KEY._col1 (type: string), KEY._col2 (type: string)
+          mode: mergepartial
+          outputColumnNames: _col0, _col1, _col3
+          Statistics: Num rows: 2 Data size: 60 Basic stats: COMPLETE Column stats: NONE
+          pruneGroupingSetId: true
+          Select Operator
+            expressions: _col0 (type: string), _col1 (type: string), _col3 (type: bigint)
+            outputColumnNames: _col0, _col1, _col2
+            Statistics: Num rows: 2 Data size: 60 Basic stats: COMPLETE Column stats: NONE
+            File Output Operator
+              compressed: false
+              Statistics: Num rows: 2 Data size: 60 Basic stats: COMPLETE Column stats: NONE
+              table:
+                  input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                  output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                  serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
 PREHOOK: query: SELECT key, val, count(1) FROM T1 GROUP BY key, val with cube
 PREHOOK: type: QUERY
 PREHOOK: Input: default@t1

http://git-wip-us.apache.org/repos/asf/hive/blob/444af207/ql/src/test/results/clientpositive/groupby_cube_multi_gby.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/groupby_cube_multi_gby.q.out b/ql/src/test/results/clientpositive/groupby_cube_multi_gby.q.out
index 992fd2d..6eaef7e 100644
--- a/ql/src/test/results/clientpositive/groupby_cube_multi_gby.q.out
+++ b/ql/src/test/results/clientpositive/groupby_cube_multi_gby.q.out
@@ -17,7 +17,7 @@ POSTHOOK: Output: default@t2
 PREHOOK: query: explain from src
 insert into table t1 select
 key, GROUPING__ID
-group by key, value with cube
+group by cube(key, value)
 insert into table t2 select
 key, value
 group by key, value grouping sets ((key), (key, value))
@@ -25,7 +25,7 @@ PREHOOK: type: QUERY
 POSTHOOK: query: explain from src
 insert into table t1 select
 key, GROUPING__ID
-group by key, value with cube
+group by cube(key, value)
 insert into table t2 select
 key, value
 group by key, value grouping sets ((key), (key, value))

http://git-wip-us.apache.org/repos/asf/hive/blob/444af207/ql/src/test/results/clientpositive/groupby_grouping_id1.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/groupby_grouping_id1.q.out b/ql/src/test/results/clientpositive/groupby_grouping_id1.q.out
index 136edeb..9ef7615 100644
--- a/ql/src/test/results/clientpositive/groupby_grouping_id1.q.out
+++ b/ql/src/test/results/clientpositive/groupby_grouping_id1.q.out
@@ -40,6 +40,32 @@ NULL	28	2
 8	NULL	1
 8	18	3
 8	28	3
+PREHOOK: query: SELECT key, val, GROUPING__ID from T1 group by cube(key, val)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@t1
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT key, val, GROUPING__ID from T1 group by cube(key, val)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@t1
+#### A masked pattern was here ####
+NULL	NULL	0
+NULL	11	2
+NULL	12	2
+NULL	13	2
+NULL	17	2
+NULL	18	2
+NULL	28	2
+1	NULL	1
+1	11	3
+2	NULL	1
+2	12	3
+3	NULL	1
+3	13	3
+7	NULL	1
+7	17	3
+8	NULL	1
+8	18	3
+8	28	3
 PREHOOK: query: SELECT GROUPING__ID, key, val from T1 group by key, val with rollup
 PREHOOK: type: QUERY
 PREHOOK: Input: default@t1
@@ -60,6 +86,26 @@ POSTHOOK: Input: default@t1
 1	8	NULL
 3	8	18
 3	8	28
+PREHOOK: query: SELECT GROUPING__ID, key, val from T1 group by rollup (key, val)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@t1
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT GROUPING__ID, key, val from T1 group by rollup (key, val)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@t1
+#### A masked pattern was here ####
+0	NULL	NULL
+1	1	NULL
+3	1	11
+1	2	NULL
+3	2	12
+1	3	NULL
+3	3	13
+1	7	NULL
+3	7	17
+1	8	NULL
+3	8	18
+3	8	28
 PREHOOK: query: SELECT key, val, GROUPING__ID, CASE WHEN GROUPING__ID == 0 THEN "0" WHEN GROUPING__ID == 1 THEN "1" WHEN GROUPING__ID == 2 THEN "2" WHEN GROUPING__ID == 3 THEN "3" ELSE "nothing" END from T1 group by key, val with cube
 PREHOOK: type: QUERY
 PREHOOK: Input: default@t1
@@ -86,3 +132,29 @@ NULL	28	2	2
 8	NULL	1	1
 8	18	3	3
 8	28	3	3
+PREHOOK: query: SELECT key, val, GROUPING__ID, CASE WHEN GROUPING__ID == 0 THEN "0" WHEN GROUPING__ID == 1 THEN "1" WHEN GROUPING__ID == 2 THEN "2" WHEN GROUPING__ID == 3 THEN "3" ELSE "nothing" END from T1 group by cube(key, val)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@t1
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT key, val, GROUPING__ID, CASE WHEN GROUPING__ID == 0 THEN "0" WHEN GROUPING__ID == 1 THEN "1" WHEN GROUPING__ID == 2 THEN "2" WHEN GROUPING__ID == 3 THEN "3" ELSE "nothing" END from T1 group by cube(key, val)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@t1
+#### A masked pattern was here ####
+NULL	NULL	0	0
+NULL	11	2	2
+NULL	12	2	2
+NULL	13	2	2
+NULL	17	2	2
+NULL	18	2	2
+NULL	28	2	2
+1	NULL	1	1
+1	11	3	3
+2	NULL	1	1
+2	12	3	3
+3	NULL	1	1
+3	13	3	3
+7	NULL	1	1
+7	17	3	3
+8	NULL	1	1
+8	18	3	3
+8	28	3	3

http://git-wip-us.apache.org/repos/asf/hive/blob/444af207/ql/src/test/results/clientpositive/groupby_grouping_sets1.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/groupby_grouping_sets1.q.out b/ql/src/test/results/clientpositive/groupby_grouping_sets1.q.out
index 5b70906..aebba0d 100644
--- a/ql/src/test/results/clientpositive/groupby_grouping_sets1.q.out
+++ b/ql/src/test/results/clientpositive/groupby_grouping_sets1.q.out
@@ -51,6 +51,29 @@ NULL	3	1
 5	2	1
 8	NULL	1
 8	1	1
+PREHOOK: query: SELECT a, b, count(*) from T1 group by cube(a, b)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@t1
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT a, b, count(*) from T1 group by cube(a, b)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@t1
+#### A masked pattern was here ####
+NULL	NULL	6
+NULL	1	2
+NULL	2	3
+NULL	3	1
+1	NULL	1
+1	1	1
+2	NULL	2
+2	2	1
+2	3	1
+3	NULL	1
+3	2	1
+5	NULL	1
+5	2	1
+8	NULL	1
+8	1	1
 PREHOOK: query: SELECT a, b, count(*) FROM T1 GROUP BY a, b  GROUPING SETS (a, (a, b), b, ())
 PREHOOK: type: QUERY
 PREHOOK: Input: default@t1

http://git-wip-us.apache.org/repos/asf/hive/blob/444af207/ql/src/test/results/clientpositive/groupby_grouping_sets2.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/groupby_grouping_sets2.q.out b/ql/src/test/results/clientpositive/groupby_grouping_sets2.q.out
index f00bb5b..09d52c0 100644
--- a/ql/src/test/results/clientpositive/groupby_grouping_sets2.q.out
+++ b/ql/src/test/results/clientpositive/groupby_grouping_sets2.q.out
@@ -100,6 +100,90 @@ STAGE PLANS:
       Processor Tree:
         ListSink
 
+PREHOOK: query: EXPLAIN
+SELECT a, b, count(*) from T1 group by cube(a, b)
+PREHOOK: type: QUERY
+POSTHOOK: query: EXPLAIN
+SELECT a, b, count(*) from T1 group by cube(a, b)
+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: t1
+            Statistics: Num rows: 1 Data size: 36 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: a (type: string), b (type: string)
+              outputColumnNames: a, b
+              Statistics: Num rows: 1 Data size: 36 Basic stats: COMPLETE Column stats: NONE
+              Group By Operator
+                aggregations: count()
+                keys: a (type: string), b (type: string)
+                mode: hash
+                outputColumnNames: _col0, _col1, _col2
+                Statistics: Num rows: 1 Data size: 36 Basic stats: COMPLETE Column stats: NONE
+                Reduce Output Operator
+                  key expressions: _col0 (type: string), _col1 (type: string)
+                  sort order: ++
+                  Map-reduce partition columns: _col0 (type: string), _col1 (type: string)
+                  Statistics: Num rows: 1 Data size: 36 Basic stats: COMPLETE Column stats: NONE
+                  value expressions: _col2 (type: bigint)
+      Reduce Operator Tree:
+        Group By Operator
+          aggregations: count(VALUE._col0)
+          keys: KEY._col0 (type: string), KEY._col1 (type: string), '0' (type: string)
+          mode: partials
+          outputColumnNames: _col0, _col1, _col2, _col3
+          Statistics: Num rows: 4 Data size: 144 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: string), _col1 (type: string), _col2 (type: string)
+              sort order: +++
+              Map-reduce partition columns: _col0 (type: string), _col1 (type: string), _col2 (type: string)
+              Statistics: Num rows: 4 Data size: 144 Basic stats: COMPLETE Column stats: NONE
+              value expressions: _col3 (type: bigint)
+      Reduce Operator Tree:
+        Group By Operator
+          aggregations: count(VALUE._col0)
+          keys: KEY._col0 (type: string), KEY._col1 (type: string), KEY._col2 (type: string)
+          mode: final
+          outputColumnNames: _col0, _col1, _col3
+          Statistics: Num rows: 2 Data size: 72 Basic stats: COMPLETE Column stats: NONE
+          pruneGroupingSetId: true
+          Select Operator
+            expressions: _col0 (type: string), _col1 (type: string), _col3 (type: bigint)
+            outputColumnNames: _col0, _col1, _col2
+            Statistics: Num rows: 2 Data size: 72 Basic stats: COMPLETE Column stats: NONE
+            File Output Operator
+              compressed: false
+              Statistics: Num rows: 2 Data size: 72 Basic stats: COMPLETE Column stats: NONE
+              table:
+                  input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                  output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                  serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
 PREHOOK: query: SELECT a, b, count(*) from T1 group by a, b with cube
 PREHOOK: type: QUERY
 PREHOOK: Input: default@t1

http://git-wip-us.apache.org/repos/asf/hive/blob/444af207/ql/src/test/results/clientpositive/groupby_grouping_sets3.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/groupby_grouping_sets3.q.out b/ql/src/test/results/clientpositive/groupby_grouping_sets3.q.out
index 5c69907..04ece02 100644
--- a/ql/src/test/results/clientpositive/groupby_grouping_sets3.q.out
+++ b/ql/src/test/results/clientpositive/groupby_grouping_sets3.q.out
@@ -95,6 +95,65 @@ STAGE PLANS:
       Processor Tree:
         ListSink
 
+PREHOOK: query: EXPLAIN
+SELECT a, b, avg(c), count(*) from T1 group by cube(a, b)
+PREHOOK: type: QUERY
+POSTHOOK: query: EXPLAIN
+SELECT a, b, avg(c), count(*) from T1 group by cube(a, b)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: t1
+            Statistics: Num rows: 1 Data size: 72 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: a (type: string), b (type: string), c (type: string)
+              outputColumnNames: a, b, c
+              Statistics: Num rows: 1 Data size: 72 Basic stats: COMPLETE Column stats: NONE
+              Group By Operator
+                aggregations: avg(c), count()
+                keys: a (type: string), b (type: string), '0' (type: string)
+                mode: hash
+                outputColumnNames: _col0, _col1, _col2, _col3, _col4
+                Statistics: Num rows: 4 Data size: 288 Basic stats: COMPLETE Column stats: NONE
+                Reduce Output Operator
+                  key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string)
+                  sort order: +++
+                  Map-reduce partition columns: _col0 (type: string), _col1 (type: string), _col2 (type: string)
+                  Statistics: Num rows: 4 Data size: 288 Basic stats: COMPLETE Column stats: NONE
+                  value expressions: _col3 (type: struct<count:bigint,sum:double,input:string>), _col4 (type: bigint)
+      Reduce Operator Tree:
+        Group By Operator
+          aggregations: avg(VALUE._col0), count(VALUE._col1)
+          keys: KEY._col0 (type: string), KEY._col1 (type: string), KEY._col2 (type: string)
+          mode: mergepartial
+          outputColumnNames: _col0, _col1, _col3, _col4
+          Statistics: Num rows: 2 Data size: 144 Basic stats: COMPLETE Column stats: NONE
+          pruneGroupingSetId: true
+          Select Operator
+            expressions: _col0 (type: string), _col1 (type: string), _col3 (type: double), _col4 (type: bigint)
+            outputColumnNames: _col0, _col1, _col2, _col3
+            Statistics: Num rows: 2 Data size: 144 Basic stats: COMPLETE Column stats: NONE
+            File Output Operator
+              compressed: false
+              Statistics: Num rows: 2 Data size: 144 Basic stats: COMPLETE Column stats: NONE
+              table:
+                  input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                  output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                  serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
 PREHOOK: query: SELECT a, b, avg(c), count(*) from T1 group by a, b with cube
 PREHOOK: type: QUERY
 PREHOOK: Input: default@t1

http://git-wip-us.apache.org/repos/asf/hive/blob/444af207/ql/src/test/results/clientpositive/groupby_grouping_sets4.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/groupby_grouping_sets4.q.out b/ql/src/test/results/clientpositive/groupby_grouping_sets4.q.out
index b7e9329..095113a 100644
--- a/ql/src/test/results/clientpositive/groupby_grouping_sets4.q.out
+++ b/ql/src/test/results/clientpositive/groupby_grouping_sets4.q.out
@@ -171,6 +171,153 @@ STAGE PLANS:
       Processor Tree:
         ListSink
 
+PREHOOK: query: EXPLAIN
+SELECT * FROM
+(SELECT a, b, count(*) from T1 where a < 3 group by cube(a, b) ) subq1
+join
+(SELECT a, b, count(*) from T1 where a < 3 group by cube(a, b) ) subq2
+on subq1.a = subq2.a
+PREHOOK: type: QUERY
+POSTHOOK: query: EXPLAIN
+SELECT * FROM
+(SELECT a, b, count(*) from T1 where a < 3 group by cube(a, b) ) subq1
+join
+(SELECT a, b, count(*) from T1 where a < 3 group by cube(a, b) ) subq2
+on subq1.a = subq2.a
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-2 depends on stages: Stage-1, Stage-3
+  Stage-3 is a root stage
+  Stage-0 depends on stages: Stage-2
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: t1
+            Statistics: Num rows: 1 Data size: 36 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: (UDFToDouble(a) < 3.0) (type: boolean)
+              Statistics: Num rows: 1 Data size: 36 Basic stats: COMPLETE Column stats: NONE
+              Group By Operator
+                aggregations: count()
+                keys: a (type: string), b (type: string), '0' (type: string)
+                mode: hash
+                outputColumnNames: _col0, _col1, _col2, _col3
+                Statistics: Num rows: 4 Data size: 144 Basic stats: COMPLETE Column stats: NONE
+                Reduce Output Operator
+                  key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string)
+                  sort order: +++
+                  Map-reduce partition columns: _col0 (type: string), _col1 (type: string), _col2 (type: string)
+                  Statistics: Num rows: 4 Data size: 144 Basic stats: COMPLETE Column stats: NONE
+                  value expressions: _col3 (type: bigint)
+      Reduce Operator Tree:
+        Group By Operator
+          aggregations: count(VALUE._col0)
+          keys: KEY._col0 (type: string), KEY._col1 (type: string), KEY._col2 (type: string)
+          mode: mergepartial
+          outputColumnNames: _col0, _col1, _col3
+          Statistics: Num rows: 2 Data size: 72 Basic stats: COMPLETE Column stats: NONE
+          pruneGroupingSetId: true
+          Filter Operator
+            predicate: _col0 is not null (type: boolean)
+            Statistics: Num rows: 2 Data size: 72 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: _col0 (type: string), _col1 (type: string), _col3 (type: bigint)
+              outputColumnNames: _col0, _col1, _col2
+              Statistics: Num rows: 2 Data size: 72 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: string)
+              sort order: +
+              Map-reduce partition columns: _col0 (type: string)
+              Statistics: Num rows: 2 Data size: 72 Basic stats: COMPLETE Column stats: NONE
+              value expressions: _col1 (type: string), _col2 (type: bigint)
+          TableScan
+            Reduce Output Operator
+              key expressions: _col0 (type: string)
+              sort order: +
+              Map-reduce partition columns: _col0 (type: string)
+              Statistics: Num rows: 2 Data size: 72 Basic stats: COMPLETE Column stats: NONE
+              value expressions: _col1 (type: string), _col2 (type: bigint)
+      Reduce Operator Tree:
+        Join Operator
+          condition map:
+               Inner Join 0 to 1
+          keys:
+            0 _col0 (type: string)
+            1 _col0 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+          Statistics: Num rows: 2 Data size: 79 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 2 Data size: 79 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-3
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: t1
+            Statistics: Num rows: 1 Data size: 36 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: (UDFToDouble(a) < 3.0) (type: boolean)
+              Statistics: Num rows: 1 Data size: 36 Basic stats: COMPLETE Column stats: NONE
+              Group By Operator
+                aggregations: count()
+                keys: a (type: string), b (type: string), '0' (type: string)
+                mode: hash
+                outputColumnNames: _col0, _col1, _col2, _col3
+                Statistics: Num rows: 4 Data size: 144 Basic stats: COMPLETE Column stats: NONE
+                Reduce Output Operator
+                  key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string)
+                  sort order: +++
+                  Map-reduce partition columns: _col0 (type: string), _col1 (type: string), _col2 (type: string)
+                  Statistics: Num rows: 4 Data size: 144 Basic stats: COMPLETE Column stats: NONE
+                  value expressions: _col3 (type: bigint)
+      Reduce Operator Tree:
+        Group By Operator
+          aggregations: count(VALUE._col0)
+          keys: KEY._col0 (type: string), KEY._col1 (type: string), KEY._col2 (type: string)
+          mode: mergepartial
+          outputColumnNames: _col0, _col1, _col3
+          Statistics: Num rows: 2 Data size: 72 Basic stats: COMPLETE Column stats: NONE
+          pruneGroupingSetId: true
+          Filter Operator
+            predicate: _col0 is not null (type: boolean)
+            Statistics: Num rows: 2 Data size: 72 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: _col0 (type: string), _col1 (type: string), _col3 (type: bigint)
+              outputColumnNames: _col0, _col1, _col2
+              Statistics: Num rows: 2 Data size: 72 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-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
 PREHOOK: query: SELECT * FROM
 (SELECT a, b, count(*) from T1 where a < 3 group by a, b with cube) subq1
 join

http://git-wip-us.apache.org/repos/asf/hive/blob/444af207/ql/src/test/results/clientpositive/groupby_grouping_sets5.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/groupby_grouping_sets5.q.out b/ql/src/test/results/clientpositive/groupby_grouping_sets5.q.out
index f175778..e91bd41 100644
--- a/ql/src/test/results/clientpositive/groupby_grouping_sets5.q.out
+++ b/ql/src/test/results/clientpositive/groupby_grouping_sets5.q.out
@@ -109,6 +109,95 @@ STAGE PLANS:
       Processor Tree:
         ListSink
 
+PREHOOK: query: EXPLAIN
+SELECT a, b, count(*) FROM
+(SELECT a, b, count(1) from T1 group by a, b) subq1 group by cube(a, b)
+PREHOOK: type: QUERY
+POSTHOOK: query: EXPLAIN
+SELECT a, b, count(*) FROM
+(SELECT a, b, count(1) from T1 group by a, b) subq1 group by cube(a, b)
+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: t1
+            Statistics: Num rows: 1 Data size: 36 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: a (type: string), b (type: string)
+              outputColumnNames: a, b
+              Statistics: Num rows: 1 Data size: 36 Basic stats: COMPLETE Column stats: NONE
+              Group By Operator
+                keys: a (type: string), b (type: string)
+                mode: hash
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 1 Data size: 36 Basic stats: COMPLETE Column stats: NONE
+                Reduce Output Operator
+                  key expressions: _col0 (type: string), _col1 (type: string)
+                  sort order: ++
+                  Map-reduce partition columns: _col0 (type: string), _col1 (type: string)
+                  Statistics: Num rows: 1 Data size: 36 Basic stats: COMPLETE Column stats: NONE
+      Reduce Operator Tree:
+        Group By Operator
+          keys: KEY._col0 (type: string), KEY._col1 (type: string)
+          mode: mergepartial
+          outputColumnNames: _col0, _col1
+          Statistics: Num rows: 1 Data size: 36 Basic stats: COMPLETE Column stats: NONE
+          Group By Operator
+            aggregations: count()
+            keys: _col0 (type: string), _col1 (type: string), '0' (type: string)
+            mode: hash
+            outputColumnNames: _col0, _col1, _col2, _col3
+            Statistics: Num rows: 4 Data size: 144 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: string), _col1 (type: string), _col2 (type: string)
+              sort order: +++
+              Map-reduce partition columns: _col0 (type: string), _col1 (type: string), _col2 (type: string)
+              Statistics: Num rows: 4 Data size: 144 Basic stats: COMPLETE Column stats: NONE
+              value expressions: _col3 (type: bigint)
+      Reduce Operator Tree:
+        Group By Operator
+          aggregations: count(VALUE._col0)
+          keys: KEY._col0 (type: string), KEY._col1 (type: string), KEY._col2 (type: string)
+          mode: mergepartial
+          outputColumnNames: _col0, _col1, _col3
+          Statistics: Num rows: 2 Data size: 72 Basic stats: COMPLETE Column stats: NONE
+          pruneGroupingSetId: true
+          Select Operator
+            expressions: _col0 (type: string), _col1 (type: string), _col3 (type: bigint)
+            outputColumnNames: _col0, _col1, _col2
+            Statistics: Num rows: 2 Data size: 72 Basic stats: COMPLETE Column stats: NONE
+            File Output Operator
+              compressed: false
+              Statistics: Num rows: 2 Data size: 72 Basic stats: COMPLETE Column stats: NONE
+              table:
+                  input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                  output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                  serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
 PREHOOK: query: SELECT a, b, count(*) FROM
 (SELECT a, b, count(1) from T1 group by a, b) subq1 group by a, b with cube
 PREHOOK: type: QUERY

http://git-wip-us.apache.org/repos/asf/hive/blob/444af207/ql/src/test/results/clientpositive/groupby_rollup1.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/groupby_rollup1.q.out b/ql/src/test/results/clientpositive/groupby_rollup1.q.out
index 54e1a0d..19dccc8 100644
--- a/ql/src/test/results/clientpositive/groupby_rollup1.q.out
+++ b/ql/src/test/results/clientpositive/groupby_rollup1.q.out
@@ -389,12 +389,12 @@ POSTHOOK: Output: default@T3
 PREHOOK: query: EXPLAIN
 FROM T1
 INSERT OVERWRITE TABLE T2 SELECT key, val, count(1) group by key, val with rollup
-INSERT OVERWRITE TABLE T3 SELECT key, val, sum(1) group by key, val with rollup
+INSERT OVERWRITE TABLE T3 SELECT key, val, sum(1) group by rollup(key, val)
 PREHOOK: type: QUERY
 POSTHOOK: query: EXPLAIN
 FROM T1
 INSERT OVERWRITE TABLE T2 SELECT key, val, count(1) group by key, val with rollup
-INSERT OVERWRITE TABLE T3 SELECT key, val, sum(1) group by key, val with rollup
+INSERT OVERWRITE TABLE T3 SELECT key, val, sum(1) group by rollup(key, val)
 POSTHOOK: type: QUERY
 STAGE DEPENDENCIES:
   Stage-2 is a root stage

http://git-wip-us.apache.org/repos/asf/hive/blob/444af207/ql/src/test/results/clientpositive/infer_bucket_sort_grouping_operators.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/infer_bucket_sort_grouping_operators.q.out b/ql/src/test/results/clientpositive/infer_bucket_sort_grouping_operators.q.out
index ebfce60..573469b 100644
--- a/ql/src/test/results/clientpositive/infer_bucket_sort_grouping_operators.q.out
+++ b/ql/src/test/results/clientpositive/infer_bucket_sort_grouping_operators.q.out
@@ -94,6 +94,633 @@ STAGE PLANS:
   Stage: Stage-2
     Stats-Aggr Operator
 
+PREHOOK: query: SELECT key, value, count(1) FROM src GROUP BY ROLLUP (key, value)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT key, value, count(1) FROM src GROUP BY ROLLUP (key, value)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+#### A masked pattern was here ####
+NULL	NULL	500
+0	NULL	3
+0	val_0	3
+10	NULL	1
+10	val_10	1
+100	NULL	2
+100	val_100	2
+103	NULL	2
+103	val_103	2
+104	NULL	2
+104	val_104	2
+105	NULL	1
+105	val_105	1
+11	NULL	1
+11	val_11	1
+111	NULL	1
+111	val_111	1
+113	NULL	2
+113	val_113	2
+114	NULL	1
+114	val_114	1
+116	NULL	1
+116	val_116	1
+118	NULL	2
+118	val_118	2
+119	NULL	3
+119	val_119	3
+12	NULL	2
+12	val_12	2
+120	NULL	2
+120	val_120	2
+125	NULL	2
+125	val_125	2
+126	NULL	1
+126	val_126	1
+128	NULL	3
+128	val_128	3
+129	NULL	2
+129	val_129	2
+131	NULL	1
+131	val_131	1
+133	NULL	1
+133	val_133	1
+134	NULL	2
+134	val_134	2
+136	NULL	1
+136	val_136	1
+137	NULL	2
+137	val_137	2
+138	NULL	4
+138	val_138	4
+143	NULL	1
+143	val_143	1
+145	NULL	1
+145	val_145	1
+146	NULL	2
+146	val_146	2
+149	NULL	2
+149	val_149	2
+15	NULL	2
+15	val_15	2
+150	NULL	1
+150	val_150	1
+152	NULL	2
+152	val_152	2
+153	NULL	1
+153	val_153	1
+155	NULL	1
+155	val_155	1
+156	NULL	1
+156	val_156	1
+157	NULL	1
+157	val_157	1
+158	NULL	1
+158	val_158	1
+160	NULL	1
+160	val_160	1
+162	NULL	1
+162	val_162	1
+163	NULL	1
+163	val_163	1
+164	NULL	2
+164	val_164	2
+165	NULL	2
+165	val_165	2
+166	NULL	1
+166	val_166	1
+167	NULL	3
+167	val_167	3
+168	NULL	1
+168	val_168	1
+169	NULL	4
+169	val_169	4
+17	NULL	1
+17	val_17	1
+170	NULL	1
+170	val_170	1
+172	NULL	2
+172	val_172	2
+174	NULL	2
+174	val_174	2
+175	NULL	2
+175	val_175	2
+176	NULL	2
+176	val_176	2
+177	NULL	1
+177	val_177	1
+178	NULL	1
+178	val_178	1
+179	NULL	2
+179	val_179	2
+18	NULL	2
+18	val_18	2
+180	NULL	1
+180	val_180	1
+181	NULL	1
+181	val_181	1
+183	NULL	1
+183	val_183	1
+186	NULL	1
+186	val_186	1
+187	NULL	3
+187	val_187	3
+189	NULL	1
+189	val_189	1
+19	NULL	1
+19	val_19	1
+190	NULL	1
+190	val_190	1
+191	NULL	2
+191	val_191	2
+192	NULL	1
+192	val_192	1
+193	NULL	3
+193	val_193	3
+194	NULL	1
+194	val_194	1
+195	NULL	2
+195	val_195	2
+196	NULL	1
+196	val_196	1
+197	NULL	2
+197	val_197	2
+199	NULL	3
+199	val_199	3
+2	NULL	1
+2	val_2	1
+20	NULL	1
+20	val_20	1
+200	NULL	2
+200	val_200	2
+201	NULL	1
+201	val_201	1
+202	NULL	1
+202	val_202	1
+203	NULL	2
+203	val_203	2
+205	NULL	2
+205	val_205	2
+207	NULL	2
+207	val_207	2
+208	NULL	3
+208	val_208	3
+209	NULL	2
+209	val_209	2
+213	NULL	2
+213	val_213	2
+214	NULL	1
+214	val_214	1
+216	NULL	2
+216	val_216	2
+217	NULL	2
+217	val_217	2
+218	NULL	1
+218	val_218	1
+219	NULL	2
+219	val_219	2
+221	NULL	2
+221	val_221	2
+222	NULL	1
+222	val_222	1
+223	NULL	2
+223	val_223	2
+224	NULL	2
+224	val_224	2
+226	NULL	1
+226	val_226	1
+228	NULL	1
+228	val_228	1
+229	NULL	2
+229	val_229	2
+230	NULL	5
+230	val_230	5
+233	NULL	2
+233	val_233	2
+235	NULL	1
+235	val_235	1
+237	NULL	2
+237	val_237	2
+238	NULL	2
+238	val_238	2
+239	NULL	2
+239	val_239	2
+24	NULL	2
+24	val_24	2
+241	NULL	1
+241	val_241	1
+242	NULL	2
+242	val_242	2
+244	NULL	1
+244	val_244	1
+247	NULL	1
+247	val_247	1
+248	NULL	1
+248	val_248	1
+249	NULL	1
+249	val_249	1
+252	NULL	1
+252	val_252	1
+255	NULL	2
+255	val_255	2
+256	NULL	2
+256	val_256	2
+257	NULL	1
+257	val_257	1
+258	NULL	1
+258	val_258	1
+26	NULL	2
+26	val_26	2
+260	NULL	1
+260	val_260	1
+262	NULL	1
+262	val_262	1
+263	NULL	1
+263	val_263	1
+265	NULL	2
+265	val_265	2
+266	NULL	1
+266	val_266	1
+27	NULL	1
+27	val_27	1
+272	NULL	2
+272	val_272	2
+273	NULL	3
+273	val_273	3
+274	NULL	1
+274	val_274	1
+275	NULL	1
+275	val_275	1
+277	NULL	4
+277	val_277	4
+278	NULL	2
+278	val_278	2
+28	NULL	1
+28	val_28	1
+280	NULL	2
+280	val_280	2
+281	NULL	2
+281	val_281	2
+282	NULL	2
+282	val_282	2
+283	NULL	1
+283	val_283	1
+284	NULL	1
+284	val_284	1
+285	NULL	1
+285	val_285	1
+286	NULL	1
+286	val_286	1
+287	NULL	1
+287	val_287	1
+288	NULL	2
+288	val_288	2
+289	NULL	1
+289	val_289	1
+291	NULL	1
+291	val_291	1
+292	NULL	1
+292	val_292	1
+296	NULL	1
+296	val_296	1
+298	NULL	3
+298	val_298	3
+30	NULL	1
+30	val_30	1
+302	NULL	1
+302	val_302	1
+305	NULL	1
+305	val_305	1
+306	NULL	1
+306	val_306	1
+307	NULL	2
+307	val_307	2
+308	NULL	1
+308	val_308	1
+309	NULL	2
+309	val_309	2
+310	NULL	1
+310	val_310	1
+311	NULL	3
+311	val_311	3
+315	NULL	1
+315	val_315	1
+316	NULL	3
+316	val_316	3
+317	NULL	2
+317	val_317	2
+318	NULL	3
+318	val_318	3
+321	NULL	2
+321	val_321	2
+322	NULL	2
+322	val_322	2
+323	NULL	1
+323	val_323	1
+325	NULL	2
+325	val_325	2
+327	NULL	3
+327	val_327	3
+33	NULL	1
+33	val_33	1
+331	NULL	2
+331	val_331	2
+332	NULL	1
+332	val_332	1
+333	NULL	2
+333	val_333	2
+335	NULL	1
+335	val_335	1
+336	NULL	1
+336	val_336	1
+338	NULL	1
+338	val_338	1
+339	NULL	1
+339	val_339	1
+34	NULL	1
+34	val_34	1
+341	NULL	1
+341	val_341	1
+342	NULL	2
+342	val_342	2
+344	NULL	2
+344	val_344	2
+345	NULL	1
+345	val_345	1
+348	NULL	5
+348	val_348	5
+35	NULL	3
+35	val_35	3
+351	NULL	1
+351	val_351	1
+353	NULL	2
+353	val_353	2
+356	NULL	1
+356	val_356	1
+360	NULL	1
+360	val_360	1
+362	NULL	1
+362	val_362	1
+364	NULL	1
+364	val_364	1
+365	NULL	1
+365	val_365	1
+366	NULL	1
+366	val_366	1
+367	NULL	2
+367	val_367	2
+368	NULL	1
+368	val_368	1
+369	NULL	3
+369	val_369	3
+37	NULL	2
+37	val_37	2
+373	NULL	1
+373	val_373	1
+374	NULL	1
+374	val_374	1
+375	NULL	1
+375	val_375	1
+377	NULL	1
+377	val_377	1
+378	NULL	1
+378	val_378	1
+379	NULL	1
+379	val_379	1
+382	NULL	2
+382	val_382	2
+384	NULL	3
+384	val_384	3
+386	NULL	1
+386	val_386	1
+389	NULL	1
+389	val_389	1
+392	NULL	1
+392	val_392	1
+393	NULL	1
+393	val_393	1
+394	NULL	1
+394	val_394	1
+395	NULL	2
+395	val_395	2
+396	NULL	3
+396	val_396	3
+397	NULL	2
+397	val_397	2
+399	NULL	2
+399	val_399	2
+4	NULL	1
+4	val_4	1
+400	NULL	1
+400	val_400	1
+401	NULL	5
+401	val_401	5
+402	NULL	1
+402	val_402	1
+403	NULL	3
+403	val_403	3
+404	NULL	2
+404	val_404	2
+406	NULL	4
+406	val_406	4
+407	NULL	1
+407	val_407	1
+409	NULL	3
+409	val_409	3
+41	NULL	1
+41	val_41	1
+411	NULL	1
+411	val_411	1
+413	NULL	2
+413	val_413	2
+414	NULL	2
+414	val_414	2
+417	NULL	3
+417	val_417	3
+418	NULL	1
+418	val_418	1
+419	NULL	1
+419	val_419	1
+42	NULL	2
+42	val_42	2
+421	NULL	1
+421	val_421	1
+424	NULL	2
+424	val_424	2
+427	NULL	1
+427	val_427	1
+429	NULL	2
+429	val_429	2
+43	NULL	1
+43	val_43	1
+430	NULL	3
+430	val_430	3
+431	NULL	3
+431	val_431	3
+432	NULL	1
+432	val_432	1
+435	NULL	1
+435	val_435	1
+436	NULL	1
+436	val_436	1
+437	NULL	1
+437	val_437	1
+438	NULL	3
+438	val_438	3
+439	NULL	2
+439	val_439	2
+44	NULL	1
+44	val_44	1
+443	NULL	1
+443	val_443	1
+444	NULL	1
+444	val_444	1
+446	NULL	1
+446	val_446	1
+448	NULL	1
+448	val_448	1
+449	NULL	1
+449	val_449	1
+452	NULL	1
+452	val_452	1
+453	NULL	1
+453	val_453	1
+454	NULL	3
+454	val_454	3
+455	NULL	1
+455	val_455	1
+457	NULL	1
+457	val_457	1
+458	NULL	2
+458	val_458	2
+459	NULL	2
+459	val_459	2
+460	NULL	1
+460	val_460	1
+462	NULL	2
+462	val_462	2
+463	NULL	2
+463	val_463	2
+466	NULL	3
+466	val_466	3
+467	NULL	1
+467	val_467	1
+468	NULL	4
+468	val_468	4
+469	NULL	5
+469	val_469	5
+47	NULL	1
+47	val_47	1
+470	NULL	1
+470	val_470	1
+472	NULL	1
+472	val_472	1
+475	NULL	1
+475	val_475	1
+477	NULL	1
+477	val_477	1
+478	NULL	2
+478	val_478	2
+479	NULL	1
+479	val_479	1
+480	NULL	3
+480	val_480	3
+481	NULL	1
+481	val_481	1
+482	NULL	1
+482	val_482	1
+483	NULL	1
+483	val_483	1
+484	NULL	1
+484	val_484	1
+485	NULL	1
+485	val_485	1
+487	NULL	1
+487	val_487	1
+489	NULL	4
+489	val_489	4
+490	NULL	1
+490	val_490	1
+491	NULL	1
+491	val_491	1
+492	NULL	2
+492	val_492	2
+493	NULL	1
+493	val_493	1
+494	NULL	1
+494	val_494	1
+495	NULL	1
+495	val_495	1
+496	NULL	1
+496	val_496	1
+497	NULL	1
+497	val_497	1
+498	NULL	3
+498	val_498	3
+5	NULL	3
+5	val_5	3
+51	NULL	2
+51	val_51	2
+53	NULL	1
+53	val_53	1
+54	NULL	1
+54	val_54	1
+57	NULL	1
+57	val_57	1
+58	NULL	2
+58	val_58	2
+64	NULL	1
+64	val_64	1
+65	NULL	1
+65	val_65	1
+66	NULL	1
+66	val_66	1
+67	NULL	2
+67	val_67	2
+69	NULL	1
+69	val_69	1
+70	NULL	3
+70	val_70	3
+72	NULL	2
+72	val_72	2
+74	NULL	1
+74	val_74	1
+76	NULL	2
+76	val_76	2
+77	NULL	1
+77	val_77	1
+78	NULL	1
+78	val_78	1
+8	NULL	1
+8	val_8	1
+80	NULL	1
+80	val_80	1
+82	NULL	1
+82	val_82	1
+83	NULL	2
+83	val_83	2
+84	NULL	2
+84	val_84	2
+85	NULL	1
+85	val_85	1
+86	NULL	1
+86	val_86	1
+87	NULL	1
+87	val_87	1
+9	NULL	1
+9	val_9	1
+90	NULL	3
+90	val_90	3
+92	NULL	1
+92	val_92	1
+95	NULL	2
+95	val_95	2
+96	NULL	1
+96	val_96	1
+97	NULL	2
+97	val_97	2
+98	NULL	2
+98	val_98	2
 PREHOOK: query: INSERT OVERWRITE TABLE test_table_out PARTITION (part = '1') 
 SELECT key, value, count(1) FROM src GROUP BY key, value WITH ROLLUP
 PREHOOK: type: QUERY
@@ -165,6 +792,633 @@ POSTHOOK: Lineage: test_table_out_2 PARTITION(part=1).agg EXPRESSION [(src)src.n
 POSTHOOK: Lineage: test_table_out_2 PARTITION(part=1).grouping_key SIMPLE []
 POSTHOOK: Lineage: test_table_out_2 PARTITION(part=1).key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
 POSTHOOK: Lineage: test_table_out_2 PARTITION(part=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: SELECT key, value, GROUPING__ID, count(1) FROM src GROUP BY ROLLUP (key, value)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT key, value, GROUPING__ID, count(1) FROM src GROUP BY ROLLUP (key, value)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+#### A masked pattern was here ####
+NULL	NULL	0	500
+0	NULL	1	3
+0	val_0	3	3
+10	NULL	1	1
+10	val_10	3	1
+100	NULL	1	2
+100	val_100	3	2
+103	NULL	1	2
+103	val_103	3	2
+104	NULL	1	2
+104	val_104	3	2
+105	NULL	1	1
+105	val_105	3	1
+11	NULL	1	1
+11	val_11	3	1
+111	NULL	1	1
+111	val_111	3	1
+113	NULL	1	2
+113	val_113	3	2
+114	NULL	1	1
+114	val_114	3	1
+116	NULL	1	1
+116	val_116	3	1
+118	NULL	1	2
+118	val_118	3	2
+119	NULL	1	3
+119	val_119	3	3
+12	NULL	1	2
+12	val_12	3	2
+120	NULL	1	2
+120	val_120	3	2
+125	NULL	1	2
+125	val_125	3	2
+126	NULL	1	1
+126	val_126	3	1
+128	NULL	1	3
+128	val_128	3	3
+129	NULL	1	2
+129	val_129	3	2
+131	NULL	1	1
+131	val_131	3	1
+133	NULL	1	1
+133	val_133	3	1
+134	NULL	1	2
+134	val_134	3	2
+136	NULL	1	1
+136	val_136	3	1
+137	NULL	1	2
+137	val_137	3	2
+138	NULL	1	4
+138	val_138	3	4
+143	NULL	1	1
+143	val_143	3	1
+145	NULL	1	1
+145	val_145	3	1
+146	NULL	1	2
+146	val_146	3	2
+149	NULL	1	2
+149	val_149	3	2
+15	NULL	1	2
+15	val_15	3	2
+150	NULL	1	1
+150	val_150	3	1
+152	NULL	1	2
+152	val_152	3	2
+153	NULL	1	1
+153	val_153	3	1
+155	NULL	1	1
+155	val_155	3	1
+156	NULL	1	1
+156	val_156	3	1
+157	NULL	1	1
+157	val_157	3	1
+158	NULL	1	1
+158	val_158	3	1
+160	NULL	1	1
+160	val_160	3	1
+162	NULL	1	1
+162	val_162	3	1
+163	NULL	1	1
+163	val_163	3	1
+164	NULL	1	2
+164	val_164	3	2
+165	NULL	1	2
+165	val_165	3	2
+166	NULL	1	1
+166	val_166	3	1
+167	NULL	1	3
+167	val_167	3	3
+168	NULL	1	1
+168	val_168	3	1
+169	NULL	1	4
+169	val_169	3	4
+17	NULL	1	1
+17	val_17	3	1
+170	NULL	1	1
+170	val_170	3	1
+172	NULL	1	2
+172	val_172	3	2
+174	NULL	1	2
+174	val_174	3	2
+175	NULL	1	2
+175	val_175	3	2
+176	NULL	1	2
+176	val_176	3	2
+177	NULL	1	1
+177	val_177	3	1
+178	NULL	1	1
+178	val_178	3	1
+179	NULL	1	2
+179	val_179	3	2
+18	NULL	1	2
+18	val_18	3	2
+180	NULL	1	1
+180	val_180	3	1
+181	NULL	1	1
+181	val_181	3	1
+183	NULL	1	1
+183	val_183	3	1
+186	NULL	1	1
+186	val_186	3	1
+187	NULL	1	3
+187	val_187	3	3
+189	NULL	1	1
+189	val_189	3	1
+19	NULL	1	1
+19	val_19	3	1
+190	NULL	1	1
+190	val_190	3	1
+191	NULL	1	2
+191	val_191	3	2
+192	NULL	1	1
+192	val_192	3	1
+193	NULL	1	3
+193	val_193	3	3
+194	NULL	1	1
+194	val_194	3	1
+195	NULL	1	2
+195	val_195	3	2
+196	NULL	1	1
+196	val_196	3	1
+197	NULL	1	2
+197	val_197	3	2
+199	NULL	1	3
+199	val_199	3	3
+2	NULL	1	1
+2	val_2	3	1
+20	NULL	1	1
+20	val_20	3	1
+200	NULL	1	2
+200	val_200	3	2
+201	NULL	1	1
+201	val_201	3	1
+202	NULL	1	1
+202	val_202	3	1
+203	NULL	1	2
+203	val_203	3	2
+205	NULL	1	2
+205	val_205	3	2
+207	NULL	1	2
+207	val_207	3	2
+208	NULL	1	3
+208	val_208	3	3
+209	NULL	1	2
+209	val_209	3	2
+213	NULL	1	2
+213	val_213	3	2
+214	NULL	1	1
+214	val_214	3	1
+216	NULL	1	2
+216	val_216	3	2
+217	NULL	1	2
+217	val_217	3	2
+218	NULL	1	1
+218	val_218	3	1
+219	NULL	1	2
+219	val_219	3	2
+221	NULL	1	2
+221	val_221	3	2
+222	NULL	1	1
+222	val_222	3	1
+223	NULL	1	2
+223	val_223	3	2
+224	NULL	1	2
+224	val_224	3	2
+226	NULL	1	1
+226	val_226	3	1
+228	NULL	1	1
+228	val_228	3	1
+229	NULL	1	2
+229	val_229	3	2
+230	NULL	1	5
+230	val_230	3	5
+233	NULL	1	2
+233	val_233	3	2
+235	NULL	1	1
+235	val_235	3	1
+237	NULL	1	2
+237	val_237	3	2
+238	NULL	1	2
+238	val_238	3	2
+239	NULL	1	2
+239	val_239	3	2
+24	NULL	1	2
+24	val_24	3	2
+241	NULL	1	1
+241	val_241	3	1
+242	NULL	1	2
+242	val_242	3	2
+244	NULL	1	1
+244	val_244	3	1
+247	NULL	1	1
+247	val_247	3	1
+248	NULL	1	1
+248	val_248	3	1
+249	NULL	1	1
+249	val_249	3	1
+252	NULL	1	1
+252	val_252	3	1
+255	NULL	1	2
+255	val_255	3	2
+256	NULL	1	2
+256	val_256	3	2
+257	NULL	1	1
+257	val_257	3	1
+258	NULL	1	1
+258	val_258	3	1
+26	NULL	1	2
+26	val_26	3	2
+260	NULL	1	1
+260	val_260	3	1
+262	NULL	1	1
+262	val_262	3	1
+263	NULL	1	1
+263	val_263	3	1
+265	NULL	1	2
+265	val_265	3	2
+266	NULL	1	1
+266	val_266	3	1
+27	NULL	1	1
+27	val_27	3	1
+272	NULL	1	2
+272	val_272	3	2
+273	NULL	1	3
+273	val_273	3	3
+274	NULL	1	1
+274	val_274	3	1
+275	NULL	1	1
+275	val_275	3	1
+277	NULL	1	4
+277	val_277	3	4
+278	NULL	1	2
+278	val_278	3	2
+28	NULL	1	1
+28	val_28	3	1
+280	NULL	1	2
+280	val_280	3	2
+281	NULL	1	2
+281	val_281	3	2
+282	NULL	1	2
+282	val_282	3	2
+283	NULL	1	1
+283	val_283	3	1
+284	NULL	1	1
+284	val_284	3	1
+285	NULL	1	1
+285	val_285	3	1
+286	NULL	1	1
+286	val_286	3	1
+287	NULL	1	1
+287	val_287	3	1
+288	NULL	1	2
+288	val_288	3	2
+289	NULL	1	1
+289	val_289	3	1
+291	NULL	1	1
+291	val_291	3	1
+292	NULL	1	1
+292	val_292	3	1
+296	NULL	1	1
+296	val_296	3	1
+298	NULL	1	3
+298	val_298	3	3
+30	NULL	1	1
+30	val_30	3	1
+302	NULL	1	1
+302	val_302	3	1
+305	NULL	1	1
+305	val_305	3	1
+306	NULL	1	1
+306	val_306	3	1
+307	NULL	1	2
+307	val_307	3	2
+308	NULL	1	1
+308	val_308	3	1
+309	NULL	1	2
+309	val_309	3	2
+310	NULL	1	1
+310	val_310	3	1
+311	NULL	1	3
+311	val_311	3	3
+315	NULL	1	1
+315	val_315	3	1
+316	NULL	1	3
+316	val_316	3	3
+317	NULL	1	2
+317	val_317	3	2
+318	NULL	1	3
+318	val_318	3	3
+321	NULL	1	2
+321	val_321	3	2
+322	NULL	1	2
+322	val_322	3	2
+323	NULL	1	1
+323	val_323	3	1
+325	NULL	1	2
+325	val_325	3	2
+327	NULL	1	3
+327	val_327	3	3
+33	NULL	1	1
+33	val_33	3	1
+331	NULL	1	2
+331	val_331	3	2
+332	NULL	1	1
+332	val_332	3	1
+333	NULL	1	2
+333	val_333	3	2
+335	NULL	1	1
+335	val_335	3	1
+336	NULL	1	1
+336	val_336	3	1
+338	NULL	1	1
+338	val_338	3	1
+339	NULL	1	1
+339	val_339	3	1
+34	NULL	1	1
+34	val_34	3	1
+341	NULL	1	1
+341	val_341	3	1
+342	NULL	1	2
+342	val_342	3	2
+344	NULL	1	2
+344	val_344	3	2
+345	NULL	1	1
+345	val_345	3	1
+348	NULL	1	5
+348	val_348	3	5
+35	NULL	1	3
+35	val_35	3	3
+351	NULL	1	1
+351	val_351	3	1
+353	NULL	1	2
+353	val_353	3	2
+356	NULL	1	1
+356	val_356	3	1
+360	NULL	1	1
+360	val_360	3	1
+362	NULL	1	1
+362	val_362	3	1
+364	NULL	1	1
+364	val_364	3	1
+365	NULL	1	1
+365	val_365	3	1
+366	NULL	1	1
+366	val_366	3	1
+367	NULL	1	2
+367	val_367	3	2
+368	NULL	1	1
+368	val_368	3	1
+369	NULL	1	3
+369	val_369	3	3
+37	NULL	1	2
+37	val_37	3	2
+373	NULL	1	1
+373	val_373	3	1
+374	NULL	1	1
+374	val_374	3	1
+375	NULL	1	1
+375	val_375	3	1
+377	NULL	1	1
+377	val_377	3	1
+378	NULL	1	1
+378	val_378	3	1
+379	NULL	1	1
+379	val_379	3	1
+382	NULL	1	2
+382	val_382	3	2
+384	NULL	1	3
+384	val_384	3	3
+386	NULL	1	1
+386	val_386	3	1
+389	NULL	1	1
+389	val_389	3	1
+392	NULL	1	1
+392	val_392	3	1
+393	NULL	1	1
+393	val_393	3	1
+394	NULL	1	1
+394	val_394	3	1
+395	NULL	1	2
+395	val_395	3	2
+396	NULL	1	3
+396	val_396	3	3
+397	NULL	1	2
+397	val_397	3	2
+399	NULL	1	2
+399	val_399	3	2
+4	NULL	1	1
+4	val_4	3	1
+400	NULL	1	1
+400	val_400	3	1
+401	NULL	1	5
+401	val_401	3	5
+402	NULL	1	1
+402	val_402	3	1
+403	NULL	1	3
+403	val_403	3	3
+404	NULL	1	2
+404	val_404	3	2
+406	NULL	1	4
+406	val_406	3	4
+407	NULL	1	1
+407	val_407	3	1
+409	NULL	1	3
+409	val_409	3	3
+41	NULL	1	1
+41	val_41	3	1
+411	NULL	1	1
+411	val_411	3	1
+413	NULL	1	2
+413	val_413	3	2
+414	NULL	1	2
+414	val_414	3	2
+417	NULL	1	3
+417	val_417	3	3
+418	NULL	1	1
+418	val_418	3	1
+419	NULL	1	1
+419	val_419	3	1
+42	NULL	1	2
+42	val_42	3	2
+421	NULL	1	1
+421	val_421	3	1
+424	NULL	1	2
+424	val_424	3	2
+427	NULL	1	1
+427	val_427	3	1
+429	NULL	1	2
+429	val_429	3	2
+43	NULL	1	1
+43	val_43	3	1
+430	NULL	1	3
+430	val_430	3	3
+431	NULL	1	3
+431	val_431	3	3
+432	NULL	1	1
+432	val_432	3	1
+435	NULL	1	1
+435	val_435	3	1
+436	NULL	1	1
+436	val_436	3	1
+437	NULL	1	1
+437	val_437	3	1
+438	NULL	1	3
+438	val_438	3	3
+439	NULL	1	2
+439	val_439	3	2
+44	NULL	1	1
+44	val_44	3	1
+443	NULL	1	1
+443	val_443	3	1
+444	NULL	1	1
+444	val_444	3	1
+446	NULL	1	1
+446	val_446	3	1
+448	NULL	1	1
+448	val_448	3	1
+449	NULL	1	1
+449	val_449	3	1
+452	NULL	1	1
+452	val_452	3	1
+453	NULL	1	1
+453	val_453	3	1
+454	NULL	1	3
+454	val_454	3	3
+455	NULL	1	1
+455	val_455	3	1
+457	NULL	1	1
+457	val_457	3	1
+458	NULL	1	2
+458	val_458	3	2
+459	NULL	1	2
+459	val_459	3	2
+460	NULL	1	1
+460	val_460	3	1
+462	NULL	1	2
+462	val_462	3	2
+463	NULL	1	2
+463	val_463	3	2
+466	NULL	1	3
+466	val_466	3	3
+467	NULL	1	1
+467	val_467	3	1
+468	NULL	1	4
+468	val_468	3	4
+469	NULL	1	5
+469	val_469	3	5
+47	NULL	1	1
+47	val_47	3	1
+470	NULL	1	1
+470	val_470	3	1
+472	NULL	1	1
+472	val_472	3	1
+475	NULL	1	1
+475	val_475	3	1
+477	NULL	1	1
+477	val_477	3	1
+478	NULL	1	2
+478	val_478	3	2
+479	NULL	1	1
+479	val_479	3	1
+480	NULL	1	3
+480	val_480	3	3
+481	NULL	1	1
+481	val_481	3	1
+482	NULL	1	1
+482	val_482	3	1
+483	NULL	1	1
+483	val_483	3	1
+484	NULL	1	1
+484	val_484	3	1
+485	NULL	1	1
+485	val_485	3	1
+487	NULL	1	1
+487	val_487	3	1
+489	NULL	1	4
+489	val_489	3	4
+490	NULL	1	1
+490	val_490	3	1
+491	NULL	1	1
+491	val_491	3	1
+492	NULL	1	2
+492	val_492	3	2
+493	NULL	1	1
+493	val_493	3	1
+494	NULL	1	1
+494	val_494	3	1
+495	NULL	1	1
+495	val_495	3	1
+496	NULL	1	1
+496	val_496	3	1
+497	NULL	1	1
+497	val_497	3	1
+498	NULL	1	3
+498	val_498	3	3
+5	NULL	1	3
+5	val_5	3	3
+51	NULL	1	2
+51	val_51	3	2
+53	NULL	1	1
+53	val_53	3	1
+54	NULL	1	1
+54	val_54	3	1
+57	NULL	1	1
+57	val_57	3	1
+58	NULL	1	2
+58	val_58	3	2
+64	NULL	1	1
+64	val_64	3	1
+65	NULL	1	1
+65	val_65	3	1
+66	NULL	1	1
+66	val_66	3	1
+67	NULL	1	2
+67	val_67	3	2
+69	NULL	1	1
+69	val_69	3	1
+70	NULL	1	3
+70	val_70	3	3
+72	NULL	1	2
+72	val_72	3	2
+74	NULL	1	1
+74	val_74	3	1
+76	NULL	1	2
+76	val_76	3	2
+77	NULL	1	1
+77	val_77	3	1
+78	NULL	1	1
+78	val_78	3	1
+8	NULL	1	1
+8	val_8	3	1
+80	NULL	1	1
+80	val_80	3	1
+82	NULL	1	1
+82	val_82	3	1
+83	NULL	1	2
+83	val_83	3	2
+84	NULL	1	2
+84	val_84	3	2
+85	NULL	1	1
+85	val_85	3	1
+86	NULL	1	1
+86	val_86	3	1
+87	NULL	1	1
+87	val_87	3	1
+9	NULL	1	1
+9	val_9	3	1
+90	NULL	1	3
+90	val_90	3	3
+92	NULL	1	1
+92	val_92	3	1
+95	NULL	1	2
+95	val_95	3	2
+96	NULL	1	1
+96	val_96	3	1
+97	NULL	1	2
+97	val_97	3	2
+98	NULL	1	2
+98	val_98	3	2
 PREHOOK: query: DESCRIBE FORMATTED test_table_out_2 PARTITION (part = '1')
 PREHOOK: type: DESCTABLE
 PREHOOK: Input: default@test_table_out_2

http://git-wip-us.apache.org/repos/asf/hive/blob/444af207/ql/src/test/results/clientpositive/limit_pushdown2.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/limit_pushdown2.q.out b/ql/src/test/results/clientpositive/limit_pushdown2.q.out
index 2f68674..316d8e8 100644
--- a/ql/src/test/results/clientpositive/limit_pushdown2.q.out
+++ b/ql/src/test/results/clientpositive/limit_pushdown2.q.out
@@ -770,6 +770,95 @@ STAGE PLANS:
       Processor Tree:
         ListSink
 
+PREHOOK: query: explain
+select key, value, avg(key + 1) from src
+group by rollup(value, key)
+order by key, value limit 20
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select key, value, avg(key + 1) from src
+group by rollup(value, key)
+order by key, value limit 20
+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: src
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: value (type: string), key (type: string), (UDFToDouble(key) + 1.0) (type: double)
+              outputColumnNames: _col0, _col1, _col2
+              Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+              Group By Operator
+                aggregations: avg(_col2)
+                keys: _col0 (type: string), _col1 (type: string), '0' (type: string)
+                mode: hash
+                outputColumnNames: _col0, _col1, _col2, _col3
+                Statistics: Num rows: 1500 Data size: 15936 Basic stats: COMPLETE Column stats: NONE
+                Reduce Output Operator
+                  key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string)
+                  sort order: +++
+                  Map-reduce partition columns: _col0 (type: string), _col1 (type: string), _col2 (type: string)
+                  Statistics: Num rows: 1500 Data size: 15936 Basic stats: COMPLETE Column stats: NONE
+                  value expressions: _col3 (type: struct<count:bigint,sum:double,input:double>)
+      Reduce Operator Tree:
+        Group By Operator
+          aggregations: avg(VALUE._col0)
+          keys: KEY._col0 (type: string), KEY._col1 (type: string), KEY._col2 (type: string)
+          mode: mergepartial
+          outputColumnNames: _col0, _col1, _col3
+          Statistics: Num rows: 750 Data size: 7968 Basic stats: COMPLETE Column stats: NONE
+          pruneGroupingSetId: true
+          Select Operator
+            expressions: _col1 (type: string), _col0 (type: string), _col3 (type: double)
+            outputColumnNames: _col0, _col1, _col2
+            Statistics: Num rows: 750 Data size: 7968 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: string), _col1 (type: string)
+              sort order: ++
+              Statistics: Num rows: 750 Data size: 7968 Basic stats: COMPLETE Column stats: NONE
+              TopN Hash Memory Usage: 0.3
+              value expressions: _col2 (type: double)
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: string), KEY.reducesinkkey1 (type: string), VALUE._col0 (type: double)
+          outputColumnNames: _col0, _col1, _col2
+          Statistics: Num rows: 750 Data size: 7968 Basic stats: COMPLETE Column stats: NONE
+          Limit
+            Number of rows: 20
+            Statistics: Num rows: 20 Data size: 200 Basic stats: COMPLETE Column stats: NONE
+            File Output Operator
+              compressed: false
+              Statistics: Num rows: 20 Data size: 200 Basic stats: COMPLETE Column stats: NONE
+              table:
+                  input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                  output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                  serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: 20
+      Processor Tree:
+        ListSink
+
 PREHOOK: query: select key, value, avg(key + 1) from src
 group by value, key with rollup
 order by key, value limit 20