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 2017/03/07 18:29:10 UTC
hive git commit: HIVE-16102: Grouping sets do not conform to SQL
standard (Jesus Camacho Rodriguez, reviewed by Ashutosh Chauhan)
Repository: hive
Updated Branches:
refs/heads/master 2a0a56af9 -> 19004fe86
HIVE-16102: Grouping sets do not conform to SQL standard (Jesus Camacho Rodriguez, reviewed by Ashutosh Chauhan)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/19004fe8
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/19004fe8
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/19004fe8
Branch: refs/heads/master
Commit: 19004fe86a41b2161b79bc892ea88b04138add5c
Parents: 2a0a56a
Author: Jesus Camacho Rodriguez <jc...@apache.org>
Authored: Mon Mar 6 11:19:05 2017 +0000
Committer: Jesus Camacho Rodriguez <jc...@apache.org>
Committed: Tue Mar 7 18:26:45 2017 +0000
----------------------------------------------------------------------
.../org/apache/hadoop/hive/ql/ErrorMsg.java | 4 +-
.../hadoop/hive/ql/exec/GroupByOperator.java | 21 +-
.../rules/HiveExpandDistinctAggregatesRule.java | 10 +-
.../hadoop/hive/ql/parse/CalcitePlanner.java | 13 +-
.../hadoop/hive/ql/parse/SemanticAnalyzer.java | 16 +-
.../clientpositive/multi_count_distinct.q | 4 +-
.../clientpositive/multi_count_distinct_null.q | 6 +-
.../clientnegative/groupby_grouping_sets1.q.out | 2 +-
.../clientnegative/groupby_grouping_sets2.q.out | 2 +-
ql/src/test/results/clientpositive/cte_1.q.out | 8 +-
.../results/clientpositive/groupby_cube1.q.out | 14 +-
.../clientpositive/groupby_grouping_id1.q.out | 84 +--
.../groupby_grouping_sets_grouping.q.out | 92 ++-
.../groupby_grouping_window.q.out | 2 +-
.../infer_bucket_sort_grouping_operators.q.out | 620 +++++++++----------
.../results/clientpositive/llap/cte_1.q.out | 8 +-
.../llap/groupby_grouping_id2.q.out | 264 ++++----
.../llap/multi_count_distinct_null.q.out | 54 +-
.../llap/vector_grouping_sets.q.out | 14 +-
.../clientpositive/spark/groupby_cube1.q.out | 14 +-
.../spark/groupby_grouping_id2.q.out | 264 ++++----
.../tez/multi_count_distinct.q.out | 40 +-
.../clientpositive/vector_grouping_sets.q.out | 14 +-
23 files changed, 782 insertions(+), 788 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/19004fe8/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java b/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java
index 2ffc130..6a43385 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java
@@ -277,8 +277,8 @@ public enum ErrorMsg {
"Grouping sets aggregations (with rollups or cubes) are not allowed if aggregation function " +
"parameters overlap with the aggregation functions columns"),
- HIVE_GROUPING_SETS_AGGR_NOFUNC(10211,
- "Grouping sets aggregations are not allowed if no aggregation function is presented"),
+ HIVE_GROUPING_SETS_EMPTY(10211,
+ "Empty grouping sets not allowed"),
HIVE_UNION_REMOVE_OPTIMIZATION_NEEDS_SUBDIRECTORIES(10212,
"In order to use hive.optimize.union.remove, the hadoop version that you are using " +
http://git-wip-us.apache.org/repos/asf/hive/blob/19004fe8/ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java
index be561ce..6d6c608 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java
@@ -63,9 +63,10 @@ import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoUtils;
import org.apache.hadoop.io.BytesWritable;
import org.apache.hadoop.io.IntWritable;
-import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
+import com.google.common.math.IntMath;
+
import javolution.util.FastBitSet;
/**
@@ -171,14 +172,18 @@ public class GroupByOperator extends Operator<GroupByDesc> {
*/
protected transient int numEntriesHashTable;
- public static FastBitSet groupingSet2BitSet(int value) {
+ /**
+ * This method returns the big-endian representation of value.
+ * @param value
+ * @param length
+ * @return
+ */
+ public static FastBitSet groupingSet2BitSet(int value, int length) {
FastBitSet bits = new FastBitSet();
- int index = 0;
- while (value != 0) {
+ for (int index = length - 1; index >= 0; index--) {
if (value % 2 != 0) {
bits.set(index);
}
- ++index;
value = value >>> 1;
}
return bits;
@@ -231,7 +236,7 @@ public class GroupByOperator extends Operator<GroupByDesc> {
for (Integer groupingSet: groupingSets) {
// Create the mapping corresponding to the grouping set
newKeysGroupingSets[pos] = new IntWritable(groupingSet);
- groupingSetsBitSet[pos] = groupingSet2BitSet(groupingSet);
+ groupingSetsBitSet[pos] = groupingSet2BitSet(groupingSet, groupingSetsPosition);
pos++;
}
}
@@ -770,8 +775,8 @@ public class GroupByOperator extends Operator<GroupByDesc> {
FastBitSet bitset = groupingSetsBitSet[groupingSetPos];
// Some keys need to be left to null corresponding to that grouping set.
- for (int keyPos = bitset.nextSetBit(0); keyPos >= 0;
- keyPos = bitset.nextSetBit(keyPos+1)) {
+ for (int keyPos = bitset.nextClearBit(0); keyPos < groupingSetsPosition;
+ keyPos = bitset.nextClearBit(keyPos+1)) {
newKeysArray[keyPos] = cloneNewKeysArray[keyPos];
}
http://git-wip-us.apache.org/repos/asf/hive/blob/19004fe8/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveExpandDistinctAggregatesRule.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveExpandDistinctAggregatesRule.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveExpandDistinctAggregatesRule.java
index 82624fc..9825e7e 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveExpandDistinctAggregatesRule.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveExpandDistinctAggregatesRule.java
@@ -61,6 +61,7 @@ import org.slf4j.LoggerFactory;
import com.google.common.base.Function;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
+import com.google.common.math.IntMath;
/**
* Planner rule that expands distinct aggregates
@@ -206,10 +207,11 @@ public final class HiveExpandDistinctAggregatesRule extends RelOptRule {
return createCount(groupingSets, argList, cleanArgList, map, sourceOfForCountDistinct);
}
- private long getGroupingIdValue(List<Integer> list, List<Integer> sourceOfForCountDistinct) {
- long ind = 0;
+ private int getGroupingIdValue(List<Integer> list, List<Integer> sourceOfForCountDistinct,
+ int groupCount) {
+ int ind = IntMath.pow(2, groupCount) - 1;
for (int i : list) {
- ind |= 1 << sourceOfForCountDistinct.indexOf(i);
+ ind &= ~(1 << groupCount - sourceOfForCountDistinct.indexOf(i) - 1);
}
return ind;
}
@@ -240,7 +242,7 @@ public final class HiveExpandDistinctAggregatesRule extends RelOptRule {
for (List<Integer> list : cleanArgList) {
RexNode condition = rexBuilder.makeCall(SqlStdOperatorTable.EQUALS, originalInputRefs
.get(originalInputRefs.size() - 1), rexBuilder.makeExactLiteral(new BigDecimal(
- getGroupingIdValue(list, sourceOfForCountDistinct))));
+ getGroupingIdValue(list, sourceOfForCountDistinct, aggr.getGroupCount()))));
if (list.size() == 1) {
int pos = list.get(0);
RexNode notNull = rexBuilder.makeCall(SqlStdOperatorTable.IS_NOT_NULL,
http://git-wip-us.apache.org/repos/asf/hive/blob/19004fe8/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java
index db8d46e..bf0a11b 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java
@@ -2621,7 +2621,7 @@ public class CalcitePlanner extends SemanticAnalyzer {
Set<ImmutableBitSet> setTransformedGroupSets =
new HashSet<ImmutableBitSet>(groupSets.size());
for(int val: groupSets) {
- setTransformedGroupSets.add(convert(val));
+ setTransformedGroupSets.add(convert(val, groupSet.cardinality()));
}
// Calcite expects the grouping sets sorted and without duplicates
transformedGroupSets = new ArrayList<ImmutableBitSet>(setTransformedGroupSets);
@@ -2656,16 +2656,19 @@ public class CalcitePlanner extends SemanticAnalyzer {
return aggregateRel;
}
- private ImmutableBitSet convert(int value) {
+ /* This method returns the flip big-endian representation of value */
+ private ImmutableBitSet convert(int value, int length) {
BitSet bits = new BitSet();
- int index = 0;
- while (value != 0L) {
+ for (int index = length - 1; index >= 0; index--) {
if (value % 2 != 0) {
bits.set(index);
}
- ++index;
value = value >>> 1;
}
+ // We flip the bits because Calcite considers that '1'
+ // means that the column participates in the GroupBy
+ // and '0' does not, as opposed to grouping_id.
+ bits.flip(0, length);
return ImmutableBitSet.FROM_BIT_SET.apply(bits);
}
http://git-wip-us.apache.org/repos/asf/hive/blob/19004fe8/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
index 0872e53..ee9101b 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
@@ -3918,7 +3918,7 @@ public class SemanticAnalyzer extends BaseSemanticAnalyzer {
if (child.getType() != HiveParser.TOK_GROUPING_SETS_EXPRESSION) {
continue;
}
- int bitmap = 0;
+ int bitmap = IntMath.pow(2, groupByExpr.size()) - 1;
for (int j = 0; j < child.getChildCount(); ++j) {
String treeAsString = child.getChild(j).toStringTree();
Integer pos = exprPos.get(treeAsString);
@@ -3927,22 +3927,22 @@ public class SemanticAnalyzer extends BaseSemanticAnalyzer {
generateErrorMessage((ASTNode) child.getChild(j),
ErrorMsg.HIVE_GROUPING_SETS_EXPR_NOT_IN_GROUPBY.getErrorCodedMsg()));
}
- bitmap = setBit(bitmap, pos);
+ bitmap = unsetBit(bitmap, groupByExpr.size() - pos - 1);
}
result.add(bitmap);
}
}
- if (checkForNoAggr(result)) {
+ if (checkForEmptyGroupingSets(result, IntMath.pow(2, groupByExpr.size()) - 1)) {
throw new SemanticException(
- ErrorMsg.HIVE_GROUPING_SETS_AGGR_NOFUNC.getMsg());
+ ErrorMsg.HIVE_GROUPING_SETS_EMPTY.getMsg());
}
return result;
}
- private boolean checkForNoAggr(List<Integer> bitmaps) {
+ private boolean checkForEmptyGroupingSets(List<Integer> bitmaps, int groupingIdAllSet) {
boolean ret = true;
for (int mask : bitmaps) {
- ret &= mask == 0;
+ ret &= mask == groupingIdAllSet;
}
return ret;
}
@@ -3951,6 +3951,10 @@ public class SemanticAnalyzer extends BaseSemanticAnalyzer {
return bitmap | (1 << bitIdx);
}
+ public static int unsetBit(int bitmap, int bitIdx) {
+ return bitmap & ~(1 << bitIdx);
+ }
+
/**
* This function is a wrapper of parseInfo.getGroupByForClause which
* automatically translates SELECT DISTINCT a,b,c to SELECT a,b,c GROUP BY
http://git-wip-us.apache.org/repos/asf/hive/blob/19004fe8/ql/src/test/queries/clientpositive/multi_count_distinct.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/multi_count_distinct.q b/ql/src/test/queries/clientpositive/multi_count_distinct.q
index 855cb64..fb0c5fe 100644
--- a/ql/src/test/queries/clientpositive/multi_count_distinct.q
+++ b/ql/src/test/queries/clientpositive/multi_count_distinct.q
@@ -24,8 +24,8 @@ count(distinct education_level, department_id), count(distinct department_id, ed
select count(distinct gender), count(distinct department_id), count(distinct gender), count(distinct education_level),
count(distinct education_level, department_id), count(distinct department_id, education_level), count(distinct department_id, education_level, gender) from employee;
-select count(case i when 1 then 1 else null end) as c0, count(case i when 2 then 1 else null end) as c1,
-count(case i when 4 then 1 else null end) as c2 from (select grouping__id as i, department_id, gender,
+select count(case i when 3 then 1 else null end) as c0, count(case i when 5 then 1 else null end) as c1,
+count(case i when 6 then 1 else null end) as c2 from (select grouping__id as i, department_id, gender,
education_level from employee group by department_id, gender, education_level grouping sets
(department_id, gender, education_level))subq;
http://git-wip-us.apache.org/repos/asf/hive/blob/19004fe8/ql/src/test/queries/clientpositive/multi_count_distinct_null.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/multi_count_distinct_null.q b/ql/src/test/queries/clientpositive/multi_count_distinct_null.q
index 442d855..3e16386 100644
--- a/ql/src/test/queries/clientpositive/multi_count_distinct_null.q
+++ b/ql/src/test/queries/clientpositive/multi_count_distinct_null.q
@@ -29,9 +29,9 @@ select count(distinct gender), count(distinct department_id), count(distinct gen
count(distinct education_level, department_id), count(distinct department_id, education_level), count(distinct department_id, education_level, gender) from employee;
select
-count(case when i=1 and department_id is not null then 1 else null end) as c0,
-count(case when i=2 and gender is not null then 1 else null end) as c1,
-count(case when i=4 and education_level is not null then 1 else null end) as c2 from
+count(case when i=3 and department_id is not null then 1 else null end) as c0,
+count(case when i=5 and gender is not null then 1 else null end) as c1,
+count(case when i=6 and education_level is not null then 1 else null end) as c2 from
(select grouping__id as i, department_id, gender,
education_level from employee group by department_id, gender, education_level grouping sets
(department_id, gender, education_level))subq;
http://git-wip-us.apache.org/repos/asf/hive/blob/19004fe8/ql/src/test/results/clientnegative/groupby_grouping_sets1.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientnegative/groupby_grouping_sets1.q.out b/ql/src/test/results/clientnegative/groupby_grouping_sets1.q.out
index 8290d4c..12d0614 100644
--- a/ql/src/test/results/clientnegative/groupby_grouping_sets1.q.out
+++ b/ql/src/test/results/clientnegative/groupby_grouping_sets1.q.out
@@ -6,4 +6,4 @@ POSTHOOK: query: CREATE TABLE T1(a STRING, b STRING, c STRING)
POSTHOOK: type: CREATETABLE
POSTHOOK: Output: database:default
POSTHOOK: Output: default@T1
-FAILED: SemanticException [Error 10211]: Grouping sets aggregations are not allowed if no aggregation function is presented
+FAILED: SemanticException [Error 10211]: Empty grouping sets not allowed
http://git-wip-us.apache.org/repos/asf/hive/blob/19004fe8/ql/src/test/results/clientnegative/groupby_grouping_sets2.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientnegative/groupby_grouping_sets2.q.out b/ql/src/test/results/clientnegative/groupby_grouping_sets2.q.out
index 8290d4c..12d0614 100644
--- a/ql/src/test/results/clientnegative/groupby_grouping_sets2.q.out
+++ b/ql/src/test/results/clientnegative/groupby_grouping_sets2.q.out
@@ -6,4 +6,4 @@ POSTHOOK: query: CREATE TABLE T1(a STRING, b STRING, c STRING)
POSTHOOK: type: CREATETABLE
POSTHOOK: Output: database:default
POSTHOOK: Output: default@T1
-FAILED: SemanticException [Error 10211]: Grouping sets aggregations are not allowed if no aggregation function is presented
+FAILED: SemanticException [Error 10211]: Empty grouping sets not allowed
http://git-wip-us.apache.org/repos/asf/hive/blob/19004fe8/ql/src/test/results/clientpositive/cte_1.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/cte_1.q.out b/ql/src/test/results/clientpositive/cte_1.q.out
index d13ad42..9374a32 100644
--- a/ql/src/test/results/clientpositive/cte_1.q.out
+++ b/ql/src/test/results/clientpositive/cte_1.q.out
@@ -715,9 +715,9 @@ POSTHOOK: query: with q1 as (select * from alltypesorc)
POSTHOOK: type: QUERY
POSTHOOK: Input: default@alltypesorc
#### A masked pattern was here ####
-NULL NULL 810.5504687159363
NULL NULL 2735.0
NULL NULL 2735.0
+NULL NULL 810.5504687159363
NULL 2x14G717LqcPA7Ic5 NULL
NULL 3Ke6A1U847tV73 NULL
NULL 45ja5suO NULL
@@ -6872,8 +6872,8 @@ NULL y605nF0K3mMoM75j NULL
762 BLoMwUJ51ns6pd NULL
762 a10E76jX35YwquKCTA NULL
762 q5y2Vy1 NULL
-6981 NULL 69.66666666666667
6981 NULL NULL
+6981 NULL 69.66666666666667
6981 1FNNhmiFLGw425NA13g -75.0
6981 4KhrrQ0nJ7bMNTvhSCA NULL
6981 K630vaVf NULL
@@ -12961,9 +12961,9 @@ POSTHOOK: query: with q1 as (select * from alltypesorc)
POSTHOOK: type: QUERY
POSTHOOK: Input: default@alltypesorc
#### A masked pattern was here ####
-NULL NULL 810.5504687159363
NULL NULL 2735.0
NULL NULL 2735.0
+NULL NULL 810.5504687159363
NULL 2x14G717LqcPA7Ic5 NULL
NULL 3Ke6A1U847tV73 NULL
NULL 45ja5suO NULL
@@ -19118,8 +19118,8 @@ NULL y605nF0K3mMoM75j NULL
762 BLoMwUJ51ns6pd NULL
762 a10E76jX35YwquKCTA NULL
762 q5y2Vy1 NULL
-6981 NULL 69.66666666666667
6981 NULL NULL
+6981 NULL 69.66666666666667
6981 1FNNhmiFLGw425NA13g -75.0
6981 4KhrrQ0nJ7bMNTvhSCA NULL
6981 K630vaVf NULL
http://git-wip-us.apache.org/repos/asf/hive/blob/19004fe8/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 0486b68..fd70a2c 100644
--- a/ql/src/test/results/clientpositive/groupby_cube1.q.out
+++ b/ql/src/test/results/clientpositive/groupby_cube1.q.out
@@ -224,16 +224,16 @@ POSTHOOK: query: SELECT key, val, GROUPING__ID, count(1) FROM T1 GROUP BY key, v
POSTHOOK: type: QUERY
POSTHOOK: Input: default@t1
#### A masked pattern was here ####
-1 11 3 1
+1 11 0 1
1 NULL 1 1
-2 12 3 1
+2 12 0 1
2 NULL 1 1
-3 13 3 1
+3 13 0 1
3 NULL 1 1
-7 17 3 1
+7 17 0 1
7 NULL 1 1
-8 18 3 1
-8 28 3 1
+8 18 0 1
+8 28 0 1
8 NULL 1 2
NULL 11 2 1
NULL 12 2 1
@@ -241,7 +241,7 @@ NULL 13 2 1
NULL 17 2 1
NULL 18 2 1
NULL 28 2 1
-NULL NULL 0 6
+NULL NULL 3 6
PREHOOK: query: EXPLAIN
SELECT key, count(distinct val) FROM T1 GROUP BY key with cube
PREHOOK: type: QUERY
http://git-wip-us.apache.org/repos/asf/hive/blob/19004fe8/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 9ef7615..c2a0393 100644
--- a/ql/src/test/results/clientpositive/groupby_grouping_id1.q.out
+++ b/ql/src/test/results/clientpositive/groupby_grouping_id1.q.out
@@ -22,7 +22,7 @@ POSTHOOK: query: SELECT key, val, GROUPING__ID from T1 group by key, val with cu
POSTHOOK: type: QUERY
POSTHOOK: Input: default@t1
#### A masked pattern was here ####
-NULL NULL 0
+NULL NULL 3
NULL 11 2
NULL 12 2
NULL 13 2
@@ -30,16 +30,16 @@ NULL 17 2
NULL 18 2
NULL 28 2
1 NULL 1
-1 11 3
+1 11 0
2 NULL 1
-2 12 3
+2 12 0
3 NULL 1
-3 13 3
+3 13 0
7 NULL 1
-7 17 3
+7 17 0
8 NULL 1
-8 18 3
-8 28 3
+8 18 0
+8 28 0
PREHOOK: query: SELECT key, val, GROUPING__ID from T1 group by cube(key, val)
PREHOOK: type: QUERY
PREHOOK: Input: default@t1
@@ -48,7 +48,7 @@ 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 NULL 3
NULL 11 2
NULL 12 2
NULL 13 2
@@ -56,16 +56,16 @@ NULL 17 2
NULL 18 2
NULL 28 2
1 NULL 1
-1 11 3
+1 11 0
2 NULL 1
-2 12 3
+2 12 0
3 NULL 1
-3 13 3
+3 13 0
7 NULL 1
-7 17 3
+7 17 0
8 NULL 1
-8 18 3
-8 28 3
+8 18 0
+8 28 0
PREHOOK: query: SELECT GROUPING__ID, key, val from T1 group by key, val with rollup
PREHOOK: type: QUERY
PREHOOK: Input: default@t1
@@ -74,18 +74,18 @@ POSTHOOK: query: SELECT GROUPING__ID, key, val from T1 group by key, val with ro
POSTHOOK: type: QUERY
POSTHOOK: Input: default@t1
#### A masked pattern was here ####
-0 NULL NULL
+3 NULL NULL
1 1 NULL
-3 1 11
+0 1 11
1 2 NULL
-3 2 12
+0 2 12
1 3 NULL
-3 3 13
+0 3 13
1 7 NULL
-3 7 17
+0 7 17
1 8 NULL
-3 8 18
-3 8 28
+0 8 18
+0 8 28
PREHOOK: query: SELECT GROUPING__ID, key, val from T1 group by rollup (key, val)
PREHOOK: type: QUERY
PREHOOK: Input: default@t1
@@ -94,18 +94,18 @@ 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
+3 NULL NULL
1 1 NULL
-3 1 11
+0 1 11
1 2 NULL
-3 2 12
+0 2 12
1 3 NULL
-3 3 13
+0 3 13
1 7 NULL
-3 7 17
+0 7 17
1 8 NULL
-3 8 18
-3 8 28
+0 8 18
+0 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
@@ -114,7 +114,7 @@ POSTHOOK: query: SELECT key, val, GROUPING__ID, CASE WHEN GROUPING__ID == 0 THEN
POSTHOOK: type: QUERY
POSTHOOK: Input: default@t1
#### A masked pattern was here ####
-NULL NULL 0 0
+NULL NULL 3 3
NULL 11 2 2
NULL 12 2 2
NULL 13 2 2
@@ -122,16 +122,16 @@ NULL 17 2 2
NULL 18 2 2
NULL 28 2 2
1 NULL 1 1
-1 11 3 3
+1 11 0 0
2 NULL 1 1
-2 12 3 3
+2 12 0 0
3 NULL 1 1
-3 13 3 3
+3 13 0 0
7 NULL 1 1
-7 17 3 3
+7 17 0 0
8 NULL 1 1
-8 18 3 3
-8 28 3 3
+8 18 0 0
+8 28 0 0
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
@@ -140,7 +140,7 @@ POSTHOOK: query: SELECT key, val, GROUPING__ID, CASE WHEN GROUPING__ID == 0 THEN
POSTHOOK: type: QUERY
POSTHOOK: Input: default@t1
#### A masked pattern was here ####
-NULL NULL 0 0
+NULL NULL 3 3
NULL 11 2 2
NULL 12 2 2
NULL 13 2 2
@@ -148,13 +148,13 @@ NULL 17 2 2
NULL 18 2 2
NULL 28 2 2
1 NULL 1 1
-1 11 3 3
+1 11 0 0
2 NULL 1 1
-2 12 3 3
+2 12 0 0
3 NULL 1 1
-3 13 3 3
+3 13 0 0
7 NULL 1 1
-7 17 3 3
+7 17 0 0
8 NULL 1 1
-8 18 3 3
-8 28 3 3
+8 18 0 0
+8 28 0 0
http://git-wip-us.apache.org/repos/asf/hive/blob/19004fe8/ql/src/test/results/clientpositive/groupby_grouping_sets_grouping.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/groupby_grouping_sets_grouping.q.out b/ql/src/test/results/clientpositive/groupby_grouping_sets_grouping.q.out
index 6917dba..7faf278 100644
--- a/ql/src/test/results/clientpositive/groupby_grouping_sets_grouping.q.out
+++ b/ql/src/test/results/clientpositive/groupby_grouping_sets_grouping.q.out
@@ -85,17 +85,17 @@ group by rollup(key, value)
POSTHOOK: type: QUERY
POSTHOOK: Input: default@t1
#### A masked pattern was here ####
-NULL NULL 0 0 0
+NULL NULL 3 1 1
+1 NULL 0 0 0
1 NULL 1 0 1
-1 NULL 3 1 1
-1 1 3 1 1
+1 1 0 0 0
2 NULL 1 0 1
-2 2 3 1 1
+2 2 0 0 0
+3 NULL 0 0 0
3 NULL 1 0 1
-3 NULL 3 1 1
-3 3 3 1 1
+3 3 0 0 0
4 NULL 1 0 1
-4 5 3 1 1
+4 5 0 0 0
PREHOOK: query: explain
select key, value, `grouping__id`, grouping(key), grouping(value)
from T1
@@ -167,22 +167,22 @@ group by cube(key, value)
POSTHOOK: type: QUERY
POSTHOOK: Input: default@t1
#### A masked pattern was here ####
-NULL NULL 0 0 0
NULL NULL 2 1 0
+NULL NULL 3 1 1
NULL 1 2 1 0
NULL 2 2 1 0
NULL 3 2 1 0
NULL 5 2 1 0
+1 NULL 0 0 0
1 NULL 1 0 1
-1 NULL 3 1 1
-1 1 3 1 1
+1 1 0 0 0
2 NULL 1 0 1
-2 2 3 1 1
+2 2 0 0 0
+3 NULL 0 0 0
3 NULL 1 0 1
-3 NULL 3 1 1
-3 3 3 1 1
+3 3 0 0 0
4 NULL 1 0 1
-4 5 3 1 1
+4 5 0 0 0
PREHOOK: query: explain
select key, value
from T1
@@ -262,16 +262,11 @@ POSTHOOK: type: QUERY
POSTHOOK: Input: default@t1
#### A masked pattern was here ####
NULL NULL
+NULL NULL
NULL 1
NULL 2
NULL 3
NULL 5
-1 NULL
-1 1
-2 2
-3 NULL
-3 3
-4 5
PREHOOK: query: explain
select key, value, grouping(key)+grouping(value) as x
from T1
@@ -376,17 +371,12 @@ order by x desc, case when x = 1 then key end
POSTHOOK: type: QUERY
POSTHOOK: Input: default@t1
#### A masked pattern was here ####
-4 5 2
-3 3 2
-3 NULL 2
-2 2 2
-1 1 2
-1 NULL 2
-NULL 1 1
-NULL NULL 1
+NULL NULL 2
NULL 5 1
NULL 3 1
NULL 2 1
+NULL 1 1
+NULL NULL 1
1 NULL 1
2 NULL 1
3 NULL 1
@@ -462,17 +452,17 @@ group by rollup(key, value)
POSTHOOK: type: QUERY
POSTHOOK: Input: default@t1
#### A masked pattern was here ####
-NULL NULL 0 0 0
+NULL NULL 3 1 1
+1 NULL 0 0 0
1 NULL 1 0 1
-1 NULL 3 1 1
-1 1 3 1 1
+1 1 0 0 0
2 NULL 1 0 1
-2 2 3 1 1
+2 2 0 0 0
+3 NULL 0 0 0
3 NULL 1 0 1
-3 NULL 3 1 1
-3 3 3 1 1
+3 3 0 0 0
4 NULL 1 0 1
-4 5 3 1 1
+4 5 0 0 0
PREHOOK: query: explain
select key, value, `grouping__id`, grouping(key), grouping(value)
from T1
@@ -544,22 +534,22 @@ group by cube(key, value)
POSTHOOK: type: QUERY
POSTHOOK: Input: default@t1
#### A masked pattern was here ####
-NULL NULL 0 0 0
NULL NULL 2 1 0
+NULL NULL 3 1 1
NULL 1 2 1 0
NULL 2 2 1 0
NULL 3 2 1 0
NULL 5 2 1 0
+1 NULL 0 0 0
1 NULL 1 0 1
-1 NULL 3 1 1
-1 1 3 1 1
+1 1 0 0 0
2 NULL 1 0 1
-2 2 3 1 1
+2 2 0 0 0
+3 NULL 0 0 0
3 NULL 1 0 1
-3 NULL 3 1 1
-3 3 3 1 1
+3 3 0 0 0
4 NULL 1 0 1
-4 5 3 1 1
+4 5 0 0 0
PREHOOK: query: explain
select key, value
from T1
@@ -636,16 +626,11 @@ POSTHOOK: type: QUERY
POSTHOOK: Input: default@t1
#### A masked pattern was here ####
NULL NULL
+NULL NULL
NULL 1
NULL 2
NULL 3
NULL 5
-1 NULL
-1 1
-2 2
-3 NULL
-3 3
-4 5
PREHOOK: query: explain
select key, value, grouping(key)+grouping(value) as x
from T1
@@ -750,17 +735,12 @@ order by x desc, case when x = 1 then key end
POSTHOOK: type: QUERY
POSTHOOK: Input: default@t1
#### A masked pattern was here ####
-4 5 2
-3 3 2
-3 NULL 2
-2 2 2
-1 1 2
-1 NULL 2
-NULL 1 1
-NULL NULL 1
+NULL NULL 2
NULL 5 1
NULL 3 1
NULL 2 1
+NULL 1 1
+NULL NULL 1
1 NULL 1
2 NULL 1
3 NULL 1
http://git-wip-us.apache.org/repos/asf/hive/blob/19004fe8/ql/src/test/results/clientpositive/groupby_grouping_window.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/groupby_grouping_window.q.out b/ql/src/test/results/clientpositive/groupby_grouping_window.q.out
index 202fad0..4fc36ed 100644
--- a/ql/src/test/results/clientpositive/groupby_grouping_window.q.out
+++ b/ql/src/test/results/clientpositive/groupby_grouping_window.q.out
@@ -168,7 +168,7 @@ POSTHOOK: Input: default@t
0 NULL
0 NULL
0 NULL
-0 NULL
+1 NULL
PREHOOK: query: SELECT grouping(category), lead(live) over(partition by grouping(category))
FROM t
GROUP BY category, live
http://git-wip-us.apache.org/repos/asf/hive/blob/19004fe8/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 d740dea..40bdc52 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
@@ -786,625 +786,625 @@ POSTHOOK: query: SELECT key, value, GROUPING__ID, count(1) FROM src GROUP BY ROL
POSTHOOK: type: QUERY
POSTHOOK: Input: default@src
#### A masked pattern was here ####
-NULL NULL 0 500
+NULL NULL 3 500
0 NULL 1 3
-0 val_0 3 3
+0 val_0 0 3
10 NULL 1 1
-10 val_10 3 1
+10 val_10 0 1
100 NULL 1 2
-100 val_100 3 2
+100 val_100 0 2
103 NULL 1 2
-103 val_103 3 2
+103 val_103 0 2
104 NULL 1 2
-104 val_104 3 2
+104 val_104 0 2
105 NULL 1 1
-105 val_105 3 1
+105 val_105 0 1
11 NULL 1 1
-11 val_11 3 1
+11 val_11 0 1
111 NULL 1 1
-111 val_111 3 1
+111 val_111 0 1
113 NULL 1 2
-113 val_113 3 2
+113 val_113 0 2
114 NULL 1 1
-114 val_114 3 1
+114 val_114 0 1
116 NULL 1 1
-116 val_116 3 1
+116 val_116 0 1
118 NULL 1 2
-118 val_118 3 2
+118 val_118 0 2
119 NULL 1 3
-119 val_119 3 3
+119 val_119 0 3
12 NULL 1 2
-12 val_12 3 2
+12 val_12 0 2
120 NULL 1 2
-120 val_120 3 2
+120 val_120 0 2
125 NULL 1 2
-125 val_125 3 2
+125 val_125 0 2
126 NULL 1 1
-126 val_126 3 1
+126 val_126 0 1
128 NULL 1 3
-128 val_128 3 3
+128 val_128 0 3
129 NULL 1 2
-129 val_129 3 2
+129 val_129 0 2
131 NULL 1 1
-131 val_131 3 1
+131 val_131 0 1
133 NULL 1 1
-133 val_133 3 1
+133 val_133 0 1
134 NULL 1 2
-134 val_134 3 2
+134 val_134 0 2
136 NULL 1 1
-136 val_136 3 1
+136 val_136 0 1
137 NULL 1 2
-137 val_137 3 2
+137 val_137 0 2
138 NULL 1 4
-138 val_138 3 4
+138 val_138 0 4
143 NULL 1 1
-143 val_143 3 1
+143 val_143 0 1
145 NULL 1 1
-145 val_145 3 1
+145 val_145 0 1
146 NULL 1 2
-146 val_146 3 2
+146 val_146 0 2
149 NULL 1 2
-149 val_149 3 2
+149 val_149 0 2
15 NULL 1 2
-15 val_15 3 2
+15 val_15 0 2
150 NULL 1 1
-150 val_150 3 1
+150 val_150 0 1
152 NULL 1 2
-152 val_152 3 2
+152 val_152 0 2
153 NULL 1 1
-153 val_153 3 1
+153 val_153 0 1
155 NULL 1 1
-155 val_155 3 1
+155 val_155 0 1
156 NULL 1 1
-156 val_156 3 1
+156 val_156 0 1
157 NULL 1 1
-157 val_157 3 1
+157 val_157 0 1
158 NULL 1 1
-158 val_158 3 1
+158 val_158 0 1
160 NULL 1 1
-160 val_160 3 1
+160 val_160 0 1
162 NULL 1 1
-162 val_162 3 1
+162 val_162 0 1
163 NULL 1 1
-163 val_163 3 1
+163 val_163 0 1
164 NULL 1 2
-164 val_164 3 2
+164 val_164 0 2
165 NULL 1 2
-165 val_165 3 2
+165 val_165 0 2
166 NULL 1 1
-166 val_166 3 1
+166 val_166 0 1
167 NULL 1 3
-167 val_167 3 3
+167 val_167 0 3
168 NULL 1 1
-168 val_168 3 1
+168 val_168 0 1
169 NULL 1 4
-169 val_169 3 4
+169 val_169 0 4
17 NULL 1 1
-17 val_17 3 1
+17 val_17 0 1
170 NULL 1 1
-170 val_170 3 1
+170 val_170 0 1
172 NULL 1 2
-172 val_172 3 2
+172 val_172 0 2
174 NULL 1 2
-174 val_174 3 2
+174 val_174 0 2
175 NULL 1 2
-175 val_175 3 2
+175 val_175 0 2
176 NULL 1 2
-176 val_176 3 2
+176 val_176 0 2
177 NULL 1 1
-177 val_177 3 1
+177 val_177 0 1
178 NULL 1 1
-178 val_178 3 1
+178 val_178 0 1
179 NULL 1 2
-179 val_179 3 2
+179 val_179 0 2
18 NULL 1 2
-18 val_18 3 2
+18 val_18 0 2
180 NULL 1 1
-180 val_180 3 1
+180 val_180 0 1
181 NULL 1 1
-181 val_181 3 1
+181 val_181 0 1
183 NULL 1 1
-183 val_183 3 1
+183 val_183 0 1
186 NULL 1 1
-186 val_186 3 1
+186 val_186 0 1
187 NULL 1 3
-187 val_187 3 3
+187 val_187 0 3
189 NULL 1 1
-189 val_189 3 1
+189 val_189 0 1
19 NULL 1 1
-19 val_19 3 1
+19 val_19 0 1
190 NULL 1 1
-190 val_190 3 1
+190 val_190 0 1
191 NULL 1 2
-191 val_191 3 2
+191 val_191 0 2
192 NULL 1 1
-192 val_192 3 1
+192 val_192 0 1
193 NULL 1 3
-193 val_193 3 3
+193 val_193 0 3
194 NULL 1 1
-194 val_194 3 1
+194 val_194 0 1
195 NULL 1 2
-195 val_195 3 2
+195 val_195 0 2
196 NULL 1 1
-196 val_196 3 1
+196 val_196 0 1
197 NULL 1 2
-197 val_197 3 2
+197 val_197 0 2
199 NULL 1 3
-199 val_199 3 3
+199 val_199 0 3
2 NULL 1 1
-2 val_2 3 1
+2 val_2 0 1
20 NULL 1 1
-20 val_20 3 1
+20 val_20 0 1
200 NULL 1 2
-200 val_200 3 2
+200 val_200 0 2
201 NULL 1 1
-201 val_201 3 1
+201 val_201 0 1
202 NULL 1 1
-202 val_202 3 1
+202 val_202 0 1
203 NULL 1 2
-203 val_203 3 2
+203 val_203 0 2
205 NULL 1 2
-205 val_205 3 2
+205 val_205 0 2
207 NULL 1 2
-207 val_207 3 2
+207 val_207 0 2
208 NULL 1 3
-208 val_208 3 3
+208 val_208 0 3
209 NULL 1 2
-209 val_209 3 2
+209 val_209 0 2
213 NULL 1 2
-213 val_213 3 2
+213 val_213 0 2
214 NULL 1 1
-214 val_214 3 1
+214 val_214 0 1
216 NULL 1 2
-216 val_216 3 2
+216 val_216 0 2
217 NULL 1 2
-217 val_217 3 2
+217 val_217 0 2
218 NULL 1 1
-218 val_218 3 1
+218 val_218 0 1
219 NULL 1 2
-219 val_219 3 2
+219 val_219 0 2
221 NULL 1 2
-221 val_221 3 2
+221 val_221 0 2
222 NULL 1 1
-222 val_222 3 1
+222 val_222 0 1
223 NULL 1 2
-223 val_223 3 2
+223 val_223 0 2
224 NULL 1 2
-224 val_224 3 2
+224 val_224 0 2
226 NULL 1 1
-226 val_226 3 1
+226 val_226 0 1
228 NULL 1 1
-228 val_228 3 1
+228 val_228 0 1
229 NULL 1 2
-229 val_229 3 2
+229 val_229 0 2
230 NULL 1 5
-230 val_230 3 5
+230 val_230 0 5
233 NULL 1 2
-233 val_233 3 2
+233 val_233 0 2
235 NULL 1 1
-235 val_235 3 1
+235 val_235 0 1
237 NULL 1 2
-237 val_237 3 2
+237 val_237 0 2
238 NULL 1 2
-238 val_238 3 2
+238 val_238 0 2
239 NULL 1 2
-239 val_239 3 2
+239 val_239 0 2
24 NULL 1 2
-24 val_24 3 2
+24 val_24 0 2
241 NULL 1 1
-241 val_241 3 1
+241 val_241 0 1
242 NULL 1 2
-242 val_242 3 2
+242 val_242 0 2
244 NULL 1 1
-244 val_244 3 1
+244 val_244 0 1
247 NULL 1 1
-247 val_247 3 1
+247 val_247 0 1
248 NULL 1 1
-248 val_248 3 1
+248 val_248 0 1
249 NULL 1 1
-249 val_249 3 1
+249 val_249 0 1
252 NULL 1 1
-252 val_252 3 1
+252 val_252 0 1
255 NULL 1 2
-255 val_255 3 2
+255 val_255 0 2
256 NULL 1 2
-256 val_256 3 2
+256 val_256 0 2
257 NULL 1 1
-257 val_257 3 1
+257 val_257 0 1
258 NULL 1 1
-258 val_258 3 1
+258 val_258 0 1
26 NULL 1 2
-26 val_26 3 2
+26 val_26 0 2
260 NULL 1 1
-260 val_260 3 1
+260 val_260 0 1
262 NULL 1 1
-262 val_262 3 1
+262 val_262 0 1
263 NULL 1 1
-263 val_263 3 1
+263 val_263 0 1
265 NULL 1 2
-265 val_265 3 2
+265 val_265 0 2
266 NULL 1 1
-266 val_266 3 1
+266 val_266 0 1
27 NULL 1 1
-27 val_27 3 1
+27 val_27 0 1
272 NULL 1 2
-272 val_272 3 2
+272 val_272 0 2
273 NULL 1 3
-273 val_273 3 3
+273 val_273 0 3
274 NULL 1 1
-274 val_274 3 1
+274 val_274 0 1
275 NULL 1 1
-275 val_275 3 1
+275 val_275 0 1
277 NULL 1 4
-277 val_277 3 4
+277 val_277 0 4
278 NULL 1 2
-278 val_278 3 2
+278 val_278 0 2
28 NULL 1 1
-28 val_28 3 1
+28 val_28 0 1
280 NULL 1 2
-280 val_280 3 2
+280 val_280 0 2
281 NULL 1 2
-281 val_281 3 2
+281 val_281 0 2
282 NULL 1 2
-282 val_282 3 2
+282 val_282 0 2
283 NULL 1 1
-283 val_283 3 1
+283 val_283 0 1
284 NULL 1 1
-284 val_284 3 1
+284 val_284 0 1
285 NULL 1 1
-285 val_285 3 1
+285 val_285 0 1
286 NULL 1 1
-286 val_286 3 1
+286 val_286 0 1
287 NULL 1 1
-287 val_287 3 1
+287 val_287 0 1
288 NULL 1 2
-288 val_288 3 2
+288 val_288 0 2
289 NULL 1 1
-289 val_289 3 1
+289 val_289 0 1
291 NULL 1 1
-291 val_291 3 1
+291 val_291 0 1
292 NULL 1 1
-292 val_292 3 1
+292 val_292 0 1
296 NULL 1 1
-296 val_296 3 1
+296 val_296 0 1
298 NULL 1 3
-298 val_298 3 3
+298 val_298 0 3
30 NULL 1 1
-30 val_30 3 1
+30 val_30 0 1
302 NULL 1 1
-302 val_302 3 1
+302 val_302 0 1
305 NULL 1 1
-305 val_305 3 1
+305 val_305 0 1
306 NULL 1 1
-306 val_306 3 1
+306 val_306 0 1
307 NULL 1 2
-307 val_307 3 2
+307 val_307 0 2
308 NULL 1 1
-308 val_308 3 1
+308 val_308 0 1
309 NULL 1 2
-309 val_309 3 2
+309 val_309 0 2
310 NULL 1 1
-310 val_310 3 1
+310 val_310 0 1
311 NULL 1 3
-311 val_311 3 3
+311 val_311 0 3
315 NULL 1 1
-315 val_315 3 1
+315 val_315 0 1
316 NULL 1 3
-316 val_316 3 3
+316 val_316 0 3
317 NULL 1 2
-317 val_317 3 2
+317 val_317 0 2
318 NULL 1 3
-318 val_318 3 3
+318 val_318 0 3
321 NULL 1 2
-321 val_321 3 2
+321 val_321 0 2
322 NULL 1 2
-322 val_322 3 2
+322 val_322 0 2
323 NULL 1 1
-323 val_323 3 1
+323 val_323 0 1
325 NULL 1 2
-325 val_325 3 2
+325 val_325 0 2
327 NULL 1 3
-327 val_327 3 3
+327 val_327 0 3
33 NULL 1 1
-33 val_33 3 1
+33 val_33 0 1
331 NULL 1 2
-331 val_331 3 2
+331 val_331 0 2
332 NULL 1 1
-332 val_332 3 1
+332 val_332 0 1
333 NULL 1 2
-333 val_333 3 2
+333 val_333 0 2
335 NULL 1 1
-335 val_335 3 1
+335 val_335 0 1
336 NULL 1 1
-336 val_336 3 1
+336 val_336 0 1
338 NULL 1 1
-338 val_338 3 1
+338 val_338 0 1
339 NULL 1 1
-339 val_339 3 1
+339 val_339 0 1
34 NULL 1 1
-34 val_34 3 1
+34 val_34 0 1
341 NULL 1 1
-341 val_341 3 1
+341 val_341 0 1
342 NULL 1 2
-342 val_342 3 2
+342 val_342 0 2
344 NULL 1 2
-344 val_344 3 2
+344 val_344 0 2
345 NULL 1 1
-345 val_345 3 1
+345 val_345 0 1
348 NULL 1 5
-348 val_348 3 5
+348 val_348 0 5
35 NULL 1 3
-35 val_35 3 3
+35 val_35 0 3
351 NULL 1 1
-351 val_351 3 1
+351 val_351 0 1
353 NULL 1 2
-353 val_353 3 2
+353 val_353 0 2
356 NULL 1 1
-356 val_356 3 1
+356 val_356 0 1
360 NULL 1 1
-360 val_360 3 1
+360 val_360 0 1
362 NULL 1 1
-362 val_362 3 1
+362 val_362 0 1
364 NULL 1 1
-364 val_364 3 1
+364 val_364 0 1
365 NULL 1 1
-365 val_365 3 1
+365 val_365 0 1
366 NULL 1 1
-366 val_366 3 1
+366 val_366 0 1
367 NULL 1 2
-367 val_367 3 2
+367 val_367 0 2
368 NULL 1 1
-368 val_368 3 1
+368 val_368 0 1
369 NULL 1 3
-369 val_369 3 3
+369 val_369 0 3
37 NULL 1 2
-37 val_37 3 2
+37 val_37 0 2
373 NULL 1 1
-373 val_373 3 1
+373 val_373 0 1
374 NULL 1 1
-374 val_374 3 1
+374 val_374 0 1
375 NULL 1 1
-375 val_375 3 1
+375 val_375 0 1
377 NULL 1 1
-377 val_377 3 1
+377 val_377 0 1
378 NULL 1 1
-378 val_378 3 1
+378 val_378 0 1
379 NULL 1 1
-379 val_379 3 1
+379 val_379 0 1
382 NULL 1 2
-382 val_382 3 2
+382 val_382 0 2
384 NULL 1 3
-384 val_384 3 3
+384 val_384 0 3
386 NULL 1 1
-386 val_386 3 1
+386 val_386 0 1
389 NULL 1 1
-389 val_389 3 1
+389 val_389 0 1
392 NULL 1 1
-392 val_392 3 1
+392 val_392 0 1
393 NULL 1 1
-393 val_393 3 1
+393 val_393 0 1
394 NULL 1 1
-394 val_394 3 1
+394 val_394 0 1
395 NULL 1 2
-395 val_395 3 2
+395 val_395 0 2
396 NULL 1 3
-396 val_396 3 3
+396 val_396 0 3
397 NULL 1 2
-397 val_397 3 2
+397 val_397 0 2
399 NULL 1 2
-399 val_399 3 2
+399 val_399 0 2
4 NULL 1 1
-4 val_4 3 1
+4 val_4 0 1
400 NULL 1 1
-400 val_400 3 1
+400 val_400 0 1
401 NULL 1 5
-401 val_401 3 5
+401 val_401 0 5
402 NULL 1 1
-402 val_402 3 1
+402 val_402 0 1
403 NULL 1 3
-403 val_403 3 3
+403 val_403 0 3
404 NULL 1 2
-404 val_404 3 2
+404 val_404 0 2
406 NULL 1 4
-406 val_406 3 4
+406 val_406 0 4
407 NULL 1 1
-407 val_407 3 1
+407 val_407 0 1
409 NULL 1 3
-409 val_409 3 3
+409 val_409 0 3
41 NULL 1 1
-41 val_41 3 1
+41 val_41 0 1
411 NULL 1 1
-411 val_411 3 1
+411 val_411 0 1
413 NULL 1 2
-413 val_413 3 2
+413 val_413 0 2
414 NULL 1 2
-414 val_414 3 2
+414 val_414 0 2
417 NULL 1 3
-417 val_417 3 3
+417 val_417 0 3
418 NULL 1 1
-418 val_418 3 1
+418 val_418 0 1
419 NULL 1 1
-419 val_419 3 1
+419 val_419 0 1
42 NULL 1 2
-42 val_42 3 2
+42 val_42 0 2
421 NULL 1 1
-421 val_421 3 1
+421 val_421 0 1
424 NULL 1 2
-424 val_424 3 2
+424 val_424 0 2
427 NULL 1 1
-427 val_427 3 1
+427 val_427 0 1
429 NULL 1 2
-429 val_429 3 2
+429 val_429 0 2
43 NULL 1 1
-43 val_43 3 1
+43 val_43 0 1
430 NULL 1 3
-430 val_430 3 3
+430 val_430 0 3
431 NULL 1 3
-431 val_431 3 3
+431 val_431 0 3
432 NULL 1 1
-432 val_432 3 1
+432 val_432 0 1
435 NULL 1 1
-435 val_435 3 1
+435 val_435 0 1
436 NULL 1 1
-436 val_436 3 1
+436 val_436 0 1
437 NULL 1 1
-437 val_437 3 1
+437 val_437 0 1
438 NULL 1 3
-438 val_438 3 3
+438 val_438 0 3
439 NULL 1 2
-439 val_439 3 2
+439 val_439 0 2
44 NULL 1 1
-44 val_44 3 1
+44 val_44 0 1
443 NULL 1 1
-443 val_443 3 1
+443 val_443 0 1
444 NULL 1 1
-444 val_444 3 1
+444 val_444 0 1
446 NULL 1 1
-446 val_446 3 1
+446 val_446 0 1
448 NULL 1 1
-448 val_448 3 1
+448 val_448 0 1
449 NULL 1 1
-449 val_449 3 1
+449 val_449 0 1
452 NULL 1 1
-452 val_452 3 1
+452 val_452 0 1
453 NULL 1 1
-453 val_453 3 1
+453 val_453 0 1
454 NULL 1 3
-454 val_454 3 3
+454 val_454 0 3
455 NULL 1 1
-455 val_455 3 1
+455 val_455 0 1
457 NULL 1 1
-457 val_457 3 1
+457 val_457 0 1
458 NULL 1 2
-458 val_458 3 2
+458 val_458 0 2
459 NULL 1 2
-459 val_459 3 2
+459 val_459 0 2
460 NULL 1 1
-460 val_460 3 1
+460 val_460 0 1
462 NULL 1 2
-462 val_462 3 2
+462 val_462 0 2
463 NULL 1 2
-463 val_463 3 2
+463 val_463 0 2
466 NULL 1 3
-466 val_466 3 3
+466 val_466 0 3
467 NULL 1 1
-467 val_467 3 1
+467 val_467 0 1
468 NULL 1 4
-468 val_468 3 4
+468 val_468 0 4
469 NULL 1 5
-469 val_469 3 5
+469 val_469 0 5
47 NULL 1 1
-47 val_47 3 1
+47 val_47 0 1
470 NULL 1 1
-470 val_470 3 1
+470 val_470 0 1
472 NULL 1 1
-472 val_472 3 1
+472 val_472 0 1
475 NULL 1 1
-475 val_475 3 1
+475 val_475 0 1
477 NULL 1 1
-477 val_477 3 1
+477 val_477 0 1
478 NULL 1 2
-478 val_478 3 2
+478 val_478 0 2
479 NULL 1 1
-479 val_479 3 1
+479 val_479 0 1
480 NULL 1 3
-480 val_480 3 3
+480 val_480 0 3
481 NULL 1 1
-481 val_481 3 1
+481 val_481 0 1
482 NULL 1 1
-482 val_482 3 1
+482 val_482 0 1
483 NULL 1 1
-483 val_483 3 1
+483 val_483 0 1
484 NULL 1 1
-484 val_484 3 1
+484 val_484 0 1
485 NULL 1 1
-485 val_485 3 1
+485 val_485 0 1
487 NULL 1 1
-487 val_487 3 1
+487 val_487 0 1
489 NULL 1 4
-489 val_489 3 4
+489 val_489 0 4
490 NULL 1 1
-490 val_490 3 1
+490 val_490 0 1
491 NULL 1 1
-491 val_491 3 1
+491 val_491 0 1
492 NULL 1 2
-492 val_492 3 2
+492 val_492 0 2
493 NULL 1 1
-493 val_493 3 1
+493 val_493 0 1
494 NULL 1 1
-494 val_494 3 1
+494 val_494 0 1
495 NULL 1 1
-495 val_495 3 1
+495 val_495 0 1
496 NULL 1 1
-496 val_496 3 1
+496 val_496 0 1
497 NULL 1 1
-497 val_497 3 1
+497 val_497 0 1
498 NULL 1 3
-498 val_498 3 3
+498 val_498 0 3
5 NULL 1 3
-5 val_5 3 3
+5 val_5 0 3
51 NULL 1 2
-51 val_51 3 2
+51 val_51 0 2
53 NULL 1 1
-53 val_53 3 1
+53 val_53 0 1
54 NULL 1 1
-54 val_54 3 1
+54 val_54 0 1
57 NULL 1 1
-57 val_57 3 1
+57 val_57 0 1
58 NULL 1 2
-58 val_58 3 2
+58 val_58 0 2
64 NULL 1 1
-64 val_64 3 1
+64 val_64 0 1
65 NULL 1 1
-65 val_65 3 1
+65 val_65 0 1
66 NULL 1 1
-66 val_66 3 1
+66 val_66 0 1
67 NULL 1 2
-67 val_67 3 2
+67 val_67 0 2
69 NULL 1 1
-69 val_69 3 1
+69 val_69 0 1
70 NULL 1 3
-70 val_70 3 3
+70 val_70 0 3
72 NULL 1 2
-72 val_72 3 2
+72 val_72 0 2
74 NULL 1 1
-74 val_74 3 1
+74 val_74 0 1
76 NULL 1 2
-76 val_76 3 2
+76 val_76 0 2
77 NULL 1 1
-77 val_77 3 1
+77 val_77 0 1
78 NULL 1 1
-78 val_78 3 1
+78 val_78 0 1
8 NULL 1 1
-8 val_8 3 1
+8 val_8 0 1
80 NULL 1 1
-80 val_80 3 1
+80 val_80 0 1
82 NULL 1 1
-82 val_82 3 1
+82 val_82 0 1
83 NULL 1 2
-83 val_83 3 2
+83 val_83 0 2
84 NULL 1 2
-84 val_84 3 2
+84 val_84 0 2
85 NULL 1 1
-85 val_85 3 1
+85 val_85 0 1
86 NULL 1 1
-86 val_86 3 1
+86 val_86 0 1
87 NULL 1 1
-87 val_87 3 1
+87 val_87 0 1
9 NULL 1 1
-9 val_9 3 1
+9 val_9 0 1
90 NULL 1 3
-90 val_90 3 3
+90 val_90 0 3
92 NULL 1 1
-92 val_92 3 1
+92 val_92 0 1
95 NULL 1 2
-95 val_95 3 2
+95 val_95 0 2
96 NULL 1 1
-96 val_96 3 1
+96 val_96 0 1
97 NULL 1 2
-97 val_97 3 2
+97 val_97 0 2
98 NULL 1 2
-98 val_98 3 2
+98 val_98 0 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/19004fe8/ql/src/test/results/clientpositive/llap/cte_1.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/cte_1.q.out b/ql/src/test/results/clientpositive/llap/cte_1.q.out
index 1e6a438..dbc9c91 100644
--- a/ql/src/test/results/clientpositive/llap/cte_1.q.out
+++ b/ql/src/test/results/clientpositive/llap/cte_1.q.out
@@ -670,9 +670,9 @@ POSTHOOK: query: with q1 as (select * from alltypesorc)
POSTHOOK: type: QUERY
POSTHOOK: Input: default@alltypesorc
#### A masked pattern was here ####
-NULL NULL 810.5504687159363
NULL NULL 2735.0
NULL NULL 2735.0
+NULL NULL 810.5504687159363
NULL 2x14G717LqcPA7Ic5 NULL
NULL 3Ke6A1U847tV73 NULL
NULL 45ja5suO NULL
@@ -6827,8 +6827,8 @@ NULL y605nF0K3mMoM75j NULL
762 BLoMwUJ51ns6pd NULL
762 a10E76jX35YwquKCTA NULL
762 q5y2Vy1 NULL
-6981 NULL 69.66666666666667
6981 NULL NULL
+6981 NULL 69.66666666666667
6981 1FNNhmiFLGw425NA13g -75.0
6981 4KhrrQ0nJ7bMNTvhSCA NULL
6981 K630vaVf NULL
@@ -12916,9 +12916,9 @@ POSTHOOK: query: with q1 as (select * from alltypesorc)
POSTHOOK: type: QUERY
POSTHOOK: Input: default@alltypesorc
#### A masked pattern was here ####
-NULL NULL 810.5504687159363
NULL NULL 2735.0
NULL NULL 2735.0
+NULL NULL 810.5504687159363
NULL 2x14G717LqcPA7Ic5 NULL
NULL 3Ke6A1U847tV73 NULL
NULL 45ja5suO NULL
@@ -19073,8 +19073,8 @@ NULL y605nF0K3mMoM75j NULL
762 BLoMwUJ51ns6pd NULL
762 a10E76jX35YwquKCTA NULL
762 q5y2Vy1 NULL
-6981 NULL 69.66666666666667
6981 NULL NULL
+6981 NULL 69.66666666666667
6981 1FNNhmiFLGw425NA13g -75.0
6981 4KhrrQ0nJ7bMNTvhSCA NULL
6981 K630vaVf NULL
http://git-wip-us.apache.org/repos/asf/hive/blob/19004fe8/ql/src/test/results/clientpositive/llap/groupby_grouping_id2.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/groupby_grouping_id2.q.out b/ql/src/test/results/clientpositive/llap/groupby_grouping_id2.q.out
index 9c85852..be5db9c 100644
--- a/ql/src/test/results/clientpositive/llap/groupby_grouping_id2.q.out
+++ b/ql/src/test/results/clientpositive/llap/groupby_grouping_id2.q.out
@@ -22,17 +22,17 @@ POSTHOOK: query: SELECT key, value, GROUPING__ID, count(*) from T1 GROUP BY key,
POSTHOOK: type: QUERY
POSTHOOK: Input: default@t1
#### A masked pattern was here ####
-1 1 3 1
+1 1 0 1
+1 NULL 0 1
1 NULL 1 2
-1 NULL 3 1
-2 2 3 1
+2 2 0 1
2 NULL 1 1
-3 3 3 1
+3 3 0 1
+3 NULL 0 1
3 NULL 1 2
-3 NULL 3 1
-4 5 3 1
+4 5 0 1
4 NULL 1 1
-NULL NULL 0 6
+NULL NULL 3 6
PREHOOK: query: SELECT key, value, GROUPING__ID, count(*) from T1 GROUP BY ROLLUP (key, value)
PREHOOK: type: QUERY
PREHOOK: Input: default@t1
@@ -41,17 +41,17 @@ POSTHOOK: query: SELECT key, value, GROUPING__ID, count(*) from T1 GROUP BY ROLL
POSTHOOK: type: QUERY
POSTHOOK: Input: default@t1
#### A masked pattern was here ####
-1 1 3 1
+1 1 0 1
+1 NULL 0 1
1 NULL 1 2
-1 NULL 3 1
-2 2 3 1
+2 2 0 1
2 NULL 1 1
-3 3 3 1
+3 3 0 1
+3 NULL 0 1
3 NULL 1 2
-3 NULL 3 1
-4 5 3 1
+4 5 0 1
4 NULL 1 1
-NULL NULL 0 6
+NULL NULL 3 6
PREHOOK: query: SELECT GROUPING__ID, count(*)
FROM
(
@@ -70,9 +70,9 @@ GROUP BY GROUPING__ID
POSTHOOK: type: QUERY
POSTHOOK: Input: default@t1
#### A masked pattern was here ####
-0 1
+0 6
1 4
-3 6
+3 1
PREHOOK: query: SELECT GROUPING__ID, count(*)
FROM
(
@@ -91,9 +91,9 @@ GROUP BY GROUPING__ID
POSTHOOK: type: QUERY
POSTHOOK: Input: default@t1
#### A masked pattern was here ####
-0 1
+0 6
1 4
-3 6
+3 1
PREHOOK: query: SELECT t1.GROUPING__ID, t2.GROUPING__ID FROM (SELECT GROUPING__ID FROM T1 GROUP BY key,value WITH ROLLUP) t1
JOIN
(SELECT GROUPING__ID FROM T1 GROUP BY key, value WITH ROLLUP) t2
@@ -109,6 +109,41 @@ POSTHOOK: type: QUERY
POSTHOOK: Input: default@t1
#### A masked pattern was here ####
0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
1 1
1 1
1 1
@@ -126,41 +161,6 @@ POSTHOOK: Input: default@t1
1 1
1 1
3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
PREHOOK: query: SELECT t1.GROUPING__ID, t2.GROUPING__ID FROM (SELECT GROUPING__ID FROM T1 GROUP BY ROLLUP(key,value)) t1
JOIN
(SELECT GROUPING__ID FROM T1 GROUP BY ROLLUP(key, value)) t2
@@ -176,6 +176,41 @@ POSTHOOK: type: QUERY
POSTHOOK: Input: default@t1
#### A masked pattern was here ####
0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
1 1
1 1
1 1
@@ -193,41 +228,6 @@ POSTHOOK: Input: default@t1
1 1
1 1
3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
PREHOOK: query: SELECT key, value, GROUPING__ID, count(*) from T1 GROUP BY key, value WITH ROLLUP
PREHOOK: type: QUERY
PREHOOK: Input: default@t1
@@ -236,17 +236,17 @@ POSTHOOK: query: SELECT key, value, GROUPING__ID, count(*) from T1 GROUP BY key,
POSTHOOK: type: QUERY
POSTHOOK: Input: default@t1
#### A masked pattern was here ####
-1 1 3 1
+1 1 0 1
+1 NULL 0 1
1 NULL 1 2
-1 NULL 3 1
-2 2 3 1
+2 2 0 1
2 NULL 1 1
-3 3 3 1
+3 3 0 1
+3 NULL 0 1
3 NULL 1 2
-3 NULL 3 1
-4 5 3 1
+4 5 0 1
4 NULL 1 1
-NULL NULL 0 6
+NULL NULL 3 6
PREHOOK: query: SELECT GROUPING__ID, count(*)
FROM
(
@@ -265,9 +265,9 @@ GROUP BY GROUPING__ID
POSTHOOK: type: QUERY
POSTHOOK: Input: default@t1
#### A masked pattern was here ####
-0 1
+0 6
1 4
-3 6
+3 1
PREHOOK: query: SELECT t1.GROUPING__ID, t2.GROUPING__ID FROM (SELECT GROUPING__ID FROM T1 GROUP BY key,value WITH ROLLUP) t1
JOIN
(SELECT GROUPING__ID FROM T1 GROUP BY key, value WITH ROLLUP) t2
@@ -283,6 +283,41 @@ POSTHOOK: type: QUERY
POSTHOOK: Input: default@t1
#### A masked pattern was here ####
0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
1 1
1 1
1 1
@@ -300,38 +335,3 @@ POSTHOOK: Input: default@t1
1 1
1 1
3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
http://git-wip-us.apache.org/repos/asf/hive/blob/19004fe8/ql/src/test/results/clientpositive/llap/multi_count_distinct_null.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/multi_count_distinct_null.q.out b/ql/src/test/results/clientpositive/llap/multi_count_distinct_null.q.out
index 0cbb9de..ad74867 100644
--- a/ql/src/test/results/clientpositive/llap/multi_count_distinct_null.q.out
+++ b/ql/src/test/results/clientpositive/llap/multi_count_distinct_null.q.out
@@ -66,7 +66,7 @@ STAGE PLANS:
outputColumnNames: _col0, _col1, _col2, _col3
Statistics: Num rows: 18 Data size: 99 Basic stats: COMPLETE Column stats: NONE
Select Operator
- expressions: CASE WHEN (((_col3 = 1) and _col0 is not null)) THEN (1) ELSE (null) END (type: int), CASE WHEN (((_col3 = 2) and _col1 is not null)) THEN (1) ELSE (null) END (type: int), CASE WHEN (((_col3 = 4) and _col2 is not null)) THEN (1) ELSE (null) END (type: int)
+ expressions: CASE WHEN (((_col3 = 3) and _col0 is not null)) THEN (1) ELSE (null) END (type: int), CASE WHEN (((_col3 = 5) and _col1 is not null)) THEN (1) ELSE (null) END (type: int), CASE WHEN (((_col3 = 6) and _col2 is not null)) THEN (1) ELSE (null) END (type: int)
outputColumnNames: _col0, _col1, _col2
Statistics: Num rows: 18 Data size: 99 Basic stats: COMPLETE Column stats: NONE
Group By Operator
@@ -207,7 +207,7 @@ STAGE PLANS:
outputColumnNames: _col0, _col1, _col2, _col3
Statistics: Num rows: 30 Data size: 165 Basic stats: COMPLETE Column stats: NONE
Select Operator
- expressions: CASE WHEN (((_col3 = 1) and _col0 is not null)) THEN (1) ELSE (null) END (type: int), CASE WHEN (((_col3 = 2) and _col1 is not null)) THEN (1) ELSE (null) END (type: int), CASE WHEN (((_col3 = 4) and _col2 is not null)) THEN (1) ELSE (null) END (type: int), CASE WHEN ((_col3 = 6)) THEN (1) ELSE (null) END (type: int), CASE WHEN ((_col3 = 7)) THEN (1) ELSE (null) END (type: int)
+ expressions: CASE WHEN (((_col3 = 3) and _col0 is not null)) THEN (1) ELSE (null) END (type: int), CASE WHEN (((_col3 = 5) and _col1 is not null)) THEN (1) ELSE (null) END (type: int), CASE WHEN (((_col3 = 6) and _col2 is not null)) THEN (1) ELSE (null) END (type: int), CASE WHEN ((_col3 = 4)) THEN (1) ELSE (null) END (type: int), CASE WHEN ((_col3 = 0)) THEN (1) ELSE (null) END (type: int)
outputColumnNames: _col0, _col1, _col2, _col3, _col4
Statistics: Num rows: 30 Data size: 165 Basic stats: COMPLETE Column stats: NONE
Group By Operator
@@ -257,9 +257,9 @@ POSTHOOK: Input: default@employee
#### A masked pattern was here ####
2 4 2 3 9 9 10
PREHOOK: query: select
-count(case when i=1 and department_id is not null then 1 else null end) as c0,
-count(case when i=2 and gender is not null then 1 else null end) as c1,
-count(case when i=4 and education_level is not null then 1 else null end) as c2 from
+count(case when i=3 and department_id is not null then 1 else null end) as c0,
+count(case when i=5 and gender is not null then 1 else null end) as c1,
+count(case when i=6 and education_level is not null then 1 else null end) as c2 from
(select grouping__id as i, department_id, gender,
education_level from employee group by department_id, gender, education_level grouping sets
(department_id, gender, education_level))subq
@@ -267,9 +267,9 @@ PREHOOK: type: QUERY
PREHOOK: Input: default@employee
#### A masked pattern was here ####
POSTHOOK: query: select
-count(case when i=1 and department_id is not null then 1 else null end) as c0,
-count(case when i=2 and gender is not null then 1 else null end) as c1,
-count(case when i=4 and education_level is not null then 1 else null end) as c2 from
+count(case when i=3 and department_id is not null then 1 else null end) as c0,
+count(case when i=5 and gender is not null then 1 else null end) as c1,
+count(case when i=6 and education_level is not null then 1 else null end) as c2 from
(select grouping__id as i, department_id, gender,
education_level from employee group by department_id, gender, education_level grouping sets
(department_id, gender, education_level))subq
@@ -289,24 +289,24 @@ group by department_id, gender, education_level grouping sets
POSTHOOK: type: QUERY
POSTHOOK: Input: default@employee
#### A masked pattern was here ####
-1 NULL NULL NULL
2 NULL NULL NULL
-4 NULL NULL NULL
+3 NULL NULL NULL
5 NULL NULL NULL
-4 NULL NULL 1
-5 NULL NULL 1
-4 NULL NULL 2
-4 NULL NULL 3
-2 NULL F NULL
-2 NULL M NULL
-1 1 NULL NULL
-5 1 NULL 1
-5 1 NULL 2
-5 1 NULL 3
-1 2 NULL NULL
-5 2 NULL 1
-5 2 NULL 3
-1 3 NULL NULL
-5 3 NULL 2
-1 4 NULL NULL
-5 4 NULL 1
+6 NULL NULL NULL
+2 NULL NULL 1
+6 NULL NULL 1
+6 NULL NULL 2
+6 NULL NULL 3
+5 NULL F NULL
+5 NULL M NULL
+3 1 NULL NULL
+2 1 NULL 1
+2 1 NULL 2
+2 1 NULL 3
+3 2 NULL NULL
+2 2 NULL 1
+2 2 NULL 3
+3 3 NULL NULL
+2 3 NULL 2
+3 4 NULL NULL
+2 4 NULL 1
http://git-wip-us.apache.org/repos/asf/hive/blob/19004fe8/ql/src/test/results/clientpositive/llap/vector_grouping_sets.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/vector_grouping_sets.q.out b/ql/src/test/results/clientpositive/llap/vector_grouping_sets.q.out
index 2176917..b15b61c 100644
--- a/ql/src/test/results/clientpositive/llap/vector_grouping_sets.q.out
+++ b/ql/src/test/results/clientpositive/llap/vector_grouping_sets.q.out
@@ -334,13 +334,13 @@ POSTHOOK: query: select s_store_id, GROUPING__ID
POSTHOOK: type: QUERY
POSTHOOK: Input: default@store
#### A masked pattern was here ####
-NULL 0
-AAAAAAAABAAAAAAA 1
-AAAAAAAACAAAAAAA 1
-AAAAAAAAEAAAAAAA 1
-AAAAAAAAHAAAAAAA 1
-AAAAAAAAIAAAAAAA 1
-AAAAAAAAKAAAAAAA 1
+NULL 1
+AAAAAAAABAAAAAAA 0
+AAAAAAAACAAAAAAA 0
+AAAAAAAAEAAAAAAA 0
+AAAAAAAAHAAAAAAA 0
+AAAAAAAAIAAAAAAA 0
+AAAAAAAAKAAAAAAA 0
PREHOOK: query: explain
select s_store_id, GROUPING__ID
from store
http://git-wip-us.apache.org/repos/asf/hive/blob/19004fe8/ql/src/test/results/clientpositive/spark/groupby_cube1.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/spark/groupby_cube1.q.out b/ql/src/test/results/clientpositive/spark/groupby_cube1.q.out
index 56b8c2f..cace096 100644
--- a/ql/src/test/results/clientpositive/spark/groupby_cube1.q.out
+++ b/ql/src/test/results/clientpositive/spark/groupby_cube1.q.out
@@ -242,16 +242,16 @@ POSTHOOK: query: SELECT key, val, GROUPING__ID, count(1) FROM T1 GROUP BY key, v
POSTHOOK: type: QUERY
POSTHOOK: Input: default@t1
#### A masked pattern was here ####
-1 11 3 1
+1 11 0 1
1 NULL 1 1
-2 12 3 1
+2 12 0 1
2 NULL 1 1
-3 13 3 1
+3 13 0 1
3 NULL 1 1
-7 17 3 1
+7 17 0 1
7 NULL 1 1
-8 18 3 1
-8 28 3 1
+8 18 0 1
+8 28 0 1
8 NULL 1 2
NULL 11 2 1
NULL 12 2 1
@@ -259,7 +259,7 @@ NULL 13 2 1
NULL 17 2 1
NULL 18 2 1
NULL 28 2 1
-NULL NULL 0 6
+NULL NULL 3 6
PREHOOK: query: EXPLAIN
SELECT key, count(distinct val) FROM T1 GROUP BY key with cube
PREHOOK: type: QUERY
http://git-wip-us.apache.org/repos/asf/hive/blob/19004fe8/ql/src/test/results/clientpositive/spark/groupby_grouping_id2.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/spark/groupby_grouping_id2.q.out b/ql/src/test/results/clientpositive/spark/groupby_grouping_id2.q.out
index 9c85852..be5db9c 100644
--- a/ql/src/test/results/clientpositive/spark/groupby_grouping_id2.q.out
+++ b/ql/src/test/results/clientpositive/spark/groupby_grouping_id2.q.out
@@ -22,17 +22,17 @@ POSTHOOK: query: SELECT key, value, GROUPING__ID, count(*) from T1 GROUP BY key,
POSTHOOK: type: QUERY
POSTHOOK: Input: default@t1
#### A masked pattern was here ####
-1 1 3 1
+1 1 0 1
+1 NULL 0 1
1 NULL 1 2
-1 NULL 3 1
-2 2 3 1
+2 2 0 1
2 NULL 1 1
-3 3 3 1
+3 3 0 1
+3 NULL 0 1
3 NULL 1 2
-3 NULL 3 1
-4 5 3 1
+4 5 0 1
4 NULL 1 1
-NULL NULL 0 6
+NULL NULL 3 6
PREHOOK: query: SELECT key, value, GROUPING__ID, count(*) from T1 GROUP BY ROLLUP (key, value)
PREHOOK: type: QUERY
PREHOOK: Input: default@t1
@@ -41,17 +41,17 @@ POSTHOOK: query: SELECT key, value, GROUPING__ID, count(*) from T1 GROUP BY ROLL
POSTHOOK: type: QUERY
POSTHOOK: Input: default@t1
#### A masked pattern was here ####
-1 1 3 1
+1 1 0 1
+1 NULL 0 1
1 NULL 1 2
-1 NULL 3 1
-2 2 3 1
+2 2 0 1
2 NULL 1 1
-3 3 3 1
+3 3 0 1
+3 NULL 0 1
3 NULL 1 2
-3 NULL 3 1
-4 5 3 1
+4 5 0 1
4 NULL 1 1
-NULL NULL 0 6
+NULL NULL 3 6
PREHOOK: query: SELECT GROUPING__ID, count(*)
FROM
(
@@ -70,9 +70,9 @@ GROUP BY GROUPING__ID
POSTHOOK: type: QUERY
POSTHOOK: Input: default@t1
#### A masked pattern was here ####
-0 1
+0 6
1 4
-3 6
+3 1
PREHOOK: query: SELECT GROUPING__ID, count(*)
FROM
(
@@ -91,9 +91,9 @@ GROUP BY GROUPING__ID
POSTHOOK: type: QUERY
POSTHOOK: Input: default@t1
#### A masked pattern was here ####
-0 1
+0 6
1 4
-3 6
+3 1
PREHOOK: query: SELECT t1.GROUPING__ID, t2.GROUPING__ID FROM (SELECT GROUPING__ID FROM T1 GROUP BY key,value WITH ROLLUP) t1
JOIN
(SELECT GROUPING__ID FROM T1 GROUP BY key, value WITH ROLLUP) t2
@@ -109,6 +109,41 @@ POSTHOOK: type: QUERY
POSTHOOK: Input: default@t1
#### A masked pattern was here ####
0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
1 1
1 1
1 1
@@ -126,41 +161,6 @@ POSTHOOK: Input: default@t1
1 1
1 1
3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
PREHOOK: query: SELECT t1.GROUPING__ID, t2.GROUPING__ID FROM (SELECT GROUPING__ID FROM T1 GROUP BY ROLLUP(key,value)) t1
JOIN
(SELECT GROUPING__ID FROM T1 GROUP BY ROLLUP(key, value)) t2
@@ -176,6 +176,41 @@ POSTHOOK: type: QUERY
POSTHOOK: Input: default@t1
#### A masked pattern was here ####
0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
1 1
1 1
1 1
@@ -193,41 +228,6 @@ POSTHOOK: Input: default@t1
1 1
1 1
3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
PREHOOK: query: SELECT key, value, GROUPING__ID, count(*) from T1 GROUP BY key, value WITH ROLLUP
PREHOOK: type: QUERY
PREHOOK: Input: default@t1
@@ -236,17 +236,17 @@ POSTHOOK: query: SELECT key, value, GROUPING__ID, count(*) from T1 GROUP BY key,
POSTHOOK: type: QUERY
POSTHOOK: Input: default@t1
#### A masked pattern was here ####
-1 1 3 1
+1 1 0 1
+1 NULL 0 1
1 NULL 1 2
-1 NULL 3 1
-2 2 3 1
+2 2 0 1
2 NULL 1 1
-3 3 3 1
+3 3 0 1
+3 NULL 0 1
3 NULL 1 2
-3 NULL 3 1
-4 5 3 1
+4 5 0 1
4 NULL 1 1
-NULL NULL 0 6
+NULL NULL 3 6
PREHOOK: query: SELECT GROUPING__ID, count(*)
FROM
(
@@ -265,9 +265,9 @@ GROUP BY GROUPING__ID
POSTHOOK: type: QUERY
POSTHOOK: Input: default@t1
#### A masked pattern was here ####
-0 1
+0 6
1 4
-3 6
+3 1
PREHOOK: query: SELECT t1.GROUPING__ID, t2.GROUPING__ID FROM (SELECT GROUPING__ID FROM T1 GROUP BY key,value WITH ROLLUP) t1
JOIN
(SELECT GROUPING__ID FROM T1 GROUP BY key, value WITH ROLLUP) t2
@@ -283,6 +283,41 @@ POSTHOOK: type: QUERY
POSTHOOK: Input: default@t1
#### A masked pattern was here ####
0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
+0 0
1 1
1 1
1 1
@@ -300,38 +335,3 @@ POSTHOOK: Input: default@t1
1 1
1 1
3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
-3 3
http://git-wip-us.apache.org/repos/asf/hive/blob/19004fe8/ql/src/test/results/clientpositive/tez/multi_count_distinct.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/tez/multi_count_distinct.q.out b/ql/src/test/results/clientpositive/tez/multi_count_distinct.q.out
index ef3fcab..82c09fa 100644
--- a/ql/src/test/results/clientpositive/tez/multi_count_distinct.q.out
+++ b/ql/src/test/results/clientpositive/tez/multi_count_distinct.q.out
@@ -146,15 +146,15 @@ POSTHOOK: type: QUERY
POSTHOOK: Input: default@employee
#### A masked pattern was here ####
2 4 2 3 7 7 7
-PREHOOK: query: select count(case i when 1 then 1 else null end) as c0, count(case i when 2 then 1 else null end) as c1,
-count(case i when 4 then 1 else null end) as c2 from (select grouping__id as i, department_id, gender,
+PREHOOK: query: select count(case i when 3 then 1 else null end) as c0, count(case i when 5 then 1 else null end) as c1,
+count(case i when 6 then 1 else null end) as c2 from (select grouping__id as i, department_id, gender,
education_level from employee group by department_id, gender, education_level grouping sets
(department_id, gender, education_level))subq
PREHOOK: type: QUERY
PREHOOK: Input: default@employee
#### A masked pattern was here ####
-POSTHOOK: query: select count(case i when 1 then 1 else null end) as c0, count(case i when 2 then 1 else null end) as c1,
-count(case i when 4 then 1 else null end) as c2 from (select grouping__id as i, department_id, gender,
+POSTHOOK: query: select count(case i when 3 then 1 else null end) as c0, count(case i when 5 then 1 else null end) as c1,
+count(case i when 6 then 1 else null end) as c2 from (select grouping__id as i, department_id, gender,
education_level from employee group by department_id, gender, education_level grouping sets
(department_id, gender, education_level))subq
POSTHOOK: type: QUERY
@@ -173,19 +173,19 @@ group by department_id, gender, education_level grouping sets
POSTHOOK: type: QUERY
POSTHOOK: Input: default@employee
#### A masked pattern was here ####
-4 NULL NULL 1
-4 NULL NULL 2
-4 NULL NULL 3
-2 NULL F NULL
-2 NULL M NULL
-1 1 NULL NULL
-5 1 NULL 1
-5 1 NULL 2
-5 1 NULL 3
-1 2 NULL NULL
-5 2 NULL 1
-5 2 NULL 3
-1 3 NULL NULL
-5 3 NULL 2
-1 4 NULL NULL
-5 4 NULL 1
+6 NULL NULL 1
+6 NULL NULL 2
+6 NULL NULL 3
+5 NULL F NULL
+5 NULL M NULL
+3 1 NULL NULL
+2 1 NULL 1
+2 1 NULL 2
+2 1 NULL 3
+3 2 NULL NULL
+2 2 NULL 1
+2 2 NULL 3
+3 3 NULL NULL
+2 3 NULL 2
+3 4 NULL NULL
+2 4 NULL 1
http://git-wip-us.apache.org/repos/asf/hive/blob/19004fe8/ql/src/test/results/clientpositive/vector_grouping_sets.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/vector_grouping_sets.q.out b/ql/src/test/results/clientpositive/vector_grouping_sets.q.out
index df4631e..bd95aa4 100644
--- a/ql/src/test/results/clientpositive/vector_grouping_sets.q.out
+++ b/ql/src/test/results/clientpositive/vector_grouping_sets.q.out
@@ -305,13 +305,13 @@ POSTHOOK: query: select s_store_id, GROUPING__ID
POSTHOOK: type: QUERY
POSTHOOK: Input: default@store
#### A masked pattern was here ####
-NULL 0
-AAAAAAAABAAAAAAA 1
-AAAAAAAACAAAAAAA 1
-AAAAAAAAEAAAAAAA 1
-AAAAAAAAHAAAAAAA 1
-AAAAAAAAIAAAAAAA 1
-AAAAAAAAKAAAAAAA 1
+NULL 1
+AAAAAAAABAAAAAAA 0
+AAAAAAAACAAAAAAA 0
+AAAAAAAAEAAAAAAA 0
+AAAAAAAAHAAAAAAA 0
+AAAAAAAAIAAAAAAA 0
+AAAAAAAAKAAAAAAA 0
PREHOOK: query: explain
select s_store_id, GROUPING__ID
from store