diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcCtx.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcCtx.java index 1814550..bc52f7b 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcCtx.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcCtx.java @@ -20,9 +20,11 @@ import java.io.Serializable; +import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; +import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; @@ -30,10 +32,16 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.apache.hadoop.hive.ql.exec.ColumnInfo; +import org.apache.hadoop.hive.ql.exec.FilterOperator; +import org.apache.hadoop.hive.ql.exec.JoinOperator; +import org.apache.hadoop.hive.ql.exec.LimitOperator; import org.apache.hadoop.hive.ql.exec.Operator; +import org.apache.hadoop.hive.ql.exec.ReduceSinkOperator; import org.apache.hadoop.hive.ql.exec.RowSchema; import org.apache.hadoop.hive.ql.exec.UnionOperator; +import org.apache.hadoop.hive.ql.exec.Utilities; import org.apache.hadoop.hive.ql.lib.NodeProcessorCtx; +import org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc; import org.apache.hadoop.hive.ql.plan.ExprNodeDesc; /** @@ -73,37 +81,6 @@ public ConstantPropagateProcCtx(ConstantPropagateOption option) { } /** - * Resolve a ColumnInfo based on given RowResolver. - * - * @param ci - * @param rr - * @param parentRR - * @return - * @throws SemanticException - */ - private ColumnInfo resolve(ColumnInfo ci, RowSchema rs, RowSchema parentRS) { - // Resolve new ColumnInfo from - String alias = ci.getAlias(); - if (alias == null) { - alias = ci.getInternalName(); - } - String tblAlias = ci.getTabAlias(); - ColumnInfo rci = rs.getColumnInfo(tblAlias, alias); - if (rci == null && rs.getTableNames().size() == 1 && - parentRS.getTableNames().size() == 1) { - rci = rs.getColumnInfo(rs.getTableNames().iterator().next(), - alias); - } - if (rci == null) { - return null; - } - LOG.debug("Resolved " - + ci.getTabAlias() + "." + ci.getAlias() + " as " - + rci.getTabAlias() + "." + rci.getAlias() + " with rs: " + rs); - return rci; - } - - /** * Get propagated constant map from parents. * * Traverse all parents of current operator, if there is propagated constant (determined by @@ -115,8 +92,8 @@ private ColumnInfo resolve(ColumnInfo ci, RowSchema rs, RowSchema parentRS) { * @return map of ColumnInfo to ExprNodeDesc. The values of that map must be either * ExprNodeConstantDesc or ExprNodeNullDesc. */ - public Map getPropagatedConstants( - Operator op) { + public Map getPropagatedConstants(Operator op) { + // this map should map columnInfo to ExprConstantNodeDesc Map constants = new HashMap(); if (op.getSchema() == null) { return constants; @@ -128,82 +105,134 @@ private ColumnInfo resolve(ColumnInfo ci, RowSchema rs, RowSchema parentRS) { return constants; } - if (op instanceof UnionOperator) { - String alias = rs.getSignature().get(0).getTabAlias(); - // find intersection - Map intersection = null; - for (Operator parent : op.getParentOperators()) { - Map unionConst = opToConstantExprs.get(parent); - LOG.debug("Constant of op " + parent.getOperatorId() + " " + unionConst); - if (intersection == null) { - intersection = new HashMap(); - for (Entry e : unionConst.entrySet()) { - ColumnInfo ci = new ColumnInfo(e.getKey()); - ci.setTabAlias(alias); - intersection.put(ci, e.getValue()); + // A previous solution is based on tableAlias and colAlias, which is + // unsafe, esp. when CBO generates derived table names. see HIVE-13602. + // For correctness purpose, we only trust colExpMap. + // We assume that CBO can do the constantPropagation before this function is + // called to help improve the performance. + // UnionOperator, LimitOperator and FilterOperator are special, they should already be + // column-position aligned. + + List> parentsToConstant = new ArrayList<>(); + boolean areAllParentsContainConstant = true; + boolean noParentsContainConstant = true; + for (Operator parent : op.getParentOperators()) { + Map constMap = opToConstantExprs.get(parent); + if (constMap == null) { + LOG.debug("Constant of Op " + parent.getOperatorId() + " is not found"); + areAllParentsContainConstant = false; + } else { + noParentsContainConstant = false; + Map map = new HashMap<>(); + for (Entry entry : constMap.entrySet()) { + map.put(parent.getSchema().getPosition(entry.getKey().getInternalName()), + entry.getValue()); + } + parentsToConstant.add(map); + LOG.debug("Constant of Op " + parent.getOperatorId() + " " + constMap); + } + } + if (noParentsContainConstant) { + return constants; + } + + ArrayList signature = op.getSchema().getSignature(); + if (op instanceof LimitOperator || op instanceof FilterOperator) { + // there should be only one parent. + if (op.getParentOperators().size() == 1) { + Map parentToConstant = parentsToConstant.get(0); + for (int index = 0; index < signature.size(); index++) { + if (parentToConstant.containsKey(index)) { + constants.put(signature.get(index), parentToConstant.get(index)); } - } else { - Iterator> itr = intersection.entrySet().iterator(); - while (itr.hasNext()) { - Entry e = itr.next(); - boolean found = false; - for (Entry f : opToConstantExprs.get(parent).entrySet()) { - if (e.getKey().getInternalName().equals(f.getKey().getInternalName())) { - if (e.getValue().isSame(f.getValue())) { - found = true; - } + } + } + } else if (op instanceof UnionOperator && areAllParentsContainConstant) { + for (int index = 0; index < signature.size(); index++) { + ExprNodeDesc constant = null; + for (Map parentToConstant : parentsToConstant) { + if (!parentToConstant.containsKey(index)) { + // if this parent does not contain a constant at this position, we + // continue to look at other positions. + constant = null; + break; + } else { + if (constant == null) { + constant = parentToConstant.get(index); + } else { + // compare if they are the same constant. + ExprNodeDesc nextConstant = parentToConstant.get(index); + if (!nextConstant.isSame(constant)) { + // they are not the same constant. for example, union all of 1 + // and 2. + constant = null; break; } } - if (!found) { - itr.remove(); - } } } - if (intersection.isEmpty()) { - return intersection; + // we have checked all the parents for the "index" position. + if (constant != null) { + constants.put(signature.get(index), constant); } } - LOG.debug("Propagated union constants:" + intersection); - return intersection; - } - - for (Operator parent : op.getParentOperators()) { - Map c = opToConstantExprs.get(parent); - for (Entry e : c.entrySet()) { - ColumnInfo ci = e.getKey(); - ExprNodeDesc constant = e.getValue(); - boolean resolved = false; - ColumnInfo rci = resolve(ci, rs, parent.getSchema()); - - if (rci != null) { - constants.put(rci, constant); - resolved = true; + } else if (op instanceof JoinOperator) { + JoinOperator joinOp = (JoinOperator) op; + Iterator>> itr = joinOp.getConf().getExprs().entrySet() + .iterator(); + while (itr.hasNext()) { + Entry> e = itr.next(); + int tag = e.getKey(); + Operator parent = op.getParentOperators().get(tag); + List exprs = e.getValue(); + if (exprs == null) { + continue; } - if (!resolved && - op.getColumnExprMap() != null && op.getColumnExprMap().entrySet() != null) { - for (Entry entry : op.getColumnExprMap().entrySet()) { - if (entry.getValue().isSame(constant)) { - ColumnInfo rsColumnInfo = rs.getColumnInfo(entry.getKey()); - if (rsColumnInfo == null) { - continue; + for (ExprNodeDesc expr : exprs) { + // we are only interested in ExprNodeColumnDesc + if (expr instanceof ExprNodeColumnDesc) { + String parentColName = ((ExprNodeColumnDesc) expr).getColumn(); + // find this parentColName in its parent's rs + int parentPos = parent.getSchema().getPosition(parentColName); + if (parentsToConstant.get(tag).containsKey(parentPos)) { + // this position in parent is a constant + // reverse look up colExprMap to find the childColName + if (op.getColumnExprMap() != null && op.getColumnExprMap().entrySet() != null) { + for (Entry entry : op.getColumnExprMap().entrySet()) { + if (entry.getValue().isSame(expr)) { + // now propagate the constant from the parent to the child + constants.put(signature.get(op.getSchema().getPosition(entry.getKey())), + parentsToConstant.get(tag).get(parentPos)); + } + } } - constants.put(rsColumnInfo, constant); - resolved = true; } } } - - if (!resolved) { - LOG.debug("Can't resolve " + ci.getTabAlias() + "." + ci.getAlias() + - "(" + ci.getInternalName() + ") from rs:" + rs); + } + } else { + // there should be only one parent. + if (op.getParentOperators().size() == 1) { + Operator parent = op.getParentOperators().get(0); + if (op.getColumnExprMap() != null && op.getColumnExprMap().entrySet() != null) { + for (Entry entry : op.getColumnExprMap().entrySet()) { + ExprNodeDesc expr = entry.getValue(); + if (expr instanceof ExprNodeColumnDesc) { + String parentColName = ((ExprNodeColumnDesc) expr).getColumn(); + // find this parentColName in its parent's rs + int parentPos = parent.getSchema().getPosition(parentColName); + if (parentsToConstant.get(0).containsKey(parentPos)) { + // this position in parent is a constant + // now propagate the constant from the parent to the child + constants.put(signature.get(op.getSchema().getPosition(entry.getKey())), + parentsToConstant.get(0).get(parentPos)); + } + } + } } } } - - LOG.debug("Offerring constants " + constants.keySet() - + " to operator " + op.toString()); - + LOG.debug("Offerring constants " + constants.keySet() + " to operator " + op.toString()); return constants; } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java index 8c1f34d..22783ea 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java @@ -1096,6 +1096,16 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx ctx, Object.. Map colToConstants = cppCtx.getPropagatedConstants(op); cppCtx.getOpToConstantExprs().put(op, colToConstants); + if (op.getColumnExprMap() != null) { + RowSchema rs = op.getSchema(); + for (ColumnInfo colInfo : rs.getSignature()) { + ExprNodeDesc expr = op.getColumnExprMap().get(colInfo.getInternalName()); + if (expr instanceof ExprNodeConstantDesc) { + colToConstants.put(colInfo, expr); + } + } + } + if (colToConstants.isEmpty()) { return null; } @@ -1133,6 +1143,15 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx ctx, Object.. Operator op = (Operator) nd; Map constants = cppCtx.getPropagatedConstants(op); cppCtx.getOpToConstantExprs().put(op, constants); + if (op.getColumnExprMap() != null) { + RowSchema rs = op.getSchema(); + for (ColumnInfo colInfo : rs.getSignature()) { + ExprNodeDesc expr = op.getColumnExprMap().get(colInfo.getInternalName()); + if (expr instanceof ExprNodeConstantDesc) { + constants.put(colInfo, expr); + } + } + } if (constants.isEmpty()) { return null; } @@ -1296,6 +1315,15 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx ctx, Object.. Map constants = cppCtx.getPropagatedConstants(op); cppCtx.getOpToConstantExprs().put(op, constants); + if (op.getColumnExprMap() != null) { + RowSchema rs = op.getSchema(); + for (ColumnInfo colInfo : rs.getSignature()) { + ExprNodeDesc expr = op.getColumnExprMap().get(colInfo.getInternalName()); + if (expr instanceof ExprNodeConstantDesc) { + constants.put(colInfo, expr); + } + } + } if (constants.isEmpty()) { return null; } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/Optimizer.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/Optimizer.java index 55c71dd..056993c 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/Optimizer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/Optimizer.java @@ -23,6 +23,7 @@ import java.util.Set; import org.apache.hadoop.hive.conf.HiveConf; +import org.apache.hadoop.hive.ql.exec.Operator; import org.apache.hadoop.hive.ql.optimizer.calcite.translator.HiveOpConverterPostProc; import org.apache.hadoop.hive.ql.optimizer.correlation.CorrelationOptimizer; import org.apache.hadoop.hive.ql.optimizer.correlation.ReduceSinkDeDuplication; @@ -243,6 +244,8 @@ public ParseContext optimize() throws SemanticException { t.beginPerfLogging(); pctx = t.transform(pctx); t.endPerfLogging(t.toString()); + System.out.println("After ParseContext Optimizer," + t.toString() + ",\n" + + Operator.toString(pctx.getTopOps().values())); } return pctx; } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SortedDynPartitionOptimizer.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SortedDynPartitionOptimizer.java index adfbb67..010c89e 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SortedDynPartitionOptimizer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SortedDynPartitionOptimizer.java @@ -20,6 +20,7 @@ import java.util.ArrayList; import java.util.Arrays; +import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -413,7 +414,7 @@ private boolean removeRSInsertedByEnforceBucketing(FileSinkOperator fsOp) { public ReduceSinkOperator getReduceSinkOp(List partitionPositions, List sortPositions, List sortOrder, List sortNullOrder, ArrayList allCols, ArrayList bucketColumns, int numBuckets, - Operator parent, AcidUtils.Operation writeType) { + Operator parent, AcidUtils.Operation writeType) throws SemanticException { // Order of KEY columns // 1) Partition columns @@ -518,17 +519,21 @@ public ReduceSinkOperator getReduceSinkOp(List partitionPositions, } } + // map _col0 to KEY._col0, etc + Map nameMapping = new HashMap<>(); ArrayList keyColNames = Lists.newArrayList(); for (ExprNodeDesc keyCol : keyCols) { String keyColName = keyCol.getExprString(); keyColNames.add(keyColName); colExprMap.put(Utilities.ReduceField.KEY + "." +keyColName, keyCol); + nameMapping.put(keyColName, Utilities.ReduceField.KEY + "." + keyColName); } ArrayList valColNames = Lists.newArrayList(); for (ExprNodeDesc valCol : valCols) { - String colName =valCol.getExprString(); + String colName = valCol.getExprString(); valColNames.add(colName); - colExprMap.put(Utilities.ReduceField.VALUE + "." +colName, valCol); + colExprMap.put(Utilities.ReduceField.VALUE + "." + colName, valCol); + nameMapping.put(colName, Utilities.ReduceField.VALUE + "." + colName); } // Create Key/Value TableDesc. When the operator plan is split into MR tasks, @@ -548,8 +553,15 @@ public ReduceSinkOperator getReduceSinkOp(List partitionPositions, valueTable, writeType); rsConf.setBucketCols(bucketColumns); rsConf.setNumBuckets(numBuckets); + + ArrayList signature = new ArrayList<>(); + for (int index = 0; index < parent.getSchema().getSignature().size(); index++) { + ColumnInfo colInfo = new ColumnInfo(parent.getSchema().getSignature().get(index)); + colInfo.setInternalName(nameMapping.get(colInfo.getInternalName())); + signature.add(colInfo); + } ReduceSinkOperator op = (ReduceSinkOperator) OperatorFactory.getAndMakeChild( - rsConf, new RowSchema(parent.getSchema()), parent); + rsConf, new RowSchema(signature), parent); op.setColumnExprMap(colExprMap); return op; } diff --git a/ql/src/test/queries/clientpositive/constant_prop_1.q b/ql/src/test/queries/clientpositive/constant_prop_1.q new file mode 100644 index 0000000..9a0a17c --- /dev/null +++ b/ql/src/test/queries/clientpositive/constant_prop_1.q @@ -0,0 +1,51 @@ +set hive.cbo.enable=false; + + +explain +select 1 as a from src +union all +select 1 as a from src limit 1; + +explain +select a, key, value from +( +select 1 as a from src +union all +select 1 as a from src limit 1 +)sub join src b where value='12345'; + + +explain +select 1 as a from src +union all +select 2 as a from src limit 1; + +explain +select a, key, value from +( +select 1 as a from src +union all +select 2 as a from src limit 1 +)sub join src b where value='12345'; + +explain +select a.key, b.value from src a join src b where a.key = '238' and b.value = '234'; + +explain +select a.key, b.value from src a join src b on a.key=b.key where b.value = '234'; + +create table t ( +a int, +b int, +c int, +d int, +e int +); + +explain +select a2 as a3 from +(select a1 as a2, c1 as c2 from +(select a as a1, b as b1, c as c1 from t where a=1 and b=2 and c=3)sub1)sub2; + + + diff --git a/ql/src/test/queries/clientpositive/constant_prop_2.q b/ql/src/test/queries/clientpositive/constant_prop_2.q new file mode 100644 index 0000000..4bc14a6 --- /dev/null +++ b/ql/src/test/queries/clientpositive/constant_prop_2.q @@ -0,0 +1,9 @@ +set hive.mapred.mode=nonstrict; +set hive.compute.query.using.stats=true; +set hive.stats.autogather=true; + +explain select count('1') from src group by '1'; +select count('1') from src group by '1'; + +explain +analyze table srcpart partition (ds='2008-04-08',hr=11) compute statistics for columns key, value; diff --git a/ql/src/test/results/clientpositive/columnstats_partlvl.q.out b/ql/src/test/results/clientpositive/columnstats_partlvl.q.out index 4edf39a..d42a472 100644 --- a/ql/src/test/results/clientpositive/columnstats_partlvl.q.out +++ b/ql/src/test/results/clientpositive/columnstats_partlvl.q.out @@ -47,26 +47,26 @@ STAGE PLANS: TableScan alias: employee_part Select Operator - expressions: 2000.0 (type: double), employeeid (type: int) - outputColumnNames: employeesalary, employeeid + expressions: employeeid (type: int) + outputColumnNames: employeeid Group By Operator aggregations: compute_stats(employeeid, 16) - keys: employeesalary (type: double) + keys: 2000.0 (type: double) mode: hash outputColumnNames: _col0, _col1 Reduce Output Operator - key expressions: _col0 (type: double) + key expressions: 2000.0 (type: double) sort order: + - Map-reduce partition columns: _col0 (type: double) + Map-reduce partition columns: 2000.0 (type: double) value expressions: _col1 (type: struct) Reduce Operator Tree: Group By Operator aggregations: compute_stats(VALUE._col0) - keys: KEY._col0 (type: double) + keys: 2000.0 (type: double) mode: mergepartial outputColumnNames: _col0, _col1 Select Operator - expressions: _col1 (type: struct), _col0 (type: double) + expressions: _col1 (type: struct), 2000.0 (type: double) outputColumnNames: _col0, _col1 File Output Operator compressed: false @@ -100,18 +100,18 @@ STAGE PLANS: alias: employee_part GatherStats: false Select Operator - expressions: 2000.0 (type: double), employeeid (type: int) - outputColumnNames: employeesalary, employeeid + expressions: employeeid (type: int) + outputColumnNames: employeeid Group By Operator aggregations: compute_stats(employeeid, 16) - keys: employeesalary (type: double) + keys: 2000.0 (type: double) mode: hash outputColumnNames: _col0, _col1 Reduce Output Operator - key expressions: _col0 (type: double) + key expressions: 2000.0 (type: double) null sort order: a sort order: + - Map-reduce partition columns: _col0 (type: double) + Map-reduce partition columns: 2000.0 (type: double) tag: -1 value expressions: _col1 (type: struct) auto parallelism: false @@ -168,11 +168,11 @@ STAGE PLANS: Reduce Operator Tree: Group By Operator aggregations: compute_stats(VALUE._col0) - keys: KEY._col0 (type: double) + keys: 2000.0 (type: double) mode: mergepartial outputColumnNames: _col0, _col1 Select Operator - expressions: _col1 (type: struct), _col0 (type: double) + expressions: _col1 (type: struct), 2000.0 (type: double) outputColumnNames: _col0, _col1 File Output Operator compressed: false @@ -231,26 +231,26 @@ STAGE PLANS: TableScan alias: employee_part Select Operator - expressions: 4000.0 (type: double), employeeid (type: int) - outputColumnNames: employeesalary, employeeid + expressions: employeeid (type: int) + outputColumnNames: employeeid Group By Operator aggregations: compute_stats(employeeid, 16) - keys: employeesalary (type: double) + keys: 4000.0 (type: double) mode: hash outputColumnNames: _col0, _col1 Reduce Output Operator - key expressions: _col0 (type: double) + key expressions: 4000.0 (type: double) sort order: + - Map-reduce partition columns: _col0 (type: double) + Map-reduce partition columns: 4000.0 (type: double) value expressions: _col1 (type: struct) Reduce Operator Tree: Group By Operator aggregations: compute_stats(VALUE._col0) - keys: KEY._col0 (type: double) + keys: 4000.0 (type: double) mode: mergepartial outputColumnNames: _col0, _col1 Select Operator - expressions: _col1 (type: struct), _col0 (type: double) + expressions: _col1 (type: struct), 4000.0 (type: double) outputColumnNames: _col0, _col1 File Output Operator compressed: false @@ -284,18 +284,18 @@ STAGE PLANS: alias: employee_part GatherStats: false Select Operator - expressions: 4000.0 (type: double), employeeid (type: int) - outputColumnNames: employeesalary, employeeid + expressions: employeeid (type: int) + outputColumnNames: employeeid Group By Operator aggregations: compute_stats(employeeid, 16) - keys: employeesalary (type: double) + keys: 4000.0 (type: double) mode: hash outputColumnNames: _col0, _col1 Reduce Output Operator - key expressions: _col0 (type: double) + key expressions: 4000.0 (type: double) null sort order: a sort order: + - Map-reduce partition columns: _col0 (type: double) + Map-reduce partition columns: 4000.0 (type: double) tag: -1 value expressions: _col1 (type: struct) auto parallelism: false @@ -352,11 +352,11 @@ STAGE PLANS: Reduce Operator Tree: Group By Operator aggregations: compute_stats(VALUE._col0) - keys: KEY._col0 (type: double) + keys: 4000.0 (type: double) mode: mergepartial outputColumnNames: _col0, _col1 Select Operator - expressions: _col1 (type: struct), _col0 (type: double) + expressions: _col1 (type: struct), 4000.0 (type: double) outputColumnNames: _col0, _col1 File Output Operator compressed: false @@ -415,26 +415,26 @@ STAGE PLANS: TableScan alias: employee_part Select Operator - expressions: 2000.0 (type: double), employeeid (type: int), employeename (type: string) - outputColumnNames: employeesalary, employeeid, employeename + expressions: employeeid (type: int), employeename (type: string) + outputColumnNames: employeeid, employeename Group By Operator aggregations: compute_stats(employeeid, 16), compute_stats(employeename, 16) - keys: employeesalary (type: double) + keys: 2000.0 (type: double) mode: hash outputColumnNames: _col0, _col1, _col2 Reduce Output Operator - key expressions: _col0 (type: double) + key expressions: 2000.0 (type: double) sort order: + - Map-reduce partition columns: _col0 (type: double) + Map-reduce partition columns: 2000.0 (type: double) value expressions: _col1 (type: struct), _col2 (type: struct) Reduce Operator Tree: Group By Operator aggregations: compute_stats(VALUE._col0), compute_stats(VALUE._col1) - keys: KEY._col0 (type: double) + keys: 2000.0 (type: double) mode: mergepartial outputColumnNames: _col0, _col1, _col2 Select Operator - expressions: _col1 (type: struct), _col2 (type: struct), _col0 (type: double) + expressions: _col1 (type: struct), _col2 (type: struct), 2000.0 (type: double) outputColumnNames: _col0, _col1, _col2 File Output Operator compressed: false diff --git a/ql/src/test/results/clientpositive/columnstats_partlvl_dp.q.out b/ql/src/test/results/clientpositive/columnstats_partlvl_dp.q.out index bb0ea86..21089e1 100644 --- a/ql/src/test/results/clientpositive/columnstats_partlvl_dp.q.out +++ b/ql/src/test/results/clientpositive/columnstats_partlvl_dp.q.out @@ -85,26 +85,26 @@ STAGE PLANS: TableScan alias: employee_part Select Operator - expressions: 4000.0 (type: double), country (type: string), employeename (type: string), employeeid (type: int) - outputColumnNames: employeesalary, country, employeename, employeeid + expressions: country (type: string), employeename (type: string), employeeid (type: int) + outputColumnNames: country, employeename, employeeid Group By Operator aggregations: compute_stats(employeename, 16), compute_stats(employeeid, 16) - keys: employeesalary (type: double), country (type: string) + keys: 4000.0 (type: double), country (type: string) mode: hash outputColumnNames: _col0, _col1, _col2, _col3 Reduce Output Operator - key expressions: _col0 (type: double), _col1 (type: string) + key expressions: 4000.0 (type: double), _col1 (type: string) sort order: ++ - Map-reduce partition columns: _col0 (type: double), _col1 (type: string) + Map-reduce partition columns: 4000.0 (type: double), _col1 (type: string) value expressions: _col2 (type: struct), _col3 (type: struct) Reduce Operator Tree: Group By Operator aggregations: compute_stats(VALUE._col0), compute_stats(VALUE._col1) - keys: KEY._col0 (type: double), KEY._col1 (type: string) + keys: 4000.0 (type: double), KEY._col1 (type: string) mode: mergepartial outputColumnNames: _col0, _col1, _col2, _col3 Select Operator - expressions: _col2 (type: struct), _col3 (type: struct), _col0 (type: double), _col1 (type: string) + expressions: _col2 (type: struct), _col3 (type: struct), 4000.0 (type: double), _col1 (type: string) outputColumnNames: _col0, _col1, _col2, _col3 File Output Operator compressed: false @@ -158,26 +158,26 @@ STAGE PLANS: TableScan alias: employee_part Select Operator - expressions: 2000.0 (type: double), country (type: string), employeeid (type: int) - outputColumnNames: employeesalary, country, employeeid + expressions: country (type: string), employeeid (type: int) + outputColumnNames: country, employeeid Group By Operator aggregations: compute_stats(employeeid, 16) - keys: employeesalary (type: double), country (type: string) + keys: 2000.0 (type: double), country (type: string) mode: hash outputColumnNames: _col0, _col1, _col2 Reduce Output Operator - key expressions: _col0 (type: double), _col1 (type: string) + key expressions: 2000.0 (type: double), _col1 (type: string) sort order: ++ - Map-reduce partition columns: _col0 (type: double), _col1 (type: string) + Map-reduce partition columns: 2000.0 (type: double), _col1 (type: string) value expressions: _col2 (type: struct) Reduce Operator Tree: Group By Operator aggregations: compute_stats(VALUE._col0) - keys: KEY._col0 (type: double), KEY._col1 (type: string) + keys: 2000.0 (type: double), KEY._col1 (type: string) mode: mergepartial outputColumnNames: _col0, _col1, _col2 Select Operator - expressions: _col2 (type: struct), _col0 (type: double), _col1 (type: string) + expressions: _col2 (type: struct), 2000.0 (type: double), _col1 (type: string) outputColumnNames: _col0, _col1, _col2 File Output Operator compressed: false diff --git a/ql/src/test/results/clientpositive/constant_prop_1.q.out b/ql/src/test/results/clientpositive/constant_prop_1.q.out new file mode 100644 index 0000000..2ba2430 --- /dev/null +++ b/ql/src/test/results/clientpositive/constant_prop_1.q.out @@ -0,0 +1,547 @@ +PREHOOK: query: explain +select 1 as a from src +union all +select 1 as a from src limit 1 +PREHOOK: type: QUERY +POSTHOOK: query: explain +select 1 as a from src +union all +select 1 as a from src limit 1 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + Statistics: Num rows: 500 Data size: 2000 Basic stats: COMPLETE Column stats: COMPLETE + Union + Statistics: Num rows: 1000 Data size: 4000 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: 1 (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 1000 Data size: 4000 Basic stats: COMPLETE Column stats: COMPLETE + Limit + Number of rows: 1 + Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + Statistics: Num rows: 500 Data size: 2000 Basic stats: COMPLETE Column stats: COMPLETE + Union + Statistics: Num rows: 1000 Data size: 4000 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: 1 (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 1000 Data size: 4000 Basic stats: COMPLETE Column stats: COMPLETE + Limit + Number of rows: 1 + Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: 1 + Processor Tree: + ListSink + +Warning: Shuffle Join JOIN[13][tables = [sub, b]] in Stage 'Stage-2:MAPRED' is a cross product +PREHOOK: query: explain +select a, key, value from +( +select 1 as a from src +union all +select 1 as a from src limit 1 +)sub join src b where value='12345' +PREHOOK: type: QUERY +POSTHOOK: query: explain +select a, key, value from +( +select 1 as a from src +union all +select 1 as a from src limit 1 +)sub join src b where value='12345' +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 depends on stages: Stage-2 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + Statistics: Num rows: 500 Data size: 2000 Basic stats: COMPLETE Column stats: COMPLETE + Union + Statistics: Num rows: 1000 Data size: 4000 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + Statistics: Num rows: 1000 Data size: 4000 Basic stats: COMPLETE Column stats: COMPLETE + Limit + Number of rows: 1 + Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + sort order: + Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE + TopN Hash Memory Usage: 0.1 + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + Statistics: Num rows: 500 Data size: 2000 Basic stats: COMPLETE Column stats: COMPLETE + Union + Statistics: Num rows: 1000 Data size: 4000 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + Statistics: Num rows: 1000 Data size: 4000 Basic stats: COMPLETE Column stats: COMPLETE + Limit + Number of rows: 1 + Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + sort order: + Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE + TopN Hash Memory Usage: 0.1 + Reduce Operator Tree: + Limit + Number of rows: 1 + Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe + + Stage: Stage-2 + Map Reduce + Map Operator Tree: + TableScan + Reduce Output Operator + sort order: + Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + TableScan + alias: b + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (value = '12345') (type: boolean) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + sort order: + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + value expressions: key (type: string) + Reduce Operator Tree: + Join Operator + condition map: + Inner Join 0 to 1 + keys: + 0 + 1 + outputColumnNames: _col1 + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: 1 (type: int), _col1 (type: string), '12345' (type: string) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: explain +select 1 as a from src +union all +select 2 as a from src limit 1 +PREHOOK: type: QUERY +POSTHOOK: query: explain +select 1 as a from src +union all +select 2 as a from src limit 1 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: 1 (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 500 Data size: 2000 Basic stats: COMPLETE Column stats: COMPLETE + Union + Statistics: Num rows: 1000 Data size: 4000 Basic stats: COMPLETE Column stats: COMPLETE + Limit + Number of rows: 1 + Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: 2 (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 500 Data size: 2000 Basic stats: COMPLETE Column stats: COMPLETE + Union + Statistics: Num rows: 1000 Data size: 4000 Basic stats: COMPLETE Column stats: COMPLETE + Limit + Number of rows: 1 + Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: 1 + Processor Tree: + ListSink + +Warning: Shuffle Join JOIN[13][tables = [sub, b]] in Stage 'Stage-2:MAPRED' is a cross product +PREHOOK: query: explain +select a, key, value from +( +select 1 as a from src +union all +select 2 as a from src limit 1 +)sub join src b where value='12345' +PREHOOK: type: QUERY +POSTHOOK: query: explain +select a, key, value from +( +select 1 as a from src +union all +select 2 as a from src limit 1 +)sub join src b where value='12345' +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 depends on stages: Stage-2 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: 1 (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 500 Data size: 2000 Basic stats: COMPLETE Column stats: COMPLETE + Union + Statistics: Num rows: 1000 Data size: 4000 Basic stats: COMPLETE Column stats: COMPLETE + Limit + Number of rows: 1 + Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + sort order: + Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE + TopN Hash Memory Usage: 0.1 + value expressions: _col0 (type: int) + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: 2 (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 500 Data size: 2000 Basic stats: COMPLETE Column stats: COMPLETE + Union + Statistics: Num rows: 1000 Data size: 4000 Basic stats: COMPLETE Column stats: COMPLETE + Limit + Number of rows: 1 + Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + sort order: + Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE + TopN Hash Memory Usage: 0.1 + value expressions: _col0 (type: int) + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE + Limit + Number of rows: 1 + Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe + + Stage: Stage-2 + Map Reduce + Map Operator Tree: + TableScan + Reduce Output Operator + sort order: + Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE + value expressions: _col0 (type: int) + TableScan + alias: b + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (value = '12345') (type: boolean) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + sort order: + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + value expressions: key (type: string) + Reduce Operator Tree: + Join Operator + condition map: + Inner Join 0 to 1 + keys: + 0 + 1 + outputColumnNames: _col0, _col1 + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: int), _col1 (type: string), '12345' (type: string) + outputColumnNames: _col0, _col1, _col2 + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +Warning: Shuffle Join JOIN[4][tables = [a, b]] in Stage 'Stage-1:MAPRED' is a cross product +PREHOOK: query: explain +select a.key, b.value from src a join src b where a.key = '238' and b.value = '234' +PREHOOK: type: QUERY +POSTHOOK: query: explain +select a.key, b.value from src a join src b where a.key = '238' and b.value = '234' +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: a + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (key = '238') (type: boolean) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + sort order: + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + TableScan + alias: b + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (value = '234') (type: boolean) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + sort order: + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Reduce Operator Tree: + Join Operator + condition map: + Inner Join 0 to 1 + keys: + 0 + 1 + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: '238' (type: string), '234' (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: explain +select a.key, b.value from src a join src b on a.key=b.key where b.value = '234' +PREHOOK: type: QUERY +POSTHOOK: query: explain +select a.key, b.value from src a join src b on a.key=b.key where b.value = '234' +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: a + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: key is not null (type: boolean) + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string) + sort order: + + Map-reduce partition columns: key (type: string) + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + TableScan + alias: b + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (key is not null and (value = '234')) (type: boolean) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: key (type: string) + sort order: + + Map-reduce partition columns: key (type: string) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Reduce Operator Tree: + Join Operator + condition map: + Inner Join 0 to 1 + keys: + 0 key (type: string) + 1 key (type: string) + outputColumnNames: _col0 + Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: _col0 (type: string), '234' (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: create table t ( +a int, +b int, +c int, +d int, +e int +) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@t +POSTHOOK: query: create table t ( +a int, +b int, +c int, +d int, +e int +) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@t +PREHOOK: query: explain +select a2 as a3 from +(select a1 as a2, c1 as c2 from +(select a as a1, b as b1, c as c1 from t where a=1 and b=2 and c=3)sub1)sub2 +PREHOOK: type: QUERY +POSTHOOK: query: explain +select a2 as a3 from +(select a1 as a2, c1 as c2 from +(select a as a1, b as b1, c as c1 from t where a=1 and b=2 and c=3)sub1)sub2 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: t + Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE + Filter Operator + predicate: ((a = 1) and (b = 2) and (c = 3)) (type: boolean) + Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE + Select Operator + expressions: 1 (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + diff --git a/ql/src/test/results/clientpositive/constant_prop_2.q.out b/ql/src/test/results/clientpositive/constant_prop_2.q.out new file mode 100644 index 0000000..c1de559 --- /dev/null +++ b/ql/src/test/results/clientpositive/constant_prop_2.q.out @@ -0,0 +1,75 @@ +PREHOOK: query: explain select count('1') from src group by '1' +PREHOOK: type: QUERY +POSTHOOK: query: explain select count('1') from src group by '1' +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: 1 + Processor Tree: + ListSink + +PREHOOK: query: select count('1') from src group by '1' +PREHOOK: type: QUERY +PREHOOK: Input: default@src +#### A masked pattern was here #### +POSTHOOK: query: select count('1') from src group by '1' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +#### A masked pattern was here #### +500 +PREHOOK: query: explain +analyze table srcpart partition (ds='2008-04-08',hr=11) compute statistics for columns key, value +PREHOOK: type: QUERY +POSTHOOK: query: explain +analyze table srcpart partition (ds='2008-04-08',hr=11) compute statistics for columns key, value +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + Stage-1 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-0 + Map Reduce + Map Operator Tree: + TableScan + alias: srcpart + Select Operator + expressions: key (type: string), value (type: string) + outputColumnNames: key, value + Group By Operator + aggregations: compute_stats(key, 16), compute_stats(value, 16) + keys: '2008-04-08' (type: string), '11' (type: string) + mode: hash + outputColumnNames: _col0, _col1, _col2, _col3 + Reduce Output Operator + key expressions: '2008-04-08' (type: string), '11' (type: string) + sort order: ++ + Map-reduce partition columns: '2008-04-08' (type: string), '11' (type: string) + value expressions: _col2 (type: struct), _col3 (type: struct) + Reduce Operator Tree: + Group By Operator + aggregations: compute_stats(VALUE._col0), compute_stats(VALUE._col1) + keys: '2008-04-08' (type: string), '11' (type: string) + mode: mergepartial + outputColumnNames: _col0, _col1, _col2, _col3 + Select Operator + expressions: _col2 (type: struct), _col3 (type: struct), '2008-04-08' (type: string), '11' (type: string) + outputColumnNames: _col0, _col1, _col2, _col3 + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-1 + Column Stats Work + Column Stats Desc: + Columns: key, value + Column Types: string, string + Table: default.srcpart + diff --git a/ql/src/test/results/clientpositive/dynpart_sort_optimization.q.out b/ql/src/test/results/clientpositive/dynpart_sort_optimization.q.out index 13383fb..dec872a 100644 --- a/ql/src/test/results/clientpositive/dynpart_sort_optimization.q.out +++ b/ql/src/test/results/clientpositive/dynpart_sort_optimization.q.out @@ -2305,7 +2305,7 @@ STAGE PLANS: value expressions: _col0 (type: smallint), _col1 (type: bigint), _col2 (type: float) Reduce Operator Tree: Select Operator - expressions: VALUE._col0 (type: smallint), VALUE._col1 (type: bigint), VALUE._col2 (type: float), KEY._col3 (type: string), KEY._col4 (type: tinyint), KEY._col5 (type: int) + expressions: VALUE._col0 (type: smallint), VALUE._col1 (type: bigint), VALUE._col2 (type: float), 'foo' (type: string), KEY._col4 (type: tinyint), KEY._col5 (type: int) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 Statistics: Num rows: 1974 Data size: 53304 Basic stats: COMPLETE Column stats: NONE File Output Operator @@ -2365,7 +2365,7 @@ STAGE PLANS: value expressions: _col0 (type: smallint), _col1 (type: bigint), _col2 (type: float) Reduce Operator Tree: Select Operator - expressions: VALUE._col0 (type: smallint), VALUE._col1 (type: bigint), VALUE._col2 (type: float), KEY._col3 (type: string), KEY._col4 (type: tinyint), KEY._col5 (type: int) + expressions: VALUE._col0 (type: smallint), VALUE._col1 (type: bigint), VALUE._col2 (type: float), KEY._col3 (type: string), 27 (type: tinyint), KEY._col5 (type: int) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 Statistics: Num rows: 429 Data size: 53255 Basic stats: COMPLETE Column stats: NONE File Output Operator @@ -2425,7 +2425,7 @@ STAGE PLANS: value expressions: _col0 (type: smallint), _col1 (type: bigint), _col2 (type: float) Reduce Operator Tree: Select Operator - expressions: VALUE._col0 (type: smallint), VALUE._col1 (type: bigint), VALUE._col2 (type: float), KEY._col3 (type: string), KEY._col4 (type: tinyint), KEY._col5 (type: int) + expressions: VALUE._col0 (type: smallint), VALUE._col1 (type: bigint), VALUE._col2 (type: float), KEY._col3 (type: string), KEY._col4 (type: tinyint), 100 (type: int) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 Statistics: Num rows: 429 Data size: 53255 Basic stats: COMPLETE Column stats: NONE File Output Operator @@ -2485,7 +2485,7 @@ STAGE PLANS: value expressions: _col0 (type: smallint), _col1 (type: bigint), _col2 (type: float) Reduce Operator Tree: Select Operator - expressions: VALUE._col0 (type: smallint), VALUE._col1 (type: bigint), VALUE._col2 (type: float), KEY._col3 (type: string), KEY._col4 (type: tinyint), KEY._col5 (type: int) + expressions: VALUE._col0 (type: smallint), VALUE._col1 (type: bigint), VALUE._col2 (type: float), KEY._col3 (type: string), 27 (type: tinyint), 100 (type: int) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 Statistics: Num rows: 214 Data size: 26565 Basic stats: COMPLETE Column stats: NONE File Output Operator @@ -2545,7 +2545,7 @@ STAGE PLANS: value expressions: _col0 (type: smallint), _col1 (type: bigint), _col2 (type: float) Reduce Operator Tree: Select Operator - expressions: VALUE._col0 (type: smallint), VALUE._col1 (type: bigint), VALUE._col2 (type: float), KEY._col3 (type: string), KEY._col4 (type: tinyint), KEY._col5 (type: int) + expressions: VALUE._col0 (type: smallint), VALUE._col1 (type: bigint), VALUE._col2 (type: float), 'foo' (type: string), KEY._col4 (type: tinyint), 100 (type: int) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 Statistics: Num rows: 987 Data size: 26652 Basic stats: COMPLETE Column stats: NONE File Output Operator @@ -2605,7 +2605,7 @@ STAGE PLANS: value expressions: _col0 (type: smallint), _col1 (type: bigint), _col2 (type: float) Reduce Operator Tree: Select Operator - expressions: VALUE._col0 (type: smallint), VALUE._col1 (type: bigint), VALUE._col2 (type: float), KEY._col3 (type: string), KEY._col4 (type: tinyint), KEY._col5 (type: int) + expressions: VALUE._col0 (type: smallint), VALUE._col1 (type: bigint), VALUE._col2 (type: float), 'foo' (type: string), 27 (type: tinyint), KEY._col5 (type: int) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 Statistics: Num rows: 987 Data size: 26652 Basic stats: COMPLETE Column stats: NONE File Output Operator diff --git a/ql/src/test/results/clientpositive/groupby_ppd.q.out b/ql/src/test/results/clientpositive/groupby_ppd.q.out index c63acd3..1d17c18 100644 --- a/ql/src/test/results/clientpositive/groupby_ppd.q.out +++ b/ql/src/test/results/clientpositive/groupby_ppd.q.out @@ -33,18 +33,18 @@ STAGE PLANS: Union Statistics: Num rows: 2 Data size: 0 Basic stats: PARTIAL Column stats: NONE Select Operator - expressions: 1 (type: int), _col1 (type: int) - outputColumnNames: _col0, _col1 + expressions: _col1 (type: int) + outputColumnNames: _col1 Statistics: Num rows: 2 Data size: 0 Basic stats: PARTIAL Column stats: NONE Group By Operator - keys: _col0 (type: int), _col1 (type: int) + keys: 1 (type: int), _col1 (type: int) mode: hash outputColumnNames: _col0, _col1 Statistics: Num rows: 2 Data size: 0 Basic stats: PARTIAL Column stats: NONE Reduce Output Operator - key expressions: _col0 (type: int), _col1 (type: int) + key expressions: 1 (type: int), _col1 (type: int) sort order: ++ - Map-reduce partition columns: _col0 (type: int), _col1 (type: int) + Map-reduce partition columns: 1 (type: int), _col1 (type: int) Statistics: Num rows: 2 Data size: 0 Basic stats: PARTIAL Column stats: NONE TableScan alias: c @@ -59,27 +59,27 @@ STAGE PLANS: Union Statistics: Num rows: 2 Data size: 0 Basic stats: PARTIAL Column stats: NONE Select Operator - expressions: 1 (type: int), _col1 (type: int) - outputColumnNames: _col0, _col1 + expressions: _col1 (type: int) + outputColumnNames: _col1 Statistics: Num rows: 2 Data size: 0 Basic stats: PARTIAL Column stats: NONE Group By Operator - keys: _col0 (type: int), _col1 (type: int) + keys: 1 (type: int), _col1 (type: int) mode: hash outputColumnNames: _col0, _col1 Statistics: Num rows: 2 Data size: 0 Basic stats: PARTIAL Column stats: NONE Reduce Output Operator - key expressions: _col0 (type: int), _col1 (type: int) + key expressions: 1 (type: int), _col1 (type: int) sort order: ++ - Map-reduce partition columns: _col0 (type: int), _col1 (type: int) + Map-reduce partition columns: 1 (type: int), _col1 (type: int) Statistics: Num rows: 2 Data size: 0 Basic stats: PARTIAL Column stats: NONE Reduce Operator Tree: Group By Operator - keys: KEY._col0 (type: int), KEY._col1 (type: int) + keys: 1 (type: int), KEY._col1 (type: int) mode: mergepartial outputColumnNames: _col0, _col1 Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE Select Operator - expressions: _col1 (type: int), _col0 (type: int) + expressions: _col1 (type: int), 1 (type: int) outputColumnNames: _col0, _col1 Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE File Output Operator diff --git a/ql/src/test/results/clientpositive/perf/query66.q.out b/ql/src/test/results/clientpositive/perf/query66.q.out index d698602..f9fc528 100644 --- a/ql/src/test/results/clientpositive/perf/query66.q.out +++ b/ql/src/test/results/clientpositive/perf/query66.q.out @@ -464,167 +464,169 @@ Stage-0 Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13","_col14","_col15","_col16","_col17","_col18","_col19","_col20","_col21","_col22","_col23","_col24","_col25","_col26","_col27","_col28","_col29","_col30","_col31","_col32","_col33","_col34","_col35","_col36","_col37","_col38","_col39","_col40","_col41","_col42","_col43"] <-Reducer 8 [SIMPLE_EDGE] SHUFFLE [RS_73] - Group By Operator [GBY_71] (rows=26136 width=471) - Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13","_col14","_col15","_col16","_col17","_col18","_col19","_col20","_col21","_col22","_col23","_col24","_col25","_col26","_col27","_col28","_col29","_col30","_col31","_col32","_col33","_col34","_col35","_col36","_col37","_col38","_col39","_col40","_col41","_col42","_col43"],aggregations:["sum(VALUE._col0)","sum(VALUE._col1)","sum(VALUE._col2)","sum(VALUE._col3)","sum(VALUE._col4)","sum(VALUE._col5)","sum(VALUE._col6)","sum(VALUE._col7)","sum(VALUE._col8)","sum(VALUE._col9)","sum(VALUE._col10)","sum(VALUE._col11)","sum(VALUE._col12)","sum(VALUE._col13)","sum(VALUE._col14)","sum(VALUE._col15)","sum(VALUE._col16)","sum(VALUE._col17)","sum(VALUE._col18)","sum(VALUE._col19)","sum(VALUE._col20)","sum(VALUE._col21)","sum(VALUE._col22)","sum(VALUE._col23)","sum(VALUE._col24)","sum(VALUE._col25)","sum(VALUE._col26)","sum(VALUE._col27)","sum(VALUE._col28)","sum(VALUE._col29)","sum(VALUE._col30)","sum(VALUE._col31)","sum(VALUE._col32)","sum(VALUE._col33)","sum(VALUE._col34)","sum(VALUE._col35)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3, KEY._col4, KEY._col5, KEY._col6, KEY._col7 - <-Union 7 [SIMPLE_EDGE] - <-Reducer 19 [CONTAINS] - Reduce Output Operator [RS_70] - PartitionCols:_col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7 - Group By Operator [GBY_69] (rows=52272 width=471) - Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13","_col14","_col15","_col16","_col17","_col18","_col19","_col20","_col21","_col22","_col23","_col24","_col25","_col26","_col27","_col28","_col29","_col30","_col31","_col32","_col33","_col34","_col35","_col36","_col37","_col38","_col39","_col40","_col41","_col42","_col43"],aggregations:["sum(_col8)","sum(_col9)","sum(_col10)","sum(_col11)","sum(_col12)","sum(_col13)","sum(_col14)","sum(_col15)","sum(_col16)","sum(_col17)","sum(_col18)","sum(_col19)","sum(_col20)","sum(_col21)","sum(_col22)","sum(_col23)","sum(_col24)","sum(_col25)","sum(_col26)","sum(_col27)","sum(_col28)","sum(_col29)","sum(_col30)","sum(_col31)","sum(_col32)","sum(_col33)","sum(_col34)","sum(_col35)","sum(_col36)","sum(_col37)","sum(_col38)","sum(_col39)","sum(_col40)","sum(_col41)","sum(_col42)","sum(_col43)"],keys:_col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7 - Select Operator [SEL_67] (rows=52272 width=471) - Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13","_col14","_col15","_col16","_col17","_col18","_col19","_col20","_col21","_col22","_col23","_col24","_col25","_col26","_col27","_col28","_col29","_col30","_col31","_col32","_col33","_col34","_col35","_col36","_col37","_col38","_col39","_col40","_col41","_col42","_col43"] - Select Operator [SEL_65] (rows=26136 width=471) - Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col8","_col9","_col10","_col11","_col12","_col13","_col14","_col15","_col16","_col17","_col18","_col19","_col20","_col21","_col22","_col23","_col24","_col25","_col26","_col27","_col28","_col29","_col30","_col31"] - Group By Operator [GBY_64] (rows=26136 width=471) - Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13","_col14","_col15","_col16","_col17","_col18","_col19","_col20","_col21","_col22","_col23","_col24","_col25","_col26","_col27","_col28","_col29","_col30"],aggregations:["sum(VALUE._col0)","sum(VALUE._col1)","sum(VALUE._col2)","sum(VALUE._col3)","sum(VALUE._col4)","sum(VALUE._col5)","sum(VALUE._col6)","sum(VALUE._col7)","sum(VALUE._col8)","sum(VALUE._col9)","sum(VALUE._col10)","sum(VALUE._col11)","sum(VALUE._col12)","sum(VALUE._col13)","sum(VALUE._col14)","sum(VALUE._col15)","sum(VALUE._col16)","sum(VALUE._col17)","sum(VALUE._col18)","sum(VALUE._col19)","sum(VALUE._col20)","sum(VALUE._col21)","sum(VALUE._col22)","sum(VALUE._col23)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3, KEY._col4, KEY._col5, 2002 - <-Reducer 18 [SIMPLE_EDGE] - SHUFFLE [RS_63] - PartitionCols:_col0, _col1, _col2, _col3, _col4, _col5, 2002 - Group By Operator [GBY_62] (rows=52272 width=471) - Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13","_col14","_col15","_col16","_col17","_col18","_col19","_col20","_col21","_col22","_col23","_col24","_col25","_col26","_col27","_col28","_col29","_col30"],aggregations:["sum(_col7)","sum(_col8)","sum(_col9)","sum(_col10)","sum(_col11)","sum(_col12)","sum(_col13)","sum(_col14)","sum(_col15)","sum(_col16)","sum(_col17)","sum(_col18)","sum(_col19)","sum(_col20)","sum(_col21)","sum(_col22)","sum(_col23)","sum(_col24)","sum(_col25)","sum(_col26)","sum(_col27)","sum(_col28)","sum(_col29)","sum(_col30)"],keys:_col0, _col1, _col2, _col3, _col4, _col5, 2002 - Select Operator [SEL_60] (rows=52272 width=471) - Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col7","_col8","_col9","_col10","_col11","_col12","_col13","_col14","_col15","_col16","_col17","_col18","_col19","_col20","_col21","_col22","_col23","_col24","_col25","_col26","_col27","_col28","_col29","_col30"] - Merge Join Operator [MERGEJOIN_122] (rows=52272 width=471) - Conds:RS_57._col2=RS_58._col0(Inner),Output:["_col4","_col5","_col6","_col8","_col9","_col10","_col11","_col12","_col13","_col16"] - <-Map 23 [SIMPLE_EDGE] - SHUFFLE [RS_58] - PartitionCols:_col0 - Select Operator [SEL_47] (rows=1 width=0) - Output:["_col0"] - Filter Operator [FIL_114] (rows=1 width=0) - predicate:((sm_carrier) IN ('DIAMOND', 'AIRBORNE') and sm_ship_mode_sk is not null) - TableScan [TS_45] (rows=1 width=0) - default@ship_mode,ship_mode,Tbl:PARTIAL,Col:NONE,Output:["sm_ship_mode_sk","sm_carrier"] - <-Reducer 17 [SIMPLE_EDGE] - SHUFFLE [RS_57] - PartitionCols:_col2 - Merge Join Operator [MERGEJOIN_121] (rows=47520 width=471) - Conds:RS_54._col1=RS_55._col0(Inner),Output:["_col2","_col4","_col5","_col6","_col8","_col9","_col10","_col11","_col12","_col13","_col16"] - <-Map 22 [SIMPLE_EDGE] - SHUFFLE [RS_55] - PartitionCols:_col0 - Select Operator [SEL_44] (rows=43200 width=471) - Output:["_col0"] - Filter Operator [FIL_113] (rows=43200 width=471) - predicate:(t_time BETWEEN 49530 AND 78330 and t_time_sk is not null) - TableScan [TS_42] (rows=86400 width=471) - default@time_dim,time_dim,Tbl:COMPLETE,Col:NONE,Output:["t_time_sk","t_time"] - <-Reducer 16 [SIMPLE_EDGE] - SHUFFLE [RS_54] - PartitionCols:_col1 - Merge Join Operator [MERGEJOIN_120] (rows=40176 width=1119) - Conds:RS_51._col0=RS_52._col0(Inner),Output:["_col1","_col2","_col4","_col5","_col6","_col8","_col9","_col10","_col11","_col12","_col13","_col16"] - <-Map 21 [SIMPLE_EDGE] - SHUFFLE [RS_52] - PartitionCols:_col0 - Select Operator [SEL_41] (rows=36524 width=1119) - Output:["_col0","_col2"] - Filter Operator [FIL_112] (rows=36524 width=1119) - predicate:((d_year = 2002) and d_date_sk is not null) - TableScan [TS_39] (rows=73049 width=1119) - default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date_sk","d_year","d_moy"] - <-Reducer 15 [SIMPLE_EDGE] - SHUFFLE [RS_51] - PartitionCols:_col0 - Merge Join Operator [MERGEJOIN_119] (rows=29 width=1054) - Conds:RS_48._col3=RS_49._col0(Inner),Output:["_col0","_col1","_col2","_col4","_col5","_col6","_col8","_col9","_col10","_col11","_col12","_col13"] - <-Map 14 [SIMPLE_EDGE] - SHUFFLE [RS_48] - PartitionCols:_col3 - Select Operator [SEL_35] (rows=1 width=0) - Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"] - Filter Operator [FIL_110] (rows=1 width=0) - predicate:(cs_warehouse_sk is not null and cs_sold_date_sk is not null and cs_sold_time_sk is not null and cs_ship_mode_sk is not null) - TableScan [TS_33] (rows=1 width=0) - default@catalog_sales,catalog_sales,Tbl:PARTIAL,Col:NONE,Output:["cs_sold_date_sk","cs_sold_time_sk","cs_ship_mode_sk","cs_warehouse_sk","cs_quantity","cs_ext_sales_price","cs_net_paid_inc_ship_tax"] - <-Map 20 [SIMPLE_EDGE] - SHUFFLE [RS_49] - PartitionCols:_col0 - Select Operator [SEL_38] (rows=27 width=1029) - Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"] - Filter Operator [FIL_111] (rows=27 width=1029) - predicate:w_warehouse_sk is not null - TableScan [TS_36] (rows=27 width=1029) - default@warehouse,warehouse,Tbl:COMPLETE,Col:NONE,Output:["w_warehouse_sk","w_warehouse_name","w_warehouse_sq_ft","w_city","w_county","w_state","w_country"] - <-Reducer 6 [CONTAINS] - Reduce Output Operator [RS_70] - PartitionCols:_col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7 - Group By Operator [GBY_69] (rows=52272 width=471) - Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13","_col14","_col15","_col16","_col17","_col18","_col19","_col20","_col21","_col22","_col23","_col24","_col25","_col26","_col27","_col28","_col29","_col30","_col31","_col32","_col33","_col34","_col35","_col36","_col37","_col38","_col39","_col40","_col41","_col42","_col43"],aggregations:["sum(_col8)","sum(_col9)","sum(_col10)","sum(_col11)","sum(_col12)","sum(_col13)","sum(_col14)","sum(_col15)","sum(_col16)","sum(_col17)","sum(_col18)","sum(_col19)","sum(_col20)","sum(_col21)","sum(_col22)","sum(_col23)","sum(_col24)","sum(_col25)","sum(_col26)","sum(_col27)","sum(_col28)","sum(_col29)","sum(_col30)","sum(_col31)","sum(_col32)","sum(_col33)","sum(_col34)","sum(_col35)","sum(_col36)","sum(_col37)","sum(_col38)","sum(_col39)","sum(_col40)","sum(_col41)","sum(_col42)","sum(_col43)"],keys:_col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7 - Select Operator [SEL_67] (rows=52272 width=471) - Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13","_col14","_col15","_col16","_col17","_col18","_col19","_col20","_col21","_col22","_col23","_col24","_col25","_col26","_col27","_col28","_col29","_col30","_col31","_col32","_col33","_col34","_col35","_col36","_col37","_col38","_col39","_col40","_col41","_col42","_col43"] - Select Operator [SEL_32] (rows=26136 width=471) - Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col8","_col9","_col10","_col11","_col12","_col13","_col14","_col15","_col16","_col17","_col18","_col19","_col20","_col21","_col22","_col23","_col24","_col25","_col26","_col27","_col28","_col29","_col30","_col31"] - Group By Operator [GBY_31] (rows=26136 width=471) - Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13","_col14","_col15","_col16","_col17","_col18","_col19","_col20","_col21","_col22","_col23","_col24","_col25","_col26","_col27","_col28","_col29","_col30"],aggregations:["sum(VALUE._col0)","sum(VALUE._col1)","sum(VALUE._col2)","sum(VALUE._col3)","sum(VALUE._col4)","sum(VALUE._col5)","sum(VALUE._col6)","sum(VALUE._col7)","sum(VALUE._col8)","sum(VALUE._col9)","sum(VALUE._col10)","sum(VALUE._col11)","sum(VALUE._col12)","sum(VALUE._col13)","sum(VALUE._col14)","sum(VALUE._col15)","sum(VALUE._col16)","sum(VALUE._col17)","sum(VALUE._col18)","sum(VALUE._col19)","sum(VALUE._col20)","sum(VALUE._col21)","sum(VALUE._col22)","sum(VALUE._col23)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3, KEY._col4, KEY._col5, 2002 - <-Reducer 5 [SIMPLE_EDGE] - SHUFFLE [RS_30] - PartitionCols:_col0, _col1, _col2, _col3, _col4, _col5, 2002 - Group By Operator [GBY_29] (rows=52272 width=471) - Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13","_col14","_col15","_col16","_col17","_col18","_col19","_col20","_col21","_col22","_col23","_col24","_col25","_col26","_col27","_col28","_col29","_col30"],aggregations:["sum(_col7)","sum(_col8)","sum(_col9)","sum(_col10)","sum(_col11)","sum(_col12)","sum(_col13)","sum(_col14)","sum(_col15)","sum(_col16)","sum(_col17)","sum(_col18)","sum(_col19)","sum(_col20)","sum(_col21)","sum(_col22)","sum(_col23)","sum(_col24)","sum(_col25)","sum(_col26)","sum(_col27)","sum(_col28)","sum(_col29)","sum(_col30)"],keys:_col0, _col1, _col2, _col3, _col4, _col5, 2002 - Select Operator [SEL_27] (rows=52272 width=471) - Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col7","_col8","_col9","_col10","_col11","_col12","_col13","_col14","_col15","_col16","_col17","_col18","_col19","_col20","_col21","_col22","_col23","_col24","_col25","_col26","_col27","_col28","_col29","_col30"] - Merge Join Operator [MERGEJOIN_118] (rows=52272 width=471) - Conds:RS_24._col2=RS_25._col0(Inner),Output:["_col4","_col5","_col6","_col8","_col9","_col10","_col11","_col12","_col13","_col16"] - <-Map 13 [SIMPLE_EDGE] - SHUFFLE [RS_25] - PartitionCols:_col0 - Select Operator [SEL_14] (rows=1 width=0) - Output:["_col0"] - Filter Operator [FIL_109] (rows=1 width=0) - predicate:((sm_carrier) IN ('DIAMOND', 'AIRBORNE') and sm_ship_mode_sk is not null) - TableScan [TS_12] (rows=1 width=0) - default@ship_mode,ship_mode,Tbl:PARTIAL,Col:NONE,Output:["sm_ship_mode_sk","sm_carrier"] - <-Reducer 4 [SIMPLE_EDGE] - SHUFFLE [RS_24] - PartitionCols:_col2 - Merge Join Operator [MERGEJOIN_117] (rows=47520 width=471) - Conds:RS_21._col1=RS_22._col0(Inner),Output:["_col2","_col4","_col5","_col6","_col8","_col9","_col10","_col11","_col12","_col13","_col16"] - <-Map 12 [SIMPLE_EDGE] - SHUFFLE [RS_22] - PartitionCols:_col0 - Select Operator [SEL_11] (rows=43200 width=471) - Output:["_col0"] - Filter Operator [FIL_108] (rows=43200 width=471) - predicate:(t_time BETWEEN 49530 AND 78330 and t_time_sk is not null) - TableScan [TS_9] (rows=86400 width=471) - default@time_dim,time_dim,Tbl:COMPLETE,Col:NONE,Output:["t_time_sk","t_time"] - <-Reducer 3 [SIMPLE_EDGE] - SHUFFLE [RS_21] - PartitionCols:_col1 - Merge Join Operator [MERGEJOIN_116] (rows=40176 width=1119) - Conds:RS_18._col0=RS_19._col0(Inner),Output:["_col1","_col2","_col4","_col5","_col6","_col8","_col9","_col10","_col11","_col12","_col13","_col16"] - <-Map 11 [SIMPLE_EDGE] - SHUFFLE [RS_19] - PartitionCols:_col0 - Select Operator [SEL_8] (rows=36524 width=1119) - Output:["_col0","_col2"] - Filter Operator [FIL_107] (rows=36524 width=1119) - predicate:((d_year = 2002) and d_date_sk is not null) - TableScan [TS_6] (rows=73049 width=1119) - default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date_sk","d_year","d_moy"] - <-Reducer 2 [SIMPLE_EDGE] - SHUFFLE [RS_18] - PartitionCols:_col0 - Merge Join Operator [MERGEJOIN_115] (rows=29 width=1054) - Conds:RS_15._col3=RS_16._col0(Inner),Output:["_col0","_col1","_col2","_col4","_col5","_col6","_col8","_col9","_col10","_col11","_col12","_col13"] - <-Map 1 [SIMPLE_EDGE] - SHUFFLE [RS_15] - PartitionCols:_col3 - Select Operator [SEL_2] (rows=1 width=0) - Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"] - Filter Operator [FIL_105] (rows=1 width=0) - predicate:(ws_warehouse_sk is not null and ws_sold_date_sk is not null and ws_sold_time_sk is not null and ws_ship_mode_sk is not null) - TableScan [TS_0] (rows=1 width=0) - default@web_sales,web_sales,Tbl:PARTIAL,Col:NONE,Output:["ws_sold_date_sk","ws_sold_time_sk","ws_ship_mode_sk","ws_warehouse_sk","ws_quantity","ws_sales_price","ws_net_paid_inc_tax"] - <-Map 10 [SIMPLE_EDGE] - SHUFFLE [RS_16] - PartitionCols:_col0 - Select Operator [SEL_5] (rows=27 width=1029) - Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"] - Filter Operator [FIL_106] (rows=27 width=1029) - predicate:w_warehouse_sk is not null - TableScan [TS_3] (rows=27 width=1029) - default@warehouse,warehouse,Tbl:COMPLETE,Col:NONE,Output:["w_warehouse_sk","w_warehouse_name","w_warehouse_sq_ft","w_city","w_county","w_state","w_country"] + Select Operator [SEL_72] (rows=26136 width=471) + Output:["_col0","_col1","_col10","_col11","_col12","_col13","_col14","_col15","_col16","_col17","_col18","_col19","_col2","_col20","_col21","_col22","_col23","_col24","_col25","_col26","_col27","_col28","_col29","_col3","_col30","_col31","_col32","_col33","_col34","_col35","_col36","_col37","_col38","_col39","_col4","_col40","_col41","_col42","_col43","_col5","_col8","_col9"] + Group By Operator [GBY_71] (rows=26136 width=471) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13","_col14","_col15","_col16","_col17","_col18","_col19","_col20","_col21","_col22","_col23","_col24","_col25","_col26","_col27","_col28","_col29","_col30","_col31","_col32","_col33","_col34","_col35","_col36","_col37","_col38","_col39","_col40","_col41","_col42","_col43"],aggregations:["sum(VALUE._col0)","sum(VALUE._col1)","sum(VALUE._col2)","sum(VALUE._col3)","sum(VALUE._col4)","sum(VALUE._col5)","sum(VALUE._col6)","sum(VALUE._col7)","sum(VALUE._col8)","sum(VALUE._col9)","sum(VALUE._col10)","sum(VALUE._col11)","sum(VALUE._col12)","sum(VALUE._col13)","sum(VALUE._col14)","sum(VALUE._col15)","sum(VALUE._col16)","sum(VALUE._col17)","sum(VALUE._col18)","sum(VALUE._col19)","sum(VALUE._col20)","sum(VALUE._col21)","sum(VALUE._col22)","sum(VALUE._col23)","sum(VALUE._col24)","sum(VALUE._col25)","sum(VALUE._col26)","sum(VALUE._col27)","sum(VALUE._col28)","sum(VALUE._col29)","sum(VALUE._col30)","sum(VALUE._col31)","sum(VALUE._col32)","sum(VALUE._col33)","sum(VALUE._col34)","sum(VALUE._col35)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3, KEY._col4, KEY._col5, 'DIAMOND,AIRBORNE', 2002 + <-Union 7 [SIMPLE_EDGE] + <-Reducer 19 [CONTAINS] + Reduce Output Operator [RS_70] + PartitionCols:_col0, _col1, _col2, _col3, _col4, _col5, 'DIAMOND,AIRBORNE', 2002 + Group By Operator [GBY_69] (rows=52272 width=471) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13","_col14","_col15","_col16","_col17","_col18","_col19","_col20","_col21","_col22","_col23","_col24","_col25","_col26","_col27","_col28","_col29","_col30","_col31","_col32","_col33","_col34","_col35","_col36","_col37","_col38","_col39","_col40","_col41","_col42","_col43"],aggregations:["sum(_col8)","sum(_col9)","sum(_col10)","sum(_col11)","sum(_col12)","sum(_col13)","sum(_col14)","sum(_col15)","sum(_col16)","sum(_col17)","sum(_col18)","sum(_col19)","sum(_col20)","sum(_col21)","sum(_col22)","sum(_col23)","sum(_col24)","sum(_col25)","sum(_col26)","sum(_col27)","sum(_col28)","sum(_col29)","sum(_col30)","sum(_col31)","sum(_col32)","sum(_col33)","sum(_col34)","sum(_col35)","sum(_col36)","sum(_col37)","sum(_col38)","sum(_col39)","sum(_col40)","sum(_col41)","sum(_col42)","sum(_col43)"],keys:_col0, _col1, _col2, _col3, _col4, _col5, 'DIAMOND,AIRBORNE', 2002 + Select Operator [SEL_67] (rows=52272 width=471) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col8","_col9","_col10","_col11","_col12","_col13","_col14","_col15","_col16","_col17","_col18","_col19","_col20","_col21","_col22","_col23","_col24","_col25","_col26","_col27","_col28","_col29","_col30","_col31","_col32","_col33","_col34","_col35","_col36","_col37","_col38","_col39","_col40","_col41","_col42","_col43"] + Select Operator [SEL_65] (rows=26136 width=471) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col8","_col9","_col10","_col11","_col12","_col13","_col14","_col15","_col16","_col17","_col18","_col19","_col20","_col21","_col22","_col23","_col24","_col25","_col26","_col27","_col28","_col29","_col30","_col31"] + Group By Operator [GBY_64] (rows=26136 width=471) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13","_col14","_col15","_col16","_col17","_col18","_col19","_col20","_col21","_col22","_col23","_col24","_col25","_col26","_col27","_col28","_col29","_col30"],aggregations:["sum(VALUE._col0)","sum(VALUE._col1)","sum(VALUE._col2)","sum(VALUE._col3)","sum(VALUE._col4)","sum(VALUE._col5)","sum(VALUE._col6)","sum(VALUE._col7)","sum(VALUE._col8)","sum(VALUE._col9)","sum(VALUE._col10)","sum(VALUE._col11)","sum(VALUE._col12)","sum(VALUE._col13)","sum(VALUE._col14)","sum(VALUE._col15)","sum(VALUE._col16)","sum(VALUE._col17)","sum(VALUE._col18)","sum(VALUE._col19)","sum(VALUE._col20)","sum(VALUE._col21)","sum(VALUE._col22)","sum(VALUE._col23)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3, KEY._col4, KEY._col5, 2002 + <-Reducer 18 [SIMPLE_EDGE] + SHUFFLE [RS_63] + PartitionCols:_col0, _col1, _col2, _col3, _col4, _col5, 2002 + Group By Operator [GBY_62] (rows=52272 width=471) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13","_col14","_col15","_col16","_col17","_col18","_col19","_col20","_col21","_col22","_col23","_col24","_col25","_col26","_col27","_col28","_col29","_col30"],aggregations:["sum(_col7)","sum(_col8)","sum(_col9)","sum(_col10)","sum(_col11)","sum(_col12)","sum(_col13)","sum(_col14)","sum(_col15)","sum(_col16)","sum(_col17)","sum(_col18)","sum(_col19)","sum(_col20)","sum(_col21)","sum(_col22)","sum(_col23)","sum(_col24)","sum(_col25)","sum(_col26)","sum(_col27)","sum(_col28)","sum(_col29)","sum(_col30)"],keys:_col0, _col1, _col2, _col3, _col4, _col5, 2002 + Select Operator [SEL_60] (rows=52272 width=471) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col7","_col8","_col9","_col10","_col11","_col12","_col13","_col14","_col15","_col16","_col17","_col18","_col19","_col20","_col21","_col22","_col23","_col24","_col25","_col26","_col27","_col28","_col29","_col30"] + Merge Join Operator [MERGEJOIN_122] (rows=52272 width=471) + Conds:RS_57._col2=RS_58._col0(Inner),Output:["_col4","_col5","_col6","_col8","_col9","_col10","_col11","_col12","_col13","_col16"] + <-Map 23 [SIMPLE_EDGE] + SHUFFLE [RS_58] + PartitionCols:_col0 + Select Operator [SEL_47] (rows=1 width=0) + Output:["_col0"] + Filter Operator [FIL_114] (rows=1 width=0) + predicate:((sm_carrier) IN ('DIAMOND', 'AIRBORNE') and sm_ship_mode_sk is not null) + TableScan [TS_45] (rows=1 width=0) + default@ship_mode,ship_mode,Tbl:PARTIAL,Col:NONE,Output:["sm_ship_mode_sk","sm_carrier"] + <-Reducer 17 [SIMPLE_EDGE] + SHUFFLE [RS_57] + PartitionCols:_col2 + Merge Join Operator [MERGEJOIN_121] (rows=47520 width=471) + Conds:RS_54._col1=RS_55._col0(Inner),Output:["_col2","_col4","_col5","_col6","_col8","_col9","_col10","_col11","_col12","_col13","_col16"] + <-Map 22 [SIMPLE_EDGE] + SHUFFLE [RS_55] + PartitionCols:_col0 + Select Operator [SEL_44] (rows=43200 width=471) + Output:["_col0"] + Filter Operator [FIL_113] (rows=43200 width=471) + predicate:(t_time BETWEEN 49530 AND 78330 and t_time_sk is not null) + TableScan [TS_42] (rows=86400 width=471) + default@time_dim,time_dim,Tbl:COMPLETE,Col:NONE,Output:["t_time_sk","t_time"] + <-Reducer 16 [SIMPLE_EDGE] + SHUFFLE [RS_54] + PartitionCols:_col1 + Merge Join Operator [MERGEJOIN_120] (rows=40176 width=1119) + Conds:RS_51._col0=RS_52._col0(Inner),Output:["_col1","_col2","_col4","_col5","_col6","_col8","_col9","_col10","_col11","_col12","_col13","_col16"] + <-Map 21 [SIMPLE_EDGE] + SHUFFLE [RS_52] + PartitionCols:_col0 + Select Operator [SEL_41] (rows=36524 width=1119) + Output:["_col0","_col2"] + Filter Operator [FIL_112] (rows=36524 width=1119) + predicate:((d_year = 2002) and d_date_sk is not null) + TableScan [TS_39] (rows=73049 width=1119) + default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date_sk","d_year","d_moy"] + <-Reducer 15 [SIMPLE_EDGE] + SHUFFLE [RS_51] + PartitionCols:_col0 + Merge Join Operator [MERGEJOIN_119] (rows=29 width=1054) + Conds:RS_48._col3=RS_49._col0(Inner),Output:["_col0","_col1","_col2","_col4","_col5","_col6","_col8","_col9","_col10","_col11","_col12","_col13"] + <-Map 14 [SIMPLE_EDGE] + SHUFFLE [RS_48] + PartitionCols:_col3 + Select Operator [SEL_35] (rows=1 width=0) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"] + Filter Operator [FIL_110] (rows=1 width=0) + predicate:(cs_warehouse_sk is not null and cs_sold_date_sk is not null and cs_sold_time_sk is not null and cs_ship_mode_sk is not null) + TableScan [TS_33] (rows=1 width=0) + default@catalog_sales,catalog_sales,Tbl:PARTIAL,Col:NONE,Output:["cs_sold_date_sk","cs_sold_time_sk","cs_ship_mode_sk","cs_warehouse_sk","cs_quantity","cs_ext_sales_price","cs_net_paid_inc_ship_tax"] + <-Map 20 [SIMPLE_EDGE] + SHUFFLE [RS_49] + PartitionCols:_col0 + Select Operator [SEL_38] (rows=27 width=1029) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"] + Filter Operator [FIL_111] (rows=27 width=1029) + predicate:w_warehouse_sk is not null + TableScan [TS_36] (rows=27 width=1029) + default@warehouse,warehouse,Tbl:COMPLETE,Col:NONE,Output:["w_warehouse_sk","w_warehouse_name","w_warehouse_sq_ft","w_city","w_county","w_state","w_country"] + <-Reducer 6 [CONTAINS] + Reduce Output Operator [RS_70] + PartitionCols:_col0, _col1, _col2, _col3, _col4, _col5, 'DIAMOND,AIRBORNE', 2002 + Group By Operator [GBY_69] (rows=52272 width=471) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13","_col14","_col15","_col16","_col17","_col18","_col19","_col20","_col21","_col22","_col23","_col24","_col25","_col26","_col27","_col28","_col29","_col30","_col31","_col32","_col33","_col34","_col35","_col36","_col37","_col38","_col39","_col40","_col41","_col42","_col43"],aggregations:["sum(_col8)","sum(_col9)","sum(_col10)","sum(_col11)","sum(_col12)","sum(_col13)","sum(_col14)","sum(_col15)","sum(_col16)","sum(_col17)","sum(_col18)","sum(_col19)","sum(_col20)","sum(_col21)","sum(_col22)","sum(_col23)","sum(_col24)","sum(_col25)","sum(_col26)","sum(_col27)","sum(_col28)","sum(_col29)","sum(_col30)","sum(_col31)","sum(_col32)","sum(_col33)","sum(_col34)","sum(_col35)","sum(_col36)","sum(_col37)","sum(_col38)","sum(_col39)","sum(_col40)","sum(_col41)","sum(_col42)","sum(_col43)"],keys:_col0, _col1, _col2, _col3, _col4, _col5, 'DIAMOND,AIRBORNE', 2002 + Select Operator [SEL_67] (rows=52272 width=471) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col8","_col9","_col10","_col11","_col12","_col13","_col14","_col15","_col16","_col17","_col18","_col19","_col20","_col21","_col22","_col23","_col24","_col25","_col26","_col27","_col28","_col29","_col30","_col31","_col32","_col33","_col34","_col35","_col36","_col37","_col38","_col39","_col40","_col41","_col42","_col43"] + Select Operator [SEL_32] (rows=26136 width=471) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col8","_col9","_col10","_col11","_col12","_col13","_col14","_col15","_col16","_col17","_col18","_col19","_col20","_col21","_col22","_col23","_col24","_col25","_col26","_col27","_col28","_col29","_col30","_col31"] + Group By Operator [GBY_31] (rows=26136 width=471) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13","_col14","_col15","_col16","_col17","_col18","_col19","_col20","_col21","_col22","_col23","_col24","_col25","_col26","_col27","_col28","_col29","_col30"],aggregations:["sum(VALUE._col0)","sum(VALUE._col1)","sum(VALUE._col2)","sum(VALUE._col3)","sum(VALUE._col4)","sum(VALUE._col5)","sum(VALUE._col6)","sum(VALUE._col7)","sum(VALUE._col8)","sum(VALUE._col9)","sum(VALUE._col10)","sum(VALUE._col11)","sum(VALUE._col12)","sum(VALUE._col13)","sum(VALUE._col14)","sum(VALUE._col15)","sum(VALUE._col16)","sum(VALUE._col17)","sum(VALUE._col18)","sum(VALUE._col19)","sum(VALUE._col20)","sum(VALUE._col21)","sum(VALUE._col22)","sum(VALUE._col23)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3, KEY._col4, KEY._col5, 2002 + <-Reducer 5 [SIMPLE_EDGE] + SHUFFLE [RS_30] + PartitionCols:_col0, _col1, _col2, _col3, _col4, _col5, 2002 + Group By Operator [GBY_29] (rows=52272 width=471) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13","_col14","_col15","_col16","_col17","_col18","_col19","_col20","_col21","_col22","_col23","_col24","_col25","_col26","_col27","_col28","_col29","_col30"],aggregations:["sum(_col7)","sum(_col8)","sum(_col9)","sum(_col10)","sum(_col11)","sum(_col12)","sum(_col13)","sum(_col14)","sum(_col15)","sum(_col16)","sum(_col17)","sum(_col18)","sum(_col19)","sum(_col20)","sum(_col21)","sum(_col22)","sum(_col23)","sum(_col24)","sum(_col25)","sum(_col26)","sum(_col27)","sum(_col28)","sum(_col29)","sum(_col30)"],keys:_col0, _col1, _col2, _col3, _col4, _col5, 2002 + Select Operator [SEL_27] (rows=52272 width=471) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col7","_col8","_col9","_col10","_col11","_col12","_col13","_col14","_col15","_col16","_col17","_col18","_col19","_col20","_col21","_col22","_col23","_col24","_col25","_col26","_col27","_col28","_col29","_col30"] + Merge Join Operator [MERGEJOIN_118] (rows=52272 width=471) + Conds:RS_24._col2=RS_25._col0(Inner),Output:["_col4","_col5","_col6","_col8","_col9","_col10","_col11","_col12","_col13","_col16"] + <-Map 13 [SIMPLE_EDGE] + SHUFFLE [RS_25] + PartitionCols:_col0 + Select Operator [SEL_14] (rows=1 width=0) + Output:["_col0"] + Filter Operator [FIL_109] (rows=1 width=0) + predicate:((sm_carrier) IN ('DIAMOND', 'AIRBORNE') and sm_ship_mode_sk is not null) + TableScan [TS_12] (rows=1 width=0) + default@ship_mode,ship_mode,Tbl:PARTIAL,Col:NONE,Output:["sm_ship_mode_sk","sm_carrier"] + <-Reducer 4 [SIMPLE_EDGE] + SHUFFLE [RS_24] + PartitionCols:_col2 + Merge Join Operator [MERGEJOIN_117] (rows=47520 width=471) + Conds:RS_21._col1=RS_22._col0(Inner),Output:["_col2","_col4","_col5","_col6","_col8","_col9","_col10","_col11","_col12","_col13","_col16"] + <-Map 12 [SIMPLE_EDGE] + SHUFFLE [RS_22] + PartitionCols:_col0 + Select Operator [SEL_11] (rows=43200 width=471) + Output:["_col0"] + Filter Operator [FIL_108] (rows=43200 width=471) + predicate:(t_time BETWEEN 49530 AND 78330 and t_time_sk is not null) + TableScan [TS_9] (rows=86400 width=471) + default@time_dim,time_dim,Tbl:COMPLETE,Col:NONE,Output:["t_time_sk","t_time"] + <-Reducer 3 [SIMPLE_EDGE] + SHUFFLE [RS_21] + PartitionCols:_col1 + Merge Join Operator [MERGEJOIN_116] (rows=40176 width=1119) + Conds:RS_18._col0=RS_19._col0(Inner),Output:["_col1","_col2","_col4","_col5","_col6","_col8","_col9","_col10","_col11","_col12","_col13","_col16"] + <-Map 11 [SIMPLE_EDGE] + SHUFFLE [RS_19] + PartitionCols:_col0 + Select Operator [SEL_8] (rows=36524 width=1119) + Output:["_col0","_col2"] + Filter Operator [FIL_107] (rows=36524 width=1119) + predicate:((d_year = 2002) and d_date_sk is not null) + TableScan [TS_6] (rows=73049 width=1119) + default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date_sk","d_year","d_moy"] + <-Reducer 2 [SIMPLE_EDGE] + SHUFFLE [RS_18] + PartitionCols:_col0 + Merge Join Operator [MERGEJOIN_115] (rows=29 width=1054) + Conds:RS_15._col3=RS_16._col0(Inner),Output:["_col0","_col1","_col2","_col4","_col5","_col6","_col8","_col9","_col10","_col11","_col12","_col13"] + <-Map 1 [SIMPLE_EDGE] + SHUFFLE [RS_15] + PartitionCols:_col3 + Select Operator [SEL_2] (rows=1 width=0) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"] + Filter Operator [FIL_105] (rows=1 width=0) + predicate:(ws_warehouse_sk is not null and ws_sold_date_sk is not null and ws_sold_time_sk is not null and ws_ship_mode_sk is not null) + TableScan [TS_0] (rows=1 width=0) + default@web_sales,web_sales,Tbl:PARTIAL,Col:NONE,Output:["ws_sold_date_sk","ws_sold_time_sk","ws_ship_mode_sk","ws_warehouse_sk","ws_quantity","ws_sales_price","ws_net_paid_inc_tax"] + <-Map 10 [SIMPLE_EDGE] + SHUFFLE [RS_16] + PartitionCols:_col0 + Select Operator [SEL_5] (rows=27 width=1029) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"] + Filter Operator [FIL_106] (rows=27 width=1029) + predicate:w_warehouse_sk is not null + TableScan [TS_3] (rows=27 width=1029) + default@warehouse,warehouse,Tbl:COMPLETE,Col:NONE,Output:["w_warehouse_sk","w_warehouse_name","w_warehouse_sq_ft","w_city","w_county","w_state","w_country"] diff --git a/ql/src/test/results/clientpositive/perf/query75.q.out b/ql/src/test/results/clientpositive/perf/query75.q.out index 15c46c2..a78fa41 100644 --- a/ql/src/test/results/clientpositive/perf/query75.q.out +++ b/ql/src/test/results/clientpositive/perf/query75.q.out @@ -41,363 +41,367 @@ Stage-0 <-Reducer 7 [SIMPLE_EDGE] SHUFFLE [RS_153] Select Operator [SEL_152] (rows=169103 width=1436) - Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9"] + Output:["_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9"] Filter Operator [FIL_151] (rows=169103 width=1436) predicate:(UDFToDouble((CAST( _col5 AS decimal(17,2)) / CAST( _col12 AS decimal(17,2)))) < 0.9) Merge Join Operator [MERGEJOIN_259] (rows=507310 width=1436) - Conds:RS_148._col1, _col2, _col3, _col4=RS_149._col1, _col2, _col3, _col4(Inner),Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col12","_col13"] + Conds:RS_148._col1, _col2, _col3, _col4=RS_149._col1, _col2, _col3, _col4(Inner),Output:["_col1","_col2","_col3","_col4","_col5","_col6","_col12","_col13"] <-Reducer 31 [SIMPLE_EDGE] SHUFFLE [RS_149] PartitionCols:_col1, _col2, _col3, _col4 - Group By Operator [GBY_146] (rows=461191 width=1436) - Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"],aggregations:["sum(VALUE._col0)","sum(VALUE._col1)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3, KEY._col4 - <-Union 30 [SIMPLE_EDGE] - <-Reducer 29 [CONTAINS] - Reduce Output Operator [RS_145] - PartitionCols:_col0, _col1, _col2, _col3, _col4 - Group By Operator [GBY_144] (rows=922383 width=1436) - Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"],aggregations:["sum(_col5)","sum(_col6)"],keys:_col0, _col1, _col2, _col3, _col4 - Select Operator [SEL_142] (rows=922383 width=1436) - Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"] - Select Operator [SEL_95] (rows=307461 width=1436) + Select Operator [SEL_147] (rows=461191 width=1436) + Output:["_col1","_col2","_col3","_col4","_col5","_col6"] + Group By Operator [GBY_146] (rows=461191 width=1436) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"],aggregations:["sum(VALUE._col0)","sum(VALUE._col1)"],keys:2001, KEY._col1, KEY._col2, KEY._col3, KEY._col4 + <-Union 30 [SIMPLE_EDGE] + <-Reducer 29 [CONTAINS] + Reduce Output Operator [RS_145] + PartitionCols:2001, _col1, _col2, _col3, _col4 + Group By Operator [GBY_144] (rows=922383 width=1436) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"],aggregations:["sum(_col5)","sum(_col6)"],keys:2001, _col1, _col2, _col3, _col4 + Select Operator [SEL_142] (rows=922383 width=1436) Output:["_col1","_col2","_col3","_col4","_col5","_col6"] - Merge Join Operator [MERGEJOIN_252] (rows=307461 width=1436) - Conds:RS_92._col2, _col1=RS_93._col1, _col0(Left Outer),Output:["_col3","_col4","_col6","_col7","_col8","_col10","_col15","_col16"] - <-Map 34 [SIMPLE_EDGE] - SHUFFLE [RS_93] - PartitionCols:_col1, _col0 - Select Operator [SEL_85] (rows=1 width=0) - Output:["_col0","_col1","_col2","_col3"] - Filter Operator [FIL_232] (rows=1 width=0) - predicate:cr_item_sk is not null - TableScan [TS_83] (rows=1 width=0) - default@catalog_returns,catalog_returns,Tbl:PARTIAL,Col:NONE,Output:["cr_item_sk","cr_order_number","cr_return_quantity","cr_return_amount"] - <-Reducer 28 [SIMPLE_EDGE] - SHUFFLE [RS_92] - PartitionCols:_col2, _col1 - Merge Join Operator [MERGEJOIN_251] (rows=279510 width=1436) - Conds:RS_89._col0=RS_90._col0(Inner),Output:["_col1","_col2","_col3","_col4","_col6","_col7","_col8","_col10"] - <-Map 33 [SIMPLE_EDGE] - SHUFFLE [RS_90] - PartitionCols:_col0 - Select Operator [SEL_82] (rows=36524 width=1119) - Output:["_col0"] - Filter Operator [FIL_231] (rows=36524 width=1119) - predicate:((d_year = 2001) and d_date_sk is not null) - TableScan [TS_80] (rows=73049 width=1119) - default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date_sk","d_year"] - <-Reducer 27 [SIMPLE_EDGE] - SHUFFLE [RS_89] - PartitionCols:_col0 - Merge Join Operator [MERGEJOIN_250] (rows=254100 width=1436) - Conds:RS_86._col1=RS_87._col0(Inner),Output:["_col0","_col1","_col2","_col3","_col4","_col6","_col7","_col8","_col10"] - <-Map 26 [SIMPLE_EDGE] - SHUFFLE [RS_86] - PartitionCols:_col1 - Select Operator [SEL_76] (rows=1 width=0) - Output:["_col0","_col1","_col2","_col3","_col4"] - Filter Operator [FIL_229] (rows=1 width=0) - predicate:(cs_item_sk is not null and cs_sold_date_sk is not null) - TableScan [TS_74] (rows=1 width=0) - default@catalog_sales,catalog_sales,Tbl:PARTIAL,Col:NONE,Output:["cs_sold_date_sk","cs_item_sk","cs_order_number","cs_quantity","cs_ext_sales_price"] - <-Map 32 [SIMPLE_EDGE] - SHUFFLE [RS_87] - PartitionCols:_col0 - Select Operator [SEL_79] (rows=231000 width=1436) - Output:["_col0","_col1","_col2","_col3","_col5"] - Filter Operator [FIL_230] (rows=231000 width=1436) - predicate:((i_category = 'Sports') and i_item_sk is not null and i_brand_id is not null and i_class_id is not null and i_category_id is not null and i_manufact_id is not null) - TableScan [TS_77] (rows=462000 width=1436) - default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_item_sk","i_brand_id","i_class_id","i_category_id","i_category","i_manufact_id"] - <-Reducer 38 [CONTAINS] - Reduce Output Operator [RS_145] - PartitionCols:_col0, _col1, _col2, _col3, _col4 - Group By Operator [GBY_144] (rows=922383 width=1436) - Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"],aggregations:["sum(_col5)","sum(_col6)"],keys:_col0, _col1, _col2, _col3, _col4 - Select Operator [SEL_142] (rows=922383 width=1436) - Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"] - Select Operator [SEL_117] (rows=307461 width=1436) + Select Operator [SEL_95] (rows=307461 width=1436) + Output:["_col1","_col2","_col3","_col4","_col5","_col6"] + Merge Join Operator [MERGEJOIN_252] (rows=307461 width=1436) + Conds:RS_92._col2, _col1=RS_93._col1, _col0(Left Outer),Output:["_col3","_col4","_col6","_col7","_col8","_col10","_col15","_col16"] + <-Map 34 [SIMPLE_EDGE] + SHUFFLE [RS_93] + PartitionCols:_col1, _col0 + Select Operator [SEL_85] (rows=1 width=0) + Output:["_col0","_col1","_col2","_col3"] + Filter Operator [FIL_232] (rows=1 width=0) + predicate:cr_item_sk is not null + TableScan [TS_83] (rows=1 width=0) + default@catalog_returns,catalog_returns,Tbl:PARTIAL,Col:NONE,Output:["cr_item_sk","cr_order_number","cr_return_quantity","cr_return_amount"] + <-Reducer 28 [SIMPLE_EDGE] + SHUFFLE [RS_92] + PartitionCols:_col2, _col1 + Merge Join Operator [MERGEJOIN_251] (rows=279510 width=1436) + Conds:RS_89._col0=RS_90._col0(Inner),Output:["_col1","_col2","_col3","_col4","_col6","_col7","_col8","_col10"] + <-Map 33 [SIMPLE_EDGE] + SHUFFLE [RS_90] + PartitionCols:_col0 + Select Operator [SEL_82] (rows=36524 width=1119) + Output:["_col0"] + Filter Operator [FIL_231] (rows=36524 width=1119) + predicate:((d_year = 2001) and d_date_sk is not null) + TableScan [TS_80] (rows=73049 width=1119) + default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date_sk","d_year"] + <-Reducer 27 [SIMPLE_EDGE] + SHUFFLE [RS_89] + PartitionCols:_col0 + Merge Join Operator [MERGEJOIN_250] (rows=254100 width=1436) + Conds:RS_86._col1=RS_87._col0(Inner),Output:["_col0","_col1","_col2","_col3","_col4","_col6","_col7","_col8","_col10"] + <-Map 26 [SIMPLE_EDGE] + SHUFFLE [RS_86] + PartitionCols:_col1 + Select Operator [SEL_76] (rows=1 width=0) + Output:["_col0","_col1","_col2","_col3","_col4"] + Filter Operator [FIL_229] (rows=1 width=0) + predicate:(cs_item_sk is not null and cs_sold_date_sk is not null) + TableScan [TS_74] (rows=1 width=0) + default@catalog_sales,catalog_sales,Tbl:PARTIAL,Col:NONE,Output:["cs_sold_date_sk","cs_item_sk","cs_order_number","cs_quantity","cs_ext_sales_price"] + <-Map 32 [SIMPLE_EDGE] + SHUFFLE [RS_87] + PartitionCols:_col0 + Select Operator [SEL_79] (rows=231000 width=1436) + Output:["_col0","_col1","_col2","_col3","_col5"] + Filter Operator [FIL_230] (rows=231000 width=1436) + predicate:((i_category = 'Sports') and i_item_sk is not null and i_brand_id is not null and i_class_id is not null and i_category_id is not null and i_manufact_id is not null) + TableScan [TS_77] (rows=462000 width=1436) + default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_item_sk","i_brand_id","i_class_id","i_category_id","i_category","i_manufact_id"] + <-Reducer 38 [CONTAINS] + Reduce Output Operator [RS_145] + PartitionCols:2001, _col1, _col2, _col3, _col4 + Group By Operator [GBY_144] (rows=922383 width=1436) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"],aggregations:["sum(_col5)","sum(_col6)"],keys:2001, _col1, _col2, _col3, _col4 + Select Operator [SEL_142] (rows=922383 width=1436) Output:["_col1","_col2","_col3","_col4","_col5","_col6"] - Merge Join Operator [MERGEJOIN_255] (rows=307461 width=1436) - Conds:RS_114._col2, _col1=RS_115._col1, _col0(Left Outer),Output:["_col3","_col4","_col6","_col7","_col8","_col10","_col15","_col16"] - <-Map 41 [SIMPLE_EDGE] - SHUFFLE [RS_115] - PartitionCols:_col1, _col0 - Select Operator [SEL_107] (rows=1 width=0) - Output:["_col0","_col1","_col2","_col3"] - Filter Operator [FIL_236] (rows=1 width=0) - predicate:sr_item_sk is not null - TableScan [TS_105] (rows=1 width=0) - default@store_returns,store_returns,Tbl:PARTIAL,Col:NONE,Output:["sr_item_sk","sr_ticket_number","sr_return_quantity","sr_return_amt"] - <-Reducer 37 [SIMPLE_EDGE] - SHUFFLE [RS_114] - PartitionCols:_col2, _col1 - Merge Join Operator [MERGEJOIN_254] (rows=279510 width=1436) - Conds:RS_111._col0=RS_112._col0(Inner),Output:["_col1","_col2","_col3","_col4","_col6","_col7","_col8","_col10"] - <-Map 40 [SIMPLE_EDGE] - SHUFFLE [RS_112] - PartitionCols:_col0 - Select Operator [SEL_104] (rows=36524 width=1119) - Output:["_col0"] - Filter Operator [FIL_235] (rows=36524 width=1119) - predicate:((d_year = 2001) and d_date_sk is not null) - TableScan [TS_102] (rows=73049 width=1119) - default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date_sk","d_year"] - <-Reducer 36 [SIMPLE_EDGE] - SHUFFLE [RS_111] - PartitionCols:_col0 - Merge Join Operator [MERGEJOIN_253] (rows=254100 width=1436) - Conds:RS_108._col1=RS_109._col0(Inner),Output:["_col0","_col1","_col2","_col3","_col4","_col6","_col7","_col8","_col10"] - <-Map 35 [SIMPLE_EDGE] - SHUFFLE [RS_108] - PartitionCols:_col1 - Select Operator [SEL_98] (rows=1 width=0) - Output:["_col0","_col1","_col2","_col3","_col4"] - Filter Operator [FIL_233] (rows=1 width=0) - predicate:(ss_item_sk is not null and ss_sold_date_sk is not null) - TableScan [TS_96] (rows=1 width=0) - default@store_sales,store_sales,Tbl:PARTIAL,Col:NONE,Output:["ss_sold_date_sk","ss_item_sk","ss_ticket_number","ss_quantity","ss_ext_sales_price"] - <-Map 39 [SIMPLE_EDGE] - SHUFFLE [RS_109] - PartitionCols:_col0 - Select Operator [SEL_101] (rows=231000 width=1436) - Output:["_col0","_col1","_col2","_col3","_col5"] - Filter Operator [FIL_234] (rows=231000 width=1436) - predicate:((i_category = 'Sports') and i_item_sk is not null and i_brand_id is not null and i_class_id is not null and i_category_id is not null and i_manufact_id is not null) - TableScan [TS_99] (rows=462000 width=1436) - default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_item_sk","i_brand_id","i_class_id","i_category_id","i_category","i_manufact_id"] - <-Reducer 45 [CONTAINS] - Reduce Output Operator [RS_145] - PartitionCols:_col0, _col1, _col2, _col3, _col4 - Group By Operator [GBY_144] (rows=922383 width=1436) - Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"],aggregations:["sum(_col5)","sum(_col6)"],keys:_col0, _col1, _col2, _col3, _col4 - Select Operator [SEL_142] (rows=922383 width=1436) - Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"] - Select Operator [SEL_141] (rows=307461 width=1436) + Select Operator [SEL_117] (rows=307461 width=1436) + Output:["_col1","_col2","_col3","_col4","_col5","_col6"] + Merge Join Operator [MERGEJOIN_255] (rows=307461 width=1436) + Conds:RS_114._col2, _col1=RS_115._col1, _col0(Left Outer),Output:["_col3","_col4","_col6","_col7","_col8","_col10","_col15","_col16"] + <-Map 41 [SIMPLE_EDGE] + SHUFFLE [RS_115] + PartitionCols:_col1, _col0 + Select Operator [SEL_107] (rows=1 width=0) + Output:["_col0","_col1","_col2","_col3"] + Filter Operator [FIL_236] (rows=1 width=0) + predicate:sr_item_sk is not null + TableScan [TS_105] (rows=1 width=0) + default@store_returns,store_returns,Tbl:PARTIAL,Col:NONE,Output:["sr_item_sk","sr_ticket_number","sr_return_quantity","sr_return_amt"] + <-Reducer 37 [SIMPLE_EDGE] + SHUFFLE [RS_114] + PartitionCols:_col2, _col1 + Merge Join Operator [MERGEJOIN_254] (rows=279510 width=1436) + Conds:RS_111._col0=RS_112._col0(Inner),Output:["_col1","_col2","_col3","_col4","_col6","_col7","_col8","_col10"] + <-Map 40 [SIMPLE_EDGE] + SHUFFLE [RS_112] + PartitionCols:_col0 + Select Operator [SEL_104] (rows=36524 width=1119) + Output:["_col0"] + Filter Operator [FIL_235] (rows=36524 width=1119) + predicate:((d_year = 2001) and d_date_sk is not null) + TableScan [TS_102] (rows=73049 width=1119) + default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date_sk","d_year"] + <-Reducer 36 [SIMPLE_EDGE] + SHUFFLE [RS_111] + PartitionCols:_col0 + Merge Join Operator [MERGEJOIN_253] (rows=254100 width=1436) + Conds:RS_108._col1=RS_109._col0(Inner),Output:["_col0","_col1","_col2","_col3","_col4","_col6","_col7","_col8","_col10"] + <-Map 35 [SIMPLE_EDGE] + SHUFFLE [RS_108] + PartitionCols:_col1 + Select Operator [SEL_98] (rows=1 width=0) + Output:["_col0","_col1","_col2","_col3","_col4"] + Filter Operator [FIL_233] (rows=1 width=0) + predicate:(ss_item_sk is not null and ss_sold_date_sk is not null) + TableScan [TS_96] (rows=1 width=0) + default@store_sales,store_sales,Tbl:PARTIAL,Col:NONE,Output:["ss_sold_date_sk","ss_item_sk","ss_ticket_number","ss_quantity","ss_ext_sales_price"] + <-Map 39 [SIMPLE_EDGE] + SHUFFLE [RS_109] + PartitionCols:_col0 + Select Operator [SEL_101] (rows=231000 width=1436) + Output:["_col0","_col1","_col2","_col3","_col5"] + Filter Operator [FIL_234] (rows=231000 width=1436) + predicate:((i_category = 'Sports') and i_item_sk is not null and i_brand_id is not null and i_class_id is not null and i_category_id is not null and i_manufact_id is not null) + TableScan [TS_99] (rows=462000 width=1436) + default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_item_sk","i_brand_id","i_class_id","i_category_id","i_category","i_manufact_id"] + <-Reducer 45 [CONTAINS] + Reduce Output Operator [RS_145] + PartitionCols:2001, _col1, _col2, _col3, _col4 + Group By Operator [GBY_144] (rows=922383 width=1436) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"],aggregations:["sum(_col5)","sum(_col6)"],keys:2001, _col1, _col2, _col3, _col4 + Select Operator [SEL_142] (rows=922383 width=1436) Output:["_col1","_col2","_col3","_col4","_col5","_col6"] - Merge Join Operator [MERGEJOIN_258] (rows=307461 width=1436) - Conds:RS_138._col2, _col1=RS_139._col1, _col0(Left Outer),Output:["_col3","_col4","_col6","_col7","_col8","_col10","_col15","_col16"] - <-Map 48 [SIMPLE_EDGE] - SHUFFLE [RS_139] - PartitionCols:_col1, _col0 - Select Operator [SEL_131] (rows=1 width=0) - Output:["_col0","_col1","_col2","_col3"] - Filter Operator [FIL_240] (rows=1 width=0) - predicate:wr_item_sk is not null - TableScan [TS_129] (rows=1 width=0) - default@web_returns,web_returns,Tbl:PARTIAL,Col:NONE,Output:["wr_item_sk","wr_order_number","wr_return_quantity","wr_return_amt"] - <-Reducer 44 [SIMPLE_EDGE] - SHUFFLE [RS_138] - PartitionCols:_col2, _col1 - Merge Join Operator [MERGEJOIN_257] (rows=279510 width=1436) - Conds:RS_135._col0=RS_136._col0(Inner),Output:["_col1","_col2","_col3","_col4","_col6","_col7","_col8","_col10"] - <-Map 47 [SIMPLE_EDGE] - SHUFFLE [RS_136] - PartitionCols:_col0 - Select Operator [SEL_128] (rows=36524 width=1119) - Output:["_col0"] - Filter Operator [FIL_239] (rows=36524 width=1119) - predicate:((d_year = 2001) and d_date_sk is not null) - TableScan [TS_126] (rows=73049 width=1119) - default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date_sk","d_year"] - <-Reducer 43 [SIMPLE_EDGE] - SHUFFLE [RS_135] - PartitionCols:_col0 - Merge Join Operator [MERGEJOIN_256] (rows=254100 width=1436) - Conds:RS_132._col1=RS_133._col0(Inner),Output:["_col0","_col1","_col2","_col3","_col4","_col6","_col7","_col8","_col10"] - <-Map 42 [SIMPLE_EDGE] - SHUFFLE [RS_132] - PartitionCols:_col1 - Select Operator [SEL_122] (rows=1 width=0) - Output:["_col0","_col1","_col2","_col3","_col4"] - Filter Operator [FIL_237] (rows=1 width=0) - predicate:(ws_item_sk is not null and ws_sold_date_sk is not null) - TableScan [TS_120] (rows=1 width=0) - default@web_sales,web_sales,Tbl:PARTIAL,Col:NONE,Output:["ws_sold_date_sk","ws_item_sk","ws_order_number","ws_quantity","ws_ext_sales_price"] - <-Map 46 [SIMPLE_EDGE] - SHUFFLE [RS_133] - PartitionCols:_col0 - Select Operator [SEL_125] (rows=231000 width=1436) - Output:["_col0","_col1","_col2","_col3","_col5"] - Filter Operator [FIL_238] (rows=231000 width=1436) - predicate:((i_category = 'Sports') and i_item_sk is not null and i_brand_id is not null and i_class_id is not null and i_category_id is not null and i_manufact_id is not null) - TableScan [TS_123] (rows=462000 width=1436) - default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_item_sk","i_brand_id","i_class_id","i_category_id","i_category","i_manufact_id"] + Select Operator [SEL_141] (rows=307461 width=1436) + Output:["_col1","_col2","_col3","_col4","_col5","_col6"] + Merge Join Operator [MERGEJOIN_258] (rows=307461 width=1436) + Conds:RS_138._col2, _col1=RS_139._col1, _col0(Left Outer),Output:["_col3","_col4","_col6","_col7","_col8","_col10","_col15","_col16"] + <-Map 48 [SIMPLE_EDGE] + SHUFFLE [RS_139] + PartitionCols:_col1, _col0 + Select Operator [SEL_131] (rows=1 width=0) + Output:["_col0","_col1","_col2","_col3"] + Filter Operator [FIL_240] (rows=1 width=0) + predicate:wr_item_sk is not null + TableScan [TS_129] (rows=1 width=0) + default@web_returns,web_returns,Tbl:PARTIAL,Col:NONE,Output:["wr_item_sk","wr_order_number","wr_return_quantity","wr_return_amt"] + <-Reducer 44 [SIMPLE_EDGE] + SHUFFLE [RS_138] + PartitionCols:_col2, _col1 + Merge Join Operator [MERGEJOIN_257] (rows=279510 width=1436) + Conds:RS_135._col0=RS_136._col0(Inner),Output:["_col1","_col2","_col3","_col4","_col6","_col7","_col8","_col10"] + <-Map 47 [SIMPLE_EDGE] + SHUFFLE [RS_136] + PartitionCols:_col0 + Select Operator [SEL_128] (rows=36524 width=1119) + Output:["_col0"] + Filter Operator [FIL_239] (rows=36524 width=1119) + predicate:((d_year = 2001) and d_date_sk is not null) + TableScan [TS_126] (rows=73049 width=1119) + default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date_sk","d_year"] + <-Reducer 43 [SIMPLE_EDGE] + SHUFFLE [RS_135] + PartitionCols:_col0 + Merge Join Operator [MERGEJOIN_256] (rows=254100 width=1436) + Conds:RS_132._col1=RS_133._col0(Inner),Output:["_col0","_col1","_col2","_col3","_col4","_col6","_col7","_col8","_col10"] + <-Map 42 [SIMPLE_EDGE] + SHUFFLE [RS_132] + PartitionCols:_col1 + Select Operator [SEL_122] (rows=1 width=0) + Output:["_col0","_col1","_col2","_col3","_col4"] + Filter Operator [FIL_237] (rows=1 width=0) + predicate:(ws_item_sk is not null and ws_sold_date_sk is not null) + TableScan [TS_120] (rows=1 width=0) + default@web_sales,web_sales,Tbl:PARTIAL,Col:NONE,Output:["ws_sold_date_sk","ws_item_sk","ws_order_number","ws_quantity","ws_ext_sales_price"] + <-Map 46 [SIMPLE_EDGE] + SHUFFLE [RS_133] + PartitionCols:_col0 + Select Operator [SEL_125] (rows=231000 width=1436) + Output:["_col0","_col1","_col2","_col3","_col5"] + Filter Operator [FIL_238] (rows=231000 width=1436) + predicate:((i_category = 'Sports') and i_item_sk is not null and i_brand_id is not null and i_class_id is not null and i_category_id is not null and i_manufact_id is not null) + TableScan [TS_123] (rows=462000 width=1436) + default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_item_sk","i_brand_id","i_class_id","i_category_id","i_category","i_manufact_id"] <-Reducer 6 [SIMPLE_EDGE] SHUFFLE [RS_148] PartitionCols:_col1, _col2, _col3, _col4 - Group By Operator [GBY_72] (rows=461191 width=1436) - Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"],aggregations:["sum(VALUE._col0)","sum(VALUE._col1)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3, KEY._col4 - <-Union 5 [SIMPLE_EDGE] - <-Reducer 15 [CONTAINS] - Reduce Output Operator [RS_71] - PartitionCols:_col0, _col1, _col2, _col3, _col4 - Group By Operator [GBY_70] (rows=922383 width=1436) - Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"],aggregations:["sum(_col5)","sum(_col6)"],keys:_col0, _col1, _col2, _col3, _col4 - Select Operator [SEL_68] (rows=922383 width=1436) - Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"] - Select Operator [SEL_43] (rows=307461 width=1436) + Select Operator [SEL_73] (rows=461191 width=1436) + Output:["_col1","_col2","_col3","_col4","_col5","_col6"] + Group By Operator [GBY_72] (rows=461191 width=1436) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"],aggregations:["sum(VALUE._col0)","sum(VALUE._col1)"],keys:2002, KEY._col1, KEY._col2, KEY._col3, KEY._col4 + <-Union 5 [SIMPLE_EDGE] + <-Reducer 15 [CONTAINS] + Reduce Output Operator [RS_71] + PartitionCols:2002, _col1, _col2, _col3, _col4 + Group By Operator [GBY_70] (rows=922383 width=1436) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"],aggregations:["sum(_col5)","sum(_col6)"],keys:2002, _col1, _col2, _col3, _col4 + Select Operator [SEL_68] (rows=922383 width=1436) Output:["_col1","_col2","_col3","_col4","_col5","_col6"] - Merge Join Operator [MERGEJOIN_246] (rows=307461 width=1436) - Conds:RS_40._col2, _col1=RS_41._col1, _col0(Left Outer),Output:["_col3","_col4","_col6","_col7","_col8","_col10","_col15","_col16"] - <-Map 18 [SIMPLE_EDGE] - SHUFFLE [RS_41] - PartitionCols:_col1, _col0 - Select Operator [SEL_33] (rows=1 width=0) - Output:["_col0","_col1","_col2","_col3"] - Filter Operator [FIL_224] (rows=1 width=0) - predicate:sr_item_sk is not null - TableScan [TS_31] (rows=1 width=0) - default@store_returns,store_returns,Tbl:PARTIAL,Col:NONE,Output:["sr_item_sk","sr_ticket_number","sr_return_quantity","sr_return_amt"] - <-Reducer 14 [SIMPLE_EDGE] - SHUFFLE [RS_40] - PartitionCols:_col2, _col1 - Merge Join Operator [MERGEJOIN_245] (rows=279510 width=1436) - Conds:RS_37._col0=RS_38._col0(Inner),Output:["_col1","_col2","_col3","_col4","_col6","_col7","_col8","_col10"] - <-Map 17 [SIMPLE_EDGE] - SHUFFLE [RS_38] - PartitionCols:_col0 - Select Operator [SEL_30] (rows=36524 width=1119) - Output:["_col0"] - Filter Operator [FIL_223] (rows=36524 width=1119) - predicate:((d_year = 2002) and d_date_sk is not null) - TableScan [TS_28] (rows=73049 width=1119) - default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date_sk","d_year"] - <-Reducer 13 [SIMPLE_EDGE] - SHUFFLE [RS_37] - PartitionCols:_col0 - Merge Join Operator [MERGEJOIN_244] (rows=254100 width=1436) - Conds:RS_34._col1=RS_35._col0(Inner),Output:["_col0","_col1","_col2","_col3","_col4","_col6","_col7","_col8","_col10"] - <-Map 12 [SIMPLE_EDGE] - SHUFFLE [RS_34] - PartitionCols:_col1 - Select Operator [SEL_24] (rows=1 width=0) - Output:["_col0","_col1","_col2","_col3","_col4"] - Filter Operator [FIL_221] (rows=1 width=0) - predicate:(ss_item_sk is not null and ss_sold_date_sk is not null) - TableScan [TS_22] (rows=1 width=0) - default@store_sales,store_sales,Tbl:PARTIAL,Col:NONE,Output:["ss_sold_date_sk","ss_item_sk","ss_ticket_number","ss_quantity","ss_ext_sales_price"] - <-Map 16 [SIMPLE_EDGE] - SHUFFLE [RS_35] - PartitionCols:_col0 - Select Operator [SEL_27] (rows=231000 width=1436) - Output:["_col0","_col1","_col2","_col3","_col5"] - Filter Operator [FIL_222] (rows=231000 width=1436) - predicate:((i_category = 'Sports') and i_item_sk is not null and i_brand_id is not null and i_class_id is not null and i_category_id is not null and i_manufact_id is not null) - TableScan [TS_25] (rows=462000 width=1436) - default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_item_sk","i_brand_id","i_class_id","i_category_id","i_category","i_manufact_id"] - <-Reducer 22 [CONTAINS] - Reduce Output Operator [RS_71] - PartitionCols:_col0, _col1, _col2, _col3, _col4 - Group By Operator [GBY_70] (rows=922383 width=1436) - Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"],aggregations:["sum(_col5)","sum(_col6)"],keys:_col0, _col1, _col2, _col3, _col4 - Select Operator [SEL_68] (rows=922383 width=1436) - Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"] - Select Operator [SEL_67] (rows=307461 width=1436) + Select Operator [SEL_43] (rows=307461 width=1436) + Output:["_col1","_col2","_col3","_col4","_col5","_col6"] + Merge Join Operator [MERGEJOIN_246] (rows=307461 width=1436) + Conds:RS_40._col2, _col1=RS_41._col1, _col0(Left Outer),Output:["_col3","_col4","_col6","_col7","_col8","_col10","_col15","_col16"] + <-Map 18 [SIMPLE_EDGE] + SHUFFLE [RS_41] + PartitionCols:_col1, _col0 + Select Operator [SEL_33] (rows=1 width=0) + Output:["_col0","_col1","_col2","_col3"] + Filter Operator [FIL_224] (rows=1 width=0) + predicate:sr_item_sk is not null + TableScan [TS_31] (rows=1 width=0) + default@store_returns,store_returns,Tbl:PARTIAL,Col:NONE,Output:["sr_item_sk","sr_ticket_number","sr_return_quantity","sr_return_amt"] + <-Reducer 14 [SIMPLE_EDGE] + SHUFFLE [RS_40] + PartitionCols:_col2, _col1 + Merge Join Operator [MERGEJOIN_245] (rows=279510 width=1436) + Conds:RS_37._col0=RS_38._col0(Inner),Output:["_col1","_col2","_col3","_col4","_col6","_col7","_col8","_col10"] + <-Map 17 [SIMPLE_EDGE] + SHUFFLE [RS_38] + PartitionCols:_col0 + Select Operator [SEL_30] (rows=36524 width=1119) + Output:["_col0"] + Filter Operator [FIL_223] (rows=36524 width=1119) + predicate:((d_year = 2002) and d_date_sk is not null) + TableScan [TS_28] (rows=73049 width=1119) + default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date_sk","d_year"] + <-Reducer 13 [SIMPLE_EDGE] + SHUFFLE [RS_37] + PartitionCols:_col0 + Merge Join Operator [MERGEJOIN_244] (rows=254100 width=1436) + Conds:RS_34._col1=RS_35._col0(Inner),Output:["_col0","_col1","_col2","_col3","_col4","_col6","_col7","_col8","_col10"] + <-Map 12 [SIMPLE_EDGE] + SHUFFLE [RS_34] + PartitionCols:_col1 + Select Operator [SEL_24] (rows=1 width=0) + Output:["_col0","_col1","_col2","_col3","_col4"] + Filter Operator [FIL_221] (rows=1 width=0) + predicate:(ss_item_sk is not null and ss_sold_date_sk is not null) + TableScan [TS_22] (rows=1 width=0) + default@store_sales,store_sales,Tbl:PARTIAL,Col:NONE,Output:["ss_sold_date_sk","ss_item_sk","ss_ticket_number","ss_quantity","ss_ext_sales_price"] + <-Map 16 [SIMPLE_EDGE] + SHUFFLE [RS_35] + PartitionCols:_col0 + Select Operator [SEL_27] (rows=231000 width=1436) + Output:["_col0","_col1","_col2","_col3","_col5"] + Filter Operator [FIL_222] (rows=231000 width=1436) + predicate:((i_category = 'Sports') and i_item_sk is not null and i_brand_id is not null and i_class_id is not null and i_category_id is not null and i_manufact_id is not null) + TableScan [TS_25] (rows=462000 width=1436) + default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_item_sk","i_brand_id","i_class_id","i_category_id","i_category","i_manufact_id"] + <-Reducer 22 [CONTAINS] + Reduce Output Operator [RS_71] + PartitionCols:2002, _col1, _col2, _col3, _col4 + Group By Operator [GBY_70] (rows=922383 width=1436) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"],aggregations:["sum(_col5)","sum(_col6)"],keys:2002, _col1, _col2, _col3, _col4 + Select Operator [SEL_68] (rows=922383 width=1436) Output:["_col1","_col2","_col3","_col4","_col5","_col6"] - Merge Join Operator [MERGEJOIN_249] (rows=307461 width=1436) - Conds:RS_64._col2, _col1=RS_65._col1, _col0(Left Outer),Output:["_col3","_col4","_col6","_col7","_col8","_col10","_col15","_col16"] - <-Map 25 [SIMPLE_EDGE] - SHUFFLE [RS_65] - PartitionCols:_col1, _col0 - Select Operator [SEL_57] (rows=1 width=0) - Output:["_col0","_col1","_col2","_col3"] - Filter Operator [FIL_228] (rows=1 width=0) - predicate:wr_item_sk is not null - TableScan [TS_55] (rows=1 width=0) - default@web_returns,web_returns,Tbl:PARTIAL,Col:NONE,Output:["wr_item_sk","wr_order_number","wr_return_quantity","wr_return_amt"] - <-Reducer 21 [SIMPLE_EDGE] - SHUFFLE [RS_64] - PartitionCols:_col2, _col1 - Merge Join Operator [MERGEJOIN_248] (rows=279510 width=1436) - Conds:RS_61._col0=RS_62._col0(Inner),Output:["_col1","_col2","_col3","_col4","_col6","_col7","_col8","_col10"] - <-Map 24 [SIMPLE_EDGE] - SHUFFLE [RS_62] - PartitionCols:_col0 - Select Operator [SEL_54] (rows=36524 width=1119) - Output:["_col0"] - Filter Operator [FIL_227] (rows=36524 width=1119) - predicate:((d_year = 2002) and d_date_sk is not null) - TableScan [TS_52] (rows=73049 width=1119) - default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date_sk","d_year"] - <-Reducer 20 [SIMPLE_EDGE] - SHUFFLE [RS_61] - PartitionCols:_col0 - Merge Join Operator [MERGEJOIN_247] (rows=254100 width=1436) - Conds:RS_58._col1=RS_59._col0(Inner),Output:["_col0","_col1","_col2","_col3","_col4","_col6","_col7","_col8","_col10"] - <-Map 19 [SIMPLE_EDGE] - SHUFFLE [RS_58] - PartitionCols:_col1 - Select Operator [SEL_48] (rows=1 width=0) - Output:["_col0","_col1","_col2","_col3","_col4"] - Filter Operator [FIL_225] (rows=1 width=0) - predicate:(ws_item_sk is not null and ws_sold_date_sk is not null) - TableScan [TS_46] (rows=1 width=0) - default@web_sales,web_sales,Tbl:PARTIAL,Col:NONE,Output:["ws_sold_date_sk","ws_item_sk","ws_order_number","ws_quantity","ws_ext_sales_price"] - <-Map 23 [SIMPLE_EDGE] - SHUFFLE [RS_59] - PartitionCols:_col0 - Select Operator [SEL_51] (rows=231000 width=1436) - Output:["_col0","_col1","_col2","_col3","_col5"] - Filter Operator [FIL_226] (rows=231000 width=1436) - predicate:((i_category = 'Sports') and i_item_sk is not null and i_brand_id is not null and i_class_id is not null and i_category_id is not null and i_manufact_id is not null) - TableScan [TS_49] (rows=462000 width=1436) - default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_item_sk","i_brand_id","i_class_id","i_category_id","i_category","i_manufact_id"] - <-Reducer 4 [CONTAINS] - Reduce Output Operator [RS_71] - PartitionCols:_col0, _col1, _col2, _col3, _col4 - Group By Operator [GBY_70] (rows=922383 width=1436) - Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"],aggregations:["sum(_col5)","sum(_col6)"],keys:_col0, _col1, _col2, _col3, _col4 - Select Operator [SEL_68] (rows=922383 width=1436) - Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"] - Select Operator [SEL_21] (rows=307461 width=1436) + Select Operator [SEL_67] (rows=307461 width=1436) + Output:["_col1","_col2","_col3","_col4","_col5","_col6"] + Merge Join Operator [MERGEJOIN_249] (rows=307461 width=1436) + Conds:RS_64._col2, _col1=RS_65._col1, _col0(Left Outer),Output:["_col3","_col4","_col6","_col7","_col8","_col10","_col15","_col16"] + <-Map 25 [SIMPLE_EDGE] + SHUFFLE [RS_65] + PartitionCols:_col1, _col0 + Select Operator [SEL_57] (rows=1 width=0) + Output:["_col0","_col1","_col2","_col3"] + Filter Operator [FIL_228] (rows=1 width=0) + predicate:wr_item_sk is not null + TableScan [TS_55] (rows=1 width=0) + default@web_returns,web_returns,Tbl:PARTIAL,Col:NONE,Output:["wr_item_sk","wr_order_number","wr_return_quantity","wr_return_amt"] + <-Reducer 21 [SIMPLE_EDGE] + SHUFFLE [RS_64] + PartitionCols:_col2, _col1 + Merge Join Operator [MERGEJOIN_248] (rows=279510 width=1436) + Conds:RS_61._col0=RS_62._col0(Inner),Output:["_col1","_col2","_col3","_col4","_col6","_col7","_col8","_col10"] + <-Map 24 [SIMPLE_EDGE] + SHUFFLE [RS_62] + PartitionCols:_col0 + Select Operator [SEL_54] (rows=36524 width=1119) + Output:["_col0"] + Filter Operator [FIL_227] (rows=36524 width=1119) + predicate:((d_year = 2002) and d_date_sk is not null) + TableScan [TS_52] (rows=73049 width=1119) + default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date_sk","d_year"] + <-Reducer 20 [SIMPLE_EDGE] + SHUFFLE [RS_61] + PartitionCols:_col0 + Merge Join Operator [MERGEJOIN_247] (rows=254100 width=1436) + Conds:RS_58._col1=RS_59._col0(Inner),Output:["_col0","_col1","_col2","_col3","_col4","_col6","_col7","_col8","_col10"] + <-Map 19 [SIMPLE_EDGE] + SHUFFLE [RS_58] + PartitionCols:_col1 + Select Operator [SEL_48] (rows=1 width=0) + Output:["_col0","_col1","_col2","_col3","_col4"] + Filter Operator [FIL_225] (rows=1 width=0) + predicate:(ws_item_sk is not null and ws_sold_date_sk is not null) + TableScan [TS_46] (rows=1 width=0) + default@web_sales,web_sales,Tbl:PARTIAL,Col:NONE,Output:["ws_sold_date_sk","ws_item_sk","ws_order_number","ws_quantity","ws_ext_sales_price"] + <-Map 23 [SIMPLE_EDGE] + SHUFFLE [RS_59] + PartitionCols:_col0 + Select Operator [SEL_51] (rows=231000 width=1436) + Output:["_col0","_col1","_col2","_col3","_col5"] + Filter Operator [FIL_226] (rows=231000 width=1436) + predicate:((i_category = 'Sports') and i_item_sk is not null and i_brand_id is not null and i_class_id is not null and i_category_id is not null and i_manufact_id is not null) + TableScan [TS_49] (rows=462000 width=1436) + default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_item_sk","i_brand_id","i_class_id","i_category_id","i_category","i_manufact_id"] + <-Reducer 4 [CONTAINS] + Reduce Output Operator [RS_71] + PartitionCols:2002, _col1, _col2, _col3, _col4 + Group By Operator [GBY_70] (rows=922383 width=1436) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6"],aggregations:["sum(_col5)","sum(_col6)"],keys:2002, _col1, _col2, _col3, _col4 + Select Operator [SEL_68] (rows=922383 width=1436) Output:["_col1","_col2","_col3","_col4","_col5","_col6"] - Merge Join Operator [MERGEJOIN_243] (rows=307461 width=1436) - Conds:RS_18._col2, _col1=RS_19._col1, _col0(Left Outer),Output:["_col3","_col4","_col6","_col7","_col8","_col10","_col15","_col16"] - <-Map 11 [SIMPLE_EDGE] - SHUFFLE [RS_19] - PartitionCols:_col1, _col0 - Select Operator [SEL_11] (rows=1 width=0) - Output:["_col0","_col1","_col2","_col3"] - Filter Operator [FIL_220] (rows=1 width=0) - predicate:cr_item_sk is not null - TableScan [TS_9] (rows=1 width=0) - default@catalog_returns,catalog_returns,Tbl:PARTIAL,Col:NONE,Output:["cr_item_sk","cr_order_number","cr_return_quantity","cr_return_amount"] - <-Reducer 3 [SIMPLE_EDGE] - SHUFFLE [RS_18] - PartitionCols:_col2, _col1 - Merge Join Operator [MERGEJOIN_242] (rows=279510 width=1436) - Conds:RS_15._col0=RS_16._col0(Inner),Output:["_col1","_col2","_col3","_col4","_col6","_col7","_col8","_col10"] - <-Map 10 [SIMPLE_EDGE] - SHUFFLE [RS_16] - PartitionCols:_col0 - Select Operator [SEL_8] (rows=36524 width=1119) - Output:["_col0"] - Filter Operator [FIL_219] (rows=36524 width=1119) - predicate:((d_year = 2002) and d_date_sk is not null) - TableScan [TS_6] (rows=73049 width=1119) - default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date_sk","d_year"] - <-Reducer 2 [SIMPLE_EDGE] - SHUFFLE [RS_15] - PartitionCols:_col0 - Merge Join Operator [MERGEJOIN_241] (rows=254100 width=1436) - Conds:RS_12._col1=RS_13._col0(Inner),Output:["_col0","_col1","_col2","_col3","_col4","_col6","_col7","_col8","_col10"] - <-Map 1 [SIMPLE_EDGE] - SHUFFLE [RS_12] - PartitionCols:_col1 - Select Operator [SEL_2] (rows=1 width=0) - Output:["_col0","_col1","_col2","_col3","_col4"] - Filter Operator [FIL_217] (rows=1 width=0) - predicate:(cs_item_sk is not null and cs_sold_date_sk is not null) - TableScan [TS_0] (rows=1 width=0) - default@catalog_sales,catalog_sales,Tbl:PARTIAL,Col:NONE,Output:["cs_sold_date_sk","cs_item_sk","cs_order_number","cs_quantity","cs_ext_sales_price"] - <-Map 9 [SIMPLE_EDGE] - SHUFFLE [RS_13] - PartitionCols:_col0 - Select Operator [SEL_5] (rows=231000 width=1436) - Output:["_col0","_col1","_col2","_col3","_col5"] - Filter Operator [FIL_218] (rows=231000 width=1436) - predicate:((i_category = 'Sports') and i_item_sk is not null and i_brand_id is not null and i_class_id is not null and i_category_id is not null and i_manufact_id is not null) - TableScan [TS_3] (rows=462000 width=1436) - default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_item_sk","i_brand_id","i_class_id","i_category_id","i_category","i_manufact_id"] + Select Operator [SEL_21] (rows=307461 width=1436) + Output:["_col1","_col2","_col3","_col4","_col5","_col6"] + Merge Join Operator [MERGEJOIN_243] (rows=307461 width=1436) + Conds:RS_18._col2, _col1=RS_19._col1, _col0(Left Outer),Output:["_col3","_col4","_col6","_col7","_col8","_col10","_col15","_col16"] + <-Map 11 [SIMPLE_EDGE] + SHUFFLE [RS_19] + PartitionCols:_col1, _col0 + Select Operator [SEL_11] (rows=1 width=0) + Output:["_col0","_col1","_col2","_col3"] + Filter Operator [FIL_220] (rows=1 width=0) + predicate:cr_item_sk is not null + TableScan [TS_9] (rows=1 width=0) + default@catalog_returns,catalog_returns,Tbl:PARTIAL,Col:NONE,Output:["cr_item_sk","cr_order_number","cr_return_quantity","cr_return_amount"] + <-Reducer 3 [SIMPLE_EDGE] + SHUFFLE [RS_18] + PartitionCols:_col2, _col1 + Merge Join Operator [MERGEJOIN_242] (rows=279510 width=1436) + Conds:RS_15._col0=RS_16._col0(Inner),Output:["_col1","_col2","_col3","_col4","_col6","_col7","_col8","_col10"] + <-Map 10 [SIMPLE_EDGE] + SHUFFLE [RS_16] + PartitionCols:_col0 + Select Operator [SEL_8] (rows=36524 width=1119) + Output:["_col0"] + Filter Operator [FIL_219] (rows=36524 width=1119) + predicate:((d_year = 2002) and d_date_sk is not null) + TableScan [TS_6] (rows=73049 width=1119) + default@date_dim,date_dim,Tbl:COMPLETE,Col:NONE,Output:["d_date_sk","d_year"] + <-Reducer 2 [SIMPLE_EDGE] + SHUFFLE [RS_15] + PartitionCols:_col0 + Merge Join Operator [MERGEJOIN_241] (rows=254100 width=1436) + Conds:RS_12._col1=RS_13._col0(Inner),Output:["_col0","_col1","_col2","_col3","_col4","_col6","_col7","_col8","_col10"] + <-Map 1 [SIMPLE_EDGE] + SHUFFLE [RS_12] + PartitionCols:_col1 + Select Operator [SEL_2] (rows=1 width=0) + Output:["_col0","_col1","_col2","_col3","_col4"] + Filter Operator [FIL_217] (rows=1 width=0) + predicate:(cs_item_sk is not null and cs_sold_date_sk is not null) + TableScan [TS_0] (rows=1 width=0) + default@catalog_sales,catalog_sales,Tbl:PARTIAL,Col:NONE,Output:["cs_sold_date_sk","cs_item_sk","cs_order_number","cs_quantity","cs_ext_sales_price"] + <-Map 9 [SIMPLE_EDGE] + SHUFFLE [RS_13] + PartitionCols:_col0 + Select Operator [SEL_5] (rows=231000 width=1436) + Output:["_col0","_col1","_col2","_col3","_col5"] + Filter Operator [FIL_218] (rows=231000 width=1436) + predicate:((i_category = 'Sports') and i_item_sk is not null and i_brand_id is not null and i_class_id is not null and i_category_id is not null and i_manufact_id is not null) + TableScan [TS_3] (rows=462000 width=1436) + default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_item_sk","i_brand_id","i_class_id","i_category_id","i_category","i_manufact_id"] diff --git a/ql/src/test/results/clientpositive/quotedid_basic.q.out b/ql/src/test/results/clientpositive/quotedid_basic.q.out index 9ca3f6a..76bd883 100644 --- a/ql/src/test/results/clientpositive/quotedid_basic.q.out +++ b/ql/src/test/results/clientpositive/quotedid_basic.q.out @@ -227,7 +227,7 @@ STAGE PLANS: isPivotResult: true Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE Select Operator - expressions: _col0 (type: string), _col1 (type: string), '1' (type: string), rank_window_0 (type: int) + expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), rank_window_0 (type: int) outputColumnNames: _col0, _col1, _col2, _col3 Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE File Output Operator @@ -335,7 +335,7 @@ STAGE PLANS: isPivotResult: true Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE Select Operator - expressions: _col0 (type: string), _col1 (type: string), '1' (type: string), rank_window_0 (type: int) + expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), rank_window_0 (type: int) outputColumnNames: _col0, _col1, _col2, _col3 Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column stats: NONE File Output Operator diff --git a/ql/src/test/results/clientpositive/subquery_notin_having.q.java1.7.out b/ql/src/test/results/clientpositive/subquery_notin_having.q.java1.7.out index 70f9591..5114296 100644 --- a/ql/src/test/results/clientpositive/subquery_notin_having.q.java1.7.out +++ b/ql/src/test/results/clientpositive/subquery_notin_having.q.java1.7.out @@ -619,25 +619,25 @@ STAGE PLANS: predicate: p_mfgr is null (type: boolean) Statistics: Num rows: 13 Data size: 1573 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: null (type: string), p_retailprice (type: double) - outputColumnNames: p_mfgr, p_retailprice + expressions: p_retailprice (type: double) + outputColumnNames: p_retailprice Statistics: Num rows: 13 Data size: 1573 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: max(p_retailprice), min(p_retailprice) - keys: p_mfgr (type: string) + keys: null (type: string) mode: hash outputColumnNames: _col0, _col1, _col2 Statistics: Num rows: 13 Data size: 1573 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator - key expressions: _col0 (type: string) + key expressions: null (type: string) sort order: + - Map-reduce partition columns: _col0 (type: string) + Map-reduce partition columns: null (type: string) Statistics: Num rows: 13 Data size: 1573 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: double), _col2 (type: double) Reduce Operator Tree: Group By Operator aggregations: max(VALUE._col0), min(VALUE._col1) - keys: KEY._col0 (type: string) + keys: null (type: string) mode: mergepartial outputColumnNames: _col0, _col1, _col2 Statistics: Num rows: 6 Data size: 726 Basic stats: COMPLETE Column stats: NONE