diff --git ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java index 2ffc130..6a43385 100644 --- ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java +++ ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java @@ -277,8 +277,8 @@ "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 " + diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java index be561ce..6d6c608 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java @@ -63,9 +63,10 @@ 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 @@ */ 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 @@ protected void initializeOp(Configuration hconf) throws HiveException { 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 void process(Object row, int tag) throws HiveException { 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]; } diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveExpandDistinctAggregatesRule.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveExpandDistinctAggregatesRule.java index 82624fc..9825e7e 100644 --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveExpandDistinctAggregatesRule.java +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveExpandDistinctAggregatesRule.java @@ -61,6 +61,7 @@ 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 @@ private RelNode convert(Aggregate aggregate, List> argList, List list, List sourceOfForCountDistinct) { - long ind = 0; + private int getGroupingIdValue(List list, List 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 RexNode apply(RelDataTypeField input) { for (List 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, diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java index db8d46e..bf0a11b 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java +++ ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java @@ -2621,7 +2621,7 @@ private RelNode genGBRelNode(List gbExprs, List aggInfoLs Set setTransformedGroupSets = new HashSet(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(setTransformedGroupSets); @@ -2656,16 +2656,19 @@ private RelNode genGBRelNode(List gbExprs, List aggInfoLs 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); } diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index 0872e53..ee9101b 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -3918,7 +3918,7 @@ private Operator genScriptPlan(ASTNode trfm, QB qb, Operator input) 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 @@ private Operator genScriptPlan(ASTNode trfm, QB qb, Operator input) 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 bitmaps) { + private boolean checkForEmptyGroupingSets(List bitmaps, int groupingIdAllSet) { boolean ret = true; for (int mask : bitmaps) { - ret &= mask == 0; + ret &= mask == groupingIdAllSet; } return ret; } @@ -3951,6 +3951,10 @@ public static int setBit(int bitmap, int bitIdx) { 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 diff --git ql/src/test/queries/clientpositive/multi_count_distinct.q ql/src/test/queries/clientpositive/multi_count_distinct.q index 855cb64..fb0c5fe 100644 --- ql/src/test/queries/clientpositive/multi_count_distinct.q +++ 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; diff --git ql/src/test/queries/clientpositive/multi_count_distinct_null.q ql/src/test/queries/clientpositive/multi_count_distinct_null.q index 442d855..3e16386 100644 --- ql/src/test/queries/clientpositive/multi_count_distinct_null.q +++ 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; diff --git ql/src/test/results/clientnegative/groupby_grouping_sets1.q.out ql/src/test/results/clientnegative/groupby_grouping_sets1.q.out index 8290d4c..12d0614 100644 --- ql/src/test/results/clientnegative/groupby_grouping_sets1.q.out +++ 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 diff --git ql/src/test/results/clientnegative/groupby_grouping_sets2.q.out ql/src/test/results/clientnegative/groupby_grouping_sets2.q.out index 8290d4c..12d0614 100644 --- ql/src/test/results/clientnegative/groupby_grouping_sets2.q.out +++ 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 diff --git ql/src/test/results/clientpositive/cte_1.q.out ql/src/test/results/clientpositive/cte_1.q.out index d13ad42..9374a32 100644 --- ql/src/test/results/clientpositive/cte_1.q.out +++ 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 diff --git ql/src/test/results/clientpositive/groupby_cube1.q.out ql/src/test/results/clientpositive/groupby_cube1.q.out index 0486b68..fd70a2c 100644 --- ql/src/test/results/clientpositive/groupby_cube1.q.out +++ 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 diff --git ql/src/test/results/clientpositive/groupby_grouping_id1.q.out ql/src/test/results/clientpositive/groupby_grouping_id1.q.out index 9ef7615..c2a0393 100644 --- ql/src/test/results/clientpositive/groupby_grouping_id1.q.out +++ 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 diff --git ql/src/test/results/clientpositive/groupby_grouping_sets_grouping.q.out ql/src/test/results/clientpositive/groupby_grouping_sets_grouping.q.out index 6917dba..7faf278 100644 --- ql/src/test/results/clientpositive/groupby_grouping_sets_grouping.q.out +++ 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 diff --git ql/src/test/results/clientpositive/groupby_grouping_window.q.out ql/src/test/results/clientpositive/groupby_grouping_window.q.out index 202fad0..4fc36ed 100644 --- ql/src/test/results/clientpositive/groupby_grouping_window.q.out +++ 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 diff --git ql/src/test/results/clientpositive/infer_bucket_sort_grouping_operators.q.out ql/src/test/results/clientpositive/infer_bucket_sort_grouping_operators.q.out index d740dea..40bdc52 100644 --- ql/src/test/results/clientpositive/infer_bucket_sort_grouping_operators.q.out +++ 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 diff --git ql/src/test/results/clientpositive/llap/cte_1.q.out ql/src/test/results/clientpositive/llap/cte_1.q.out index 1e6a438..dbc9c91 100644 --- ql/src/test/results/clientpositive/llap/cte_1.q.out +++ 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 diff --git ql/src/test/results/clientpositive/llap/groupby_grouping_id2.q.out ql/src/test/results/clientpositive/llap/groupby_grouping_id2.q.out index 9c85852..be5db9c 100644 --- ql/src/test/results/clientpositive/llap/groupby_grouping_id2.q.out +++ 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 diff --git ql/src/test/results/clientpositive/llap/multi_count_distinct_null.q.out ql/src/test/results/clientpositive/llap/multi_count_distinct_null.q.out index 0cbb9de..ad74867 100644 --- ql/src/test/results/clientpositive/llap/multi_count_distinct_null.q.out +++ 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 diff --git ql/src/test/results/clientpositive/llap/vector_grouping_sets.q.out ql/src/test/results/clientpositive/llap/vector_grouping_sets.q.out index 2176917..b15b61c 100644 --- ql/src/test/results/clientpositive/llap/vector_grouping_sets.q.out +++ 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 diff --git ql/src/test/results/clientpositive/spark/groupby_cube1.q.out ql/src/test/results/clientpositive/spark/groupby_cube1.q.out index 56b8c2f..cace096 100644 --- ql/src/test/results/clientpositive/spark/groupby_cube1.q.out +++ 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 diff --git ql/src/test/results/clientpositive/spark/groupby_grouping_id2.q.out ql/src/test/results/clientpositive/spark/groupby_grouping_id2.q.out index 9c85852..be5db9c 100644 --- ql/src/test/results/clientpositive/spark/groupby_grouping_id2.q.out +++ 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 diff --git ql/src/test/results/clientpositive/tez/multi_count_distinct.q.out ql/src/test/results/clientpositive/tez/multi_count_distinct.q.out index ef3fcab..82c09fa 100644 --- ql/src/test/results/clientpositive/tez/multi_count_distinct.q.out +++ 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 diff --git ql/src/test/results/clientpositive/vector_grouping_sets.q.out ql/src/test/results/clientpositive/vector_grouping_sets.q.out index df4631e..bd95aa4 100644 --- ql/src/test/results/clientpositive/vector_grouping_sets.q.out +++ 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