diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveAggregateJoinTransposeRule.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveAggregateJoinTransposeRule.java index ed6659c6cc..bae0d53155 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveAggregateJoinTransposeRule.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveAggregateJoinTransposeRule.java @@ -24,6 +24,7 @@ import java.util.SortedMap; import java.util.TreeMap; +import java.util.concurrent.atomic.AtomicInteger; import org.apache.calcite.linq4j.Ord; import org.apache.calcite.plan.RelOptCost; import org.apache.calcite.plan.RelOptRuleCall; @@ -55,6 +56,8 @@ import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * Planner rule that pushes an @@ -63,20 +66,16 @@ */ public class HiveAggregateJoinTransposeRule extends AggregateJoinTransposeRule { - /** Extended instance of the rule that can push down aggregate functions. */ - public static final HiveAggregateJoinTransposeRule INSTANCE = - new HiveAggregateJoinTransposeRule(HiveAggregate.class, HiveJoin.class, - HiveRelFactories.HIVE_BUILDER, true); + private static final Logger LOG = LoggerFactory.getLogger(HiveAggregateJoinTransposeRule.class); private final boolean allowFunctions; + private final AtomicInteger noColsMissingStats; /** Creates an AggregateJoinTransposeRule that may push down functions. */ - private HiveAggregateJoinTransposeRule(Class aggregateClass, - Class joinClass, - RelBuilderFactory relBuilderFactory, - boolean allowFunctions) { - super(aggregateClass, joinClass, relBuilderFactory, true); - this.allowFunctions = allowFunctions; + public HiveAggregateJoinTransposeRule(AtomicInteger noColsMissingStats) { + super(HiveAggregate.class, HiveJoin.class, HiveRelFactories.HIVE_BUILDER, true); + this.allowFunctions = true; + this.noColsMissingStats = noColsMissingStats; } @Override @@ -288,11 +287,21 @@ public void onMatch(RelOptRuleCall call) { } // Make a cost based decision to pick cheaper plan - RelNode r = relBuilder.build(); - RelOptCost afterCost = mq.getCumulativeCost(r); - RelOptCost beforeCost = mq.getCumulativeCost(aggregate); - if (afterCost.isLt(beforeCost)) { - call.transformTo(r); + try { + RelNode r = relBuilder.build(); + RelOptCost afterCost = mq.getCumulativeCost(r); + RelOptCost beforeCost = mq.getCumulativeCost(aggregate); + if (afterCost.isLt(beforeCost)) { + call.transformTo(r); + } + } catch (Exception e) { + boolean isMissingStats = noColsMissingStats.get() > 0; + if (isMissingStats) { + LOG.warn("Missing column stats (see previous messages), skipping aggregate-join transpose in CBO"); + noColsMissingStats.set(0); + } else { + throw e; + } } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveFieldTrimmerRule.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveFieldTrimmerRule.java new file mode 100644 index 0000000000..ac050df30b --- /dev/null +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveFieldTrimmerRule.java @@ -0,0 +1,93 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.hadoop.hive.ql.optimizer.calcite.rules; + +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.plan.hep.HepPlanner; +import org.apache.calcite.plan.hep.HepProgram; +import org.apache.calcite.plan.hep.HepProgramBuilder; +import org.apache.calcite.plan.hep.HepRelVertex; +import org.apache.calcite.rel.RelNode; +import org.apache.hadoop.hive.ql.optimizer.calcite.HiveRelFactories; + + +/** + * Rule that triggers the field trimmer on the root of a plan. + */ +public class HiveFieldTrimmerRule extends RelOptRule { + + private static final HepProgram PROGRAM = new HepProgramBuilder() + .addRuleInstance(HiveHepExtractRelNodeRule.INSTANCE) + .build(); + + private final boolean fetchStats; + private boolean triggered; + + public HiveFieldTrimmerRule(boolean fetchStats) { + super(operand(RelNode.class, any()), + HiveRelFactories.HIVE_BUILDER, "HiveFieldTrimmerRule"); + this.fetchStats = fetchStats; + triggered = false; + } + + @Override + public void onMatch(RelOptRuleCall call) { + if (triggered) { + // Bail out + return; + } + + RelNode node = call.rel(0); + final HepRelVertex root = (HepRelVertex) call.getPlanner().getRoot(); + if (root.getCurrentRel() != node) { + // Bail out + return; + } + // The node is the root, release the kraken! + final HepPlanner tmpPlanner = new HepPlanner(PROGRAM); + tmpPlanner.setRoot(node); + node = tmpPlanner.findBestExp(); + final HiveRelFieldTrimmer fieldTrimmer = new HiveRelFieldTrimmer(null, + relBuilderFactory.create(node.getCluster(), null), fetchStats); + call.transformTo(fieldTrimmer.trim(node)); + triggered = true; + } + + + /** + * The goal of this rule is to extract the RelNode from the + * HepRelVertex node so the trimmer can be applied correctly. + */ + private static class HiveHepExtractRelNodeRule extends RelOptRule { + + private static final HiveHepExtractRelNodeRule INSTANCE = + new HiveHepExtractRelNodeRule(); + + private HiveHepExtractRelNodeRule() { + super(operand(HepRelVertex.class, any())); + } + + @Override + public void onMatch(RelOptRuleCall call) { + final HepRelVertex rel = call.rel(0); + call.transformTo(rel.getCurrentRel()); + } + } + +} diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java index 4011d99c92..bc7048f728 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java @@ -72,7 +72,6 @@ import org.apache.calcite.rel.core.TableScan; import org.apache.calcite.rel.metadata.CachingRelMetadataProvider; import org.apache.calcite.rel.metadata.ChainedRelMetadataProvider; -import org.apache.calcite.rel.metadata.DefaultRelMetadataProvider; import org.apache.calcite.rel.metadata.JaninoRelMetadataProvider; import org.apache.calcite.rel.metadata.RelMetadataProvider; import org.apache.calcite.rel.metadata.RelMetadataQuery; @@ -182,6 +181,7 @@ import org.apache.hadoop.hive.ql.optimizer.calcite.rules.HiveDruidRules; import org.apache.hadoop.hive.ql.optimizer.calcite.rules.HiveExceptRewriteRule; import org.apache.hadoop.hive.ql.optimizer.calcite.rules.HiveExpandDistinctAggregatesRule; +import org.apache.hadoop.hive.ql.optimizer.calcite.rules.HiveFieldTrimmerRule; import org.apache.hadoop.hive.ql.optimizer.calcite.rules.HiveFilterAggregateTransposeRule; import org.apache.hadoop.hive.ql.optimizer.calcite.rules.HiveFilterJoinRule; import org.apache.hadoop.hive.ql.optimizer.calcite.rules.HiveFilterProjectTSTransposeRule; @@ -1810,7 +1810,7 @@ public RelNode apply(RelOptCluster cluster, RelOptSchema relOptSchema, SchemaPlu LOG.debug("Plan before removing subquery:\n" + RelOptUtil.toString(calciteGenPlan)); } calciteGenPlan = hepPlan(calciteGenPlan, false, mdProvider.getMetadataProvider(), null, - new HiveSubQueryRemoveRule(conf)); + HepMatchOrder.DEPTH_FIRST, new HiveSubQueryRemoveRule(conf)); if (LOG.isDebugEnabled()) { LOG.debug("Plan just after removing subquery:\n" + RelOptUtil.toString(calciteGenPlan)); } @@ -1835,7 +1835,7 @@ public RelNode apply(RelOptCluster cluster, RelOptSchema relOptSchema, SchemaPlu // 2. Apply pre-join order optimizations calcitePreCboPlan = applyPreJoinOrderingTransforms(calciteGenPlan, - mdProvider.getMetadataProvider(), executorProvider); + mdProvider.getMetadataProvider(), executorProvider); // 3. Materialized view based rewriting // We disable it for CTAS and MV creation queries (trying to avoid any problem @@ -1846,190 +1846,20 @@ public RelNode apply(RelOptCluster cluster, RelOptSchema relOptSchema, SchemaPlu calcitePreCboPlan, mdProvider.getMetadataProvider(), executorProvider); } - // Get rid of sq_count_check if group by key is constant - if (conf.getBoolVar(ConfVars.HIVE_REMOVE_SQ_COUNT_CHECK)) { - perfLogger.PerfLogBegin(this.getClass().getName(), PerfLogger.OPTIMIZER); - calcitePreCboPlan = - hepPlan(calcitePreCboPlan, false, mdProvider.getMetadataProvider(), null, - HiveRemoveSqCountCheck.INSTANCE); - perfLogger.PerfLogEnd(this.getClass().getName(), PerfLogger.OPTIMIZER, "Calcite: Removing sq_count_check UDF "); - } - - // 4. Apply join order optimizations: reordering MST algorithm // If join optimizations failed because of missing stats, we continue with // the rest of optimizations if (profilesCBO.contains(ExtendedCBOProfile.JOIN_REORDERING)) { - perfLogger.PerfLogBegin(this.getClass().getName(), PerfLogger.OPTIMIZER); - - // Remove Projects between Joins so that JoinToMultiJoinRule can merge them to MultiJoin - calcitePreCboPlan = hepPlan(calcitePreCboPlan, true, mdProvider.getMetadataProvider(), executorProvider, - HepMatchOrder.BOTTOM_UP, HiveJoinProjectTransposeRule.LEFT_PROJECT_BTW_JOIN, - HiveJoinProjectTransposeRule.RIGHT_PROJECT_BTW_JOIN, HiveProjectMergeRule.INSTANCE); - try { - List list = Lists.newArrayList(); - list.add(mdProvider.getMetadataProvider()); - RelTraitSet desiredTraits = optCluster - .traitSetOf(HiveRelNode.CONVENTION, RelCollations.EMPTY); - - HepProgramBuilder hepPgmBldr = new HepProgramBuilder().addMatchOrder(HepMatchOrder.BOTTOM_UP); - hepPgmBldr.addRuleInstance(new JoinToMultiJoinRule(HiveJoin.class)); - hepPgmBldr.addRuleInstance(new LoptOptimizeJoinRule(HiveRelFactories.HIVE_BUILDER)); - - HepProgram hepPgm = hepPgmBldr.build(); - HepPlanner hepPlanner = new HepPlanner(hepPgm); - - hepPlanner.registerMetadataProviders(list); - RelMetadataProvider chainedProvider = ChainedRelMetadataProvider.of(list); - optCluster.setMetadataProvider(new CachingRelMetadataProvider(chainedProvider, hepPlanner)); - - RelNode rootRel = calcitePreCboPlan; - hepPlanner.setRoot(rootRel); - if (!calcitePreCboPlan.getTraitSet().equals(desiredTraits)) { - rootRel = hepPlanner.changeTraits(calcitePreCboPlan, desiredTraits); - } - hepPlanner.setRoot(rootRel); - - calciteOptimizedPlan = hepPlanner.findBestExp(); - } catch (Exception e) { - boolean isMissingStats = noColsMissingStats.get() > 0; - if (isMissingStats) { - LOG.warn("Missing column stats (see previous messages), skipping join reordering in CBO"); - noColsMissingStats.set(0); - calciteOptimizedPlan = calcitePreCboPlan; - disableSemJoinReordering = false; - } else { - throw e; - } - } - perfLogger.PerfLogEnd(this.getClass().getName(), PerfLogger.OPTIMIZER, "Calcite: Join Reordering"); + calciteOptimizedPlan = applyJoinOrderingTransform(calcitePreCboPlan, + mdProvider.getMetadataProvider(), executorProvider); } else { calciteOptimizedPlan = calcitePreCboPlan; disableSemJoinReordering = false; } - // 5. Run other optimizations that do not need stats - perfLogger.PerfLogBegin(this.getClass().getName(), PerfLogger.OPTIMIZER); - calciteOptimizedPlan = hepPlan(calciteOptimizedPlan, false, mdProvider.getMetadataProvider(), null, - HepMatchOrder.BOTTOM_UP, ProjectRemoveRule.INSTANCE, HiveUnionMergeRule.INSTANCE, - HiveAggregateProjectMergeRule.INSTANCE, HiveProjectMergeRule.INSTANCE_NO_FORCE, HiveJoinCommuteRule.INSTANCE); - perfLogger.PerfLogEnd(this.getClass().getName(), PerfLogger.OPTIMIZER, "Calcite: Optimizations without stats 1"); - - // 6. Run aggregate-join transpose (cost based) - // If it failed because of missing stats, we continue with - // the rest of optimizations - if (conf.getBoolVar(ConfVars.AGGR_JOIN_TRANSPOSE)) { - perfLogger.PerfLogBegin(this.getClass().getName(), PerfLogger.OPTIMIZER); - try { - calciteOptimizedPlan = hepPlan(calciteOptimizedPlan, false, mdProvider.getMetadataProvider(), null, - HepMatchOrder.BOTTOM_UP, HiveAggregateJoinTransposeRule.INSTANCE); - } catch (Exception e) { - boolean isMissingStats = noColsMissingStats.get() > 0; - if (isMissingStats) { - LOG.warn("Missing column stats (see previous messages), skipping aggregate-join transpose in CBO"); - noColsMissingStats.set(0); - } else { - throw e; - } - } - perfLogger.PerfLogEnd(this.getClass().getName(), PerfLogger.OPTIMIZER, "Calcite: Aggregate join transpose"); - } - - // 7.convert Join + GBy to semijoin - // run this rule at later stages, since many calcite rules cant deal with semijoin - if (conf.getBoolVar(ConfVars.SEMIJOIN_CONVERSION)) { - perfLogger.PerfLogBegin(this.getClass().getName(), PerfLogger.OPTIMIZER); - calciteOptimizedPlan = hepPlan(calciteOptimizedPlan, false, mdProvider.getMetadataProvider(), null, - HiveSemiJoinRule.INSTANCE_PROJECT, HiveSemiJoinRule.INSTANCE_PROJECT_SWAPPED, HiveSemiJoinRule.INSTANCE_AGGREGATE); - perfLogger.PerfLogEnd(this.getClass().getName(), PerfLogger.OPTIMIZER, "Calcite: Semijoin conversion"); - } - - // 8. convert SemiJoin + GBy to SemiJoin - perfLogger.PerfLogBegin(this.getClass().getName(), PerfLogger.OPTIMIZER); - calciteOptimizedPlan = hepPlan(calciteOptimizedPlan, false, mdProvider.getMetadataProvider(), null, - HiveRemoveGBYSemiJoinRule.INSTANCE); - perfLogger.PerfLogEnd(this.getClass().getName(), PerfLogger.OPTIMIZER, "Calcite: Removal of gby from semijoin"); - - // 9. Run rule to fix windowing issue when it is done over - // aggregation columns (HIVE-10627) - if (profilesCBO.contains(ExtendedCBOProfile.WINDOWING_POSTPROCESSING)) { - perfLogger.PerfLogBegin(this.getClass().getName(), PerfLogger.OPTIMIZER); - calciteOptimizedPlan = hepPlan(calciteOptimizedPlan, false, mdProvider.getMetadataProvider(), null, - HepMatchOrder.BOTTOM_UP, HiveWindowingFixRule.INSTANCE); - perfLogger.PerfLogEnd(this.getClass().getName(), PerfLogger.OPTIMIZER, "Calcite: Window fixing rule"); - } - - // 10. Apply Druid transformation rules - perfLogger.PerfLogBegin(this.getClass().getName(), PerfLogger.OPTIMIZER); - calciteOptimizedPlan = hepPlan(calciteOptimizedPlan, false, mdProvider.getMetadataProvider(), null, - HepMatchOrder.BOTTOM_UP, - HiveDruidRules.FILTER_DATE_RANGE_RULE, - HiveDruidRules.FILTER, HiveDruidRules.PROJECT_FILTER_TRANSPOSE, - HiveDruidRules.AGGREGATE_FILTER_TRANSPOSE, - HiveDruidRules.AGGREGATE_PROJECT, - HiveDruidRules.PROJECT, - HiveDruidRules.EXPAND_SINGLE_DISTINCT_AGGREGATES_DRUID_RULE, - HiveDruidRules.AGGREGATE, - HiveDruidRules.POST_AGGREGATION_PROJECT, - HiveDruidRules.FILTER_AGGREGATE_TRANSPOSE, - HiveDruidRules.FILTER_PROJECT_TRANSPOSE, - HiveDruidRules.HAVING_FILTER_RULE, - HiveDruidRules.SORT_PROJECT_TRANSPOSE, - HiveDruidRules.SORT, - HiveDruidRules.PROJECT_SORT_TRANSPOSE - ); - perfLogger.PerfLogEnd(this.getClass().getName(), PerfLogger.OPTIMIZER, "Calcite: Druid transformation rules"); - - if (conf.getBoolVar(ConfVars.HIVE_ENABLE_JDBC_PUSHDOWN)) { - List rules = Lists.newArrayList(); - rules.add(JDBCExpandExpressionsRule.FILTER_INSTANCE); - rules.add(JDBCExpandExpressionsRule.JOIN_INSTANCE); - rules.add(JDBCExpandExpressionsRule.PROJECT_INSTANCE); - rules.add(JDBCExtractJoinFilterRule.INSTANCE); - rules.add(JDBCAbstractSplitFilterRule.SPLIT_FILTER_ABOVE_JOIN); - rules.add(JDBCAbstractSplitFilterRule.SPLIT_FILTER_ABOVE_CONVERTER); - rules.add(JDBCFilterJoinRule.INSTANCE); - rules.add(JDBCFilterPushDownRule.INSTANCE); - rules.add(JDBCProjectPushDownRule.INSTANCE); - if (!conf.getBoolVar(ConfVars.HIVE_ENABLE_JDBC_SAFE_PUSHDOWN)) { - rules.add(JDBCJoinPushDownRule.INSTANCE); - rules.add(JDBCUnionPushDownRule.INSTANCE); - rules.add(JDBCAggregationPushDownRule.INSTANCE); - rules.add(JDBCSortPushDownRule.INSTANCE); - } - perfLogger.PerfLogBegin(this.getClass().getName(), PerfLogger.OPTIMIZER); - calciteOptimizedPlan = hepPlan(calciteOptimizedPlan, true, mdProvider.getMetadataProvider(), null, - HepMatchOrder.TOP_DOWN, rules.toArray(new RelOptRule[rules.size()])); - perfLogger.PerfLogEnd(this.getClass().getName(), PerfLogger.OPTIMIZER, "Calcite: JDBC transformation rules"); - } - - // 11. Run rules to aid in translation from Calcite tree to Hive tree - if (HiveConf.getBoolVar(conf, ConfVars.HIVE_CBO_RETPATH_HIVEOP)) { - perfLogger.PerfLogBegin(this.getClass().getName(), PerfLogger.OPTIMIZER); - // 12.1. Merge join into multijoin operators (if possible) - calciteOptimizedPlan = hepPlan(calciteOptimizedPlan, true, mdProvider.getMetadataProvider(), null, - HepMatchOrder.BOTTOM_UP, HiveJoinProjectTransposeRule.BOTH_PROJECT_INCLUDE_OUTER, - HiveJoinProjectTransposeRule.LEFT_PROJECT_INCLUDE_OUTER, - HiveJoinProjectTransposeRule.RIGHT_PROJECT_INCLUDE_OUTER, - HiveJoinToMultiJoinRule.INSTANCE, HiveProjectMergeRule.INSTANCE); - // The previous rules can pull up projections through join operators, - // thus we run the field trimmer again to push them back down - fieldTrimmer = new HiveRelFieldTrimmer(null, - HiveRelFactories.HIVE_BUILDER.create(optCluster, null)); - calciteOptimizedPlan = fieldTrimmer.trim(calciteOptimizedPlan); - calciteOptimizedPlan = hepPlan(calciteOptimizedPlan, false, mdProvider.getMetadataProvider(), null, - HepMatchOrder.BOTTOM_UP, ProjectRemoveRule.INSTANCE, - new ProjectMergeRule(false, HiveRelFactories.HIVE_BUILDER)); - calciteOptimizedPlan = hepPlan(calciteOptimizedPlan, true, mdProvider.getMetadataProvider(), null, - HiveFilterProjectTSTransposeRule.INSTANCE, HiveFilterProjectTSTransposeRule.INSTANCE_DRUID, - HiveProjectFilterPullUpConstantsRule.INSTANCE); - - // 11.2. Introduce exchange operators below join/multijoin operators - calciteOptimizedPlan = hepPlan(calciteOptimizedPlan, false, mdProvider.getMetadataProvider(), null, - HepMatchOrder.BOTTOM_UP, HiveInsertExchange4JoinRule.EXCHANGE_BELOW_JOIN, - HiveInsertExchange4JoinRule.EXCHANGE_BELOW_MULTIJOIN); - perfLogger.PerfLogEnd(this.getClass().getName(), PerfLogger.OPTIMIZER, "Calcite: Translation from Calcite tree to Hive tree"); - } + // 5. Apply post-join order optimizations + calciteOptimizedPlan = applyPostJoinOrderingTransform(calciteOptimizedPlan, + mdProvider.getMetadataProvider(), executorProvider); if (LOG.isDebugEnabled() && !conf.getBoolVar(ConfVars.HIVE_IN_TEST)) { LOG.debug("CBO Planning details:\n"); @@ -2064,37 +1894,26 @@ private RelNode applyPreJoinOrderingTransforms(RelNode basePlan, RelMetadataProv final int maxCNFNodeCount = conf.getIntVar(HiveConf.ConfVars.HIVE_CBO_CNF_NODES_LIMIT); final int minNumORClauses = conf.getIntVar(HiveConf.ConfVars.HIVEPOINTLOOKUPOPTIMIZERMIN); + final HepProgramBuilder program = new HepProgramBuilder(); + //0. SetOp rewrite - perfLogger.PerfLogBegin(this.getClass().getName(), PerfLogger.OPTIMIZER); - basePlan = hepPlan(basePlan, true, mdProvider, null, HepMatchOrder.BOTTOM_UP, + generatePartialProgram(program, true, HepMatchOrder.BOTTOM_UP, HiveProjectOverIntersectRemoveRule.INSTANCE, HiveIntersectMergeRule.INSTANCE, HiveUnionMergeRule.INSTANCE); - perfLogger.PerfLogEnd(this.getClass().getName(), PerfLogger.OPTIMIZER, - "Calcite: HiveProjectOverIntersectRemoveRule, HiveIntersectMerge and HiveUnionMergeRule rules"); - - perfLogger.PerfLogBegin(this.getClass().getName(), PerfLogger.OPTIMIZER); - basePlan = hepPlan(basePlan, false, mdProvider, executorProvider, HepMatchOrder.BOTTOM_UP, + generatePartialProgram(program, false, HepMatchOrder.DEPTH_FIRST, HiveIntersectRewriteRule.INSTANCE); - perfLogger.PerfLogEnd(this.getClass().getName(), PerfLogger.OPTIMIZER, - "Calcite: HiveIntersectRewrite rule"); - - perfLogger.PerfLogBegin(this.getClass().getName(), PerfLogger.OPTIMIZER); - basePlan = hepPlan(basePlan, false, mdProvider, executorProvider, HepMatchOrder.BOTTOM_UP, + generatePartialProgram(program, false, HepMatchOrder.DEPTH_FIRST, HiveExceptRewriteRule.INSTANCE); - perfLogger.PerfLogEnd(this.getClass().getName(), PerfLogger.OPTIMIZER, - "Calcite: HiveExceptRewrite rule"); //1. Distinct aggregate rewrite // Run this optimization early, since it is expanding the operator pipeline. if (!conf.getVar(HiveConf.ConfVars.HIVE_EXECUTION_ENGINE).equals("mr") && conf.getBoolVar(HiveConf.ConfVars.HIVEOPTIMIZEDISTINCTREWRITE)) { - perfLogger.PerfLogBegin(this.getClass().getName(), PerfLogger.OPTIMIZER); // Its not clear, if this rewrite is always performant on MR, since extra map phase // introduced for 2nd MR job may offset gains of this multi-stage aggregation. // We need a cost model for MR to enable this on MR. - basePlan = hepPlan(basePlan, true, mdProvider, executorProvider, HiveExpandDistinctAggregatesRule.INSTANCE); - perfLogger.PerfLogEnd(this.getClass().getName(), PerfLogger.OPTIMIZER, - "Calcite: Prejoin ordering transformation, Distinct aggregate rewrite"); + generatePartialProgram(program, true, HepMatchOrder.TOP_DOWN, + HiveExpandDistinctAggregatesRule.INSTANCE); } // 2. Try factoring out common filter elements & separating deterministic @@ -2102,11 +1921,8 @@ private RelNode applyPreJoinOrderingTransforms(RelNode basePlan, RelMetadataProv // add on-clauses for old style Join Syntax // Ex: select * from R1 join R2 where ((R1.x=R2.x) and R1.y<10) or // ((R1.x=R2.x) and R1.z=10)) and rand(1) < 0.1 - perfLogger.PerfLogBegin(this.getClass().getName(), PerfLogger.OPTIMIZER); - basePlan = hepPlan(basePlan, false, mdProvider, executorProvider, HepMatchOrder.ARBITRARY, + generatePartialProgram(program, false, HepMatchOrder.DEPTH_FIRST, new HivePreFilteringRule(maxCNFNodeCount)); - perfLogger.PerfLogEnd(this.getClass().getName(), PerfLogger.OPTIMIZER, - "Calcite: Prejoin ordering transformation, factor out common filter elements and separating deterministic vs non-deterministic UDF"); // 3. Run exhaustive PPD, add not null filters, transitive inference, // constant propagation, constant folding @@ -2150,35 +1966,29 @@ private RelNode applyPreJoinOrderingTransforms(RelNode basePlan, RelMetadataProv rules.add(HiveSortLimitPullUpConstantsRule.INSTANCE); rules.add(HiveUnionPullUpConstantsRule.INSTANCE); rules.add(HiveAggregatePullUpConstantsRule.INSTANCE); - perfLogger.PerfLogBegin(this.getClass().getName(), PerfLogger.OPTIMIZER); - basePlan = hepPlan(basePlan, true, mdProvider, executorProvider, HepMatchOrder.BOTTOM_UP, - rules.toArray(new RelOptRule[rules.size()])); - perfLogger.PerfLogEnd(this.getClass().getName(), PerfLogger.OPTIMIZER, - "Calcite: Prejoin ordering transformation, PPD, not null predicates, transitive inference, constant folding"); + generatePartialProgram(program, true, HepMatchOrder.BOTTOM_UP, + rules.toArray(new RelOptRule[rules.size()])); // 4. Push down limit through outer join // NOTE: We run this after PPD to support old style join syntax. // Ex: select * from R1 left outer join R2 where ((R1.x=R2.x) and R1.y<10) or // ((R1.x=R2.x) and R1.z=10)) and rand(1) < 0.1 order by R1.x limit 10 if (conf.getBoolVar(HiveConf.ConfVars.HIVE_OPTIMIZE_LIMIT_TRANSPOSE)) { - perfLogger.PerfLogBegin(this.getClass().getName(), PerfLogger.OPTIMIZER); // This should be a cost based decision, but till we enable the extended cost // model, we will use the given value for the variable final float reductionProportion = HiveConf.getFloatVar(conf, HiveConf.ConfVars.HIVE_OPTIMIZE_LIMIT_TRANSPOSE_REDUCTION_PERCENTAGE); final long reductionTuples = HiveConf.getLongVar(conf, HiveConf.ConfVars.HIVE_OPTIMIZE_LIMIT_TRANSPOSE_REDUCTION_TUPLES); - basePlan = hepPlan(basePlan, true, mdProvider, executorProvider, HiveSortMergeRule.INSTANCE, - HiveSortProjectTransposeRule.INSTANCE, HiveSortJoinReduceRule.INSTANCE, - HiveSortUnionReduceRule.INSTANCE); - basePlan = hepPlan(basePlan, true, mdProvider, executorProvider, HepMatchOrder.BOTTOM_UP, + generatePartialProgram(program, true, HepMatchOrder.TOP_DOWN, + HiveSortMergeRule.INSTANCE, HiveSortProjectTransposeRule.INSTANCE, + HiveSortJoinReduceRule.INSTANCE, HiveSortUnionReduceRule.INSTANCE); + generatePartialProgram(program, true, HepMatchOrder.BOTTOM_UP, new HiveSortRemoveRule(reductionProportion, reductionTuples), HiveProjectSortTransposeRule.INSTANCE); - perfLogger.PerfLogEnd(this.getClass().getName(), PerfLogger.OPTIMIZER, - "Calcite: Prejoin ordering transformation, Push down limit through outer join"); } - // 5. Push Down Semi Joins + // Push Down Semi Joins //TODO: Enable this later /*perfLogger.PerfLogBegin(this.getClass().getName(), PerfLogger.OPTIMIZER); basePlan = hepPlan(basePlan, true, mdProvider, executorProvider, SemiJoinJoinTransposeRule.INSTANCE, @@ -2186,39 +1996,39 @@ private RelNode applyPreJoinOrderingTransforms(RelNode basePlan, RelMetadataProv perfLogger.PerfLogEnd(this.getClass().getName(), PerfLogger.OPTIMIZER, "Calcite: Prejoin ordering transformation, Push Down Semi Joins"); */ - perfLogger.PerfLogBegin(this.getClass().getName(), PerfLogger.OPTIMIZER); - basePlan = hepPlan(basePlan, false, mdProvider, executorProvider, - HiveSortLimitRemoveRule.INSTANCE); - perfLogger.PerfLogEnd(this.getClass().getName(), PerfLogger.OPTIMIZER, - "Calcite: Trying to remove Limit and Order by"); + // 5. Try to remove limit and order by + generatePartialProgram(program, false, HepMatchOrder.DEPTH_FIRST, + HiveSortLimitRemoveRule.INSTANCE); // 6. Apply Partition Pruning - perfLogger.PerfLogBegin(this.getClass().getName(), PerfLogger.OPTIMIZER); - basePlan = hepPlan(basePlan, false, mdProvider, executorProvider, new HivePartitionPruneRule(conf)); - perfLogger.PerfLogEnd(this.getClass().getName(), PerfLogger.OPTIMIZER, - "Calcite: Prejoin ordering transformation, Partition Pruning"); + generatePartialProgram(program, false, HepMatchOrder.DEPTH_FIRST, + new HivePartitionPruneRule(conf)); // 7. Projection Pruning (this introduces select above TS & hence needs to be run last due to PP) - perfLogger.PerfLogBegin(this.getClass().getName(), PerfLogger.OPTIMIZER); - HiveRelFieldTrimmer fieldTrimmer = new HiveRelFieldTrimmer(null, - HiveRelFactories.HIVE_BUILDER.create(cluster, null), - profilesCBO.contains(ExtendedCBOProfile.JOIN_REORDERING)); - basePlan = fieldTrimmer.trim(basePlan); - perfLogger.PerfLogEnd(this.getClass().getName(), PerfLogger.OPTIMIZER, - "Calcite: Prejoin ordering transformation, Projection Pruning"); + generatePartialProgram(program, false, HepMatchOrder.TOP_DOWN, + new HiveFieldTrimmerRule(profilesCBO.contains(ExtendedCBOProfile.JOIN_REORDERING))); // 8. Rerun PPD through Project as column pruning would have introduced // DT above scans; By pushing filter just above TS, Hive can push it into // storage (incase there are filters on non partition cols). This only // matches FIL-PROJ-TS // Also merge, remove and reduce Project if possible - perfLogger.PerfLogBegin(this.getClass().getName(), PerfLogger.OPTIMIZER); - basePlan = hepPlan(basePlan, true, mdProvider, executorProvider, + generatePartialProgram(program, true, HepMatchOrder.TOP_DOWN, HiveFilterProjectTSTransposeRule.INSTANCE, HiveFilterProjectTSTransposeRule.INSTANCE_DRUID, HiveProjectFilterPullUpConstantsRule.INSTANCE, HiveProjectMergeRule.INSTANCE, ProjectRemoveRule.INSTANCE, HiveSortMergeRule.INSTANCE); + + // 9. Get rid of sq_count_check if group by key is constant + if (conf.getBoolVar(ConfVars.HIVE_REMOVE_SQ_COUNT_CHECK)) { + generatePartialProgram(program, false, HepMatchOrder.DEPTH_FIRST, + HiveRemoveSqCountCheck.INSTANCE); + } + + // Trigger program + perfLogger.PerfLogBegin(this.getClass().getName(), PerfLogger.OPTIMIZER); + basePlan = executeProgram(basePlan, program.build(), mdProvider, executorProvider); perfLogger.PerfLogEnd(this.getClass().getName(), PerfLogger.OPTIMIZER, - "Calcite: Prejoin ordering transformation, Rerun PPD"); + "Calcite: Prejoin ordering transformation"); return basePlan; } @@ -2297,14 +2107,13 @@ private RelNode copyNodeScan(RelNode scan) { if (mvRebuild) { // If it is a materialized view rebuild, we use the HepPlanner, since we only have // one MV and we would like to use it to create incremental maintenance plans - HepPlanner hepPlanner = createHepPlanner(basePlan.getCluster(), true, mdProvider, null, - HepMatchOrder.TOP_DOWN, HiveMaterializedViewRule.MATERIALIZED_VIEW_REWRITING_RULES); + final HepProgramBuilder program = new HepProgramBuilder(); + generatePartialProgram(program, true, HepMatchOrder.TOP_DOWN, + HiveMaterializedViewRule.MATERIALIZED_VIEW_REWRITING_RULES); // Add materialization for rebuild to planner assert materializations.size() == 1; - hepPlanner.addMaterialization(materializations.get(0)); // Optimize plan - hepPlanner.setRoot(basePlan); - basePlan = hepPlanner.findBestExp(); + basePlan = executeProgram(basePlan, program.build(), mdProvider, executorProvider, materializations); } else { // If this is not a rebuild, we use Volcano planner as the decision // on whether to use MVs or not and which MVs to use should be cost-based @@ -2386,6 +2195,169 @@ private RelNode copyNodeScan(RelNode scan) { return basePlan; } + /** + * Perform join reordering optimization. + * + * @param basePlan + * original plan + * @param mdProvider + * meta data provider + * @param executorProvider + * executor + * @return + */ + private RelNode applyJoinOrderingTransform(RelNode basePlan, RelMetadataProvider mdProvider, RexExecutor executorProvider) { + PerfLogger perfLogger = SessionState.getPerfLogger(); + + final HepProgramBuilder program = new HepProgramBuilder(); + // Remove Projects between Joins so that JoinToMultiJoinRule can merge them to MultiJoin + generatePartialProgram(program,true, HepMatchOrder.BOTTOM_UP, + HiveJoinProjectTransposeRule.LEFT_PROJECT_BTW_JOIN, HiveJoinProjectTransposeRule.RIGHT_PROJECT_BTW_JOIN, + HiveProjectMergeRule.INSTANCE); + // Join reordering + generatePartialProgram(program, false, HepMatchOrder.BOTTOM_UP, + new JoinToMultiJoinRule(HiveJoin.class), new LoptOptimizeJoinRule(HiveRelFactories.HIVE_BUILDER)); + + perfLogger.PerfLogBegin(this.getClass().getName(), PerfLogger.OPTIMIZER); + RelNode calciteOptimizedPlan; + try { + calciteOptimizedPlan = executeProgram(basePlan, program.build(), mdProvider, executorProvider); + } catch (Exception e) { + boolean isMissingStats = noColsMissingStats.get() > 0; + if (isMissingStats) { + LOG.warn("Missing column stats (see previous messages), skipping join reordering in CBO"); + noColsMissingStats.set(0); + calciteOptimizedPlan = basePlan; + disableSemJoinReordering = false; + } else { + throw e; + } + } + perfLogger.PerfLogEnd(this.getClass().getName(), PerfLogger.OPTIMIZER, "Calcite: Join Reordering"); + + return calciteOptimizedPlan; + } + + /** + * Perform join reordering post-optimization. + * + * @param basePlan + * original plan + * @param mdProvider + * meta data provider + * @param executorProvider + * executor + * @return + */ + private RelNode applyPostJoinOrderingTransform(RelNode basePlan, RelMetadataProvider mdProvider, RexExecutor executorProvider) { + PerfLogger perfLogger = SessionState.getPerfLogger(); + + final HepProgramBuilder program = new HepProgramBuilder(); + + // 1. Run other optimizations that do not need stats + generatePartialProgram(program, false, HepMatchOrder.DEPTH_FIRST, + ProjectRemoveRule.INSTANCE, HiveUnionMergeRule.INSTANCE, + HiveAggregateProjectMergeRule.INSTANCE, HiveProjectMergeRule.INSTANCE_NO_FORCE, + HiveJoinCommuteRule.INSTANCE); + + // 2. Run aggregate-join transpose (cost based) + // If it failed because of missing stats, we continue with + // the rest of optimizations + if (conf.getBoolVar(ConfVars.AGGR_JOIN_TRANSPOSE)) { + generatePartialProgram(program, false, HepMatchOrder.DEPTH_FIRST, + new HiveAggregateJoinTransposeRule(noColsMissingStats)); + } + + // 3. Convert Join + GBy to semijoin + // Run this rule at later stages, since many calcite rules cant deal with semijoin + if (conf.getBoolVar(ConfVars.SEMIJOIN_CONVERSION)) { + generatePartialProgram(program, false, HepMatchOrder.DEPTH_FIRST, + HiveSemiJoinRule.INSTANCE_PROJECT, HiveSemiJoinRule.INSTANCE_PROJECT_SWAPPED, + HiveSemiJoinRule.INSTANCE_AGGREGATE); + } + + // 4. convert SemiJoin + GBy to SemiJoin + generatePartialProgram(program, false, HepMatchOrder.DEPTH_FIRST, + HiveRemoveGBYSemiJoinRule.INSTANCE); + + // 5. Run rule to fix windowing issue when it is done over + // aggregation columns (HIVE-10627) + if (profilesCBO.contains(ExtendedCBOProfile.WINDOWING_POSTPROCESSING)) { + generatePartialProgram(program, false, HepMatchOrder.DEPTH_FIRST, + HiveWindowingFixRule.INSTANCE); + } + + // 6. Apply Druid transformation rules + generatePartialProgram(program, false, HepMatchOrder.DEPTH_FIRST, + HiveDruidRules.FILTER_DATE_RANGE_RULE, + HiveDruidRules.FILTER, HiveDruidRules.PROJECT_FILTER_TRANSPOSE, + HiveDruidRules.AGGREGATE_FILTER_TRANSPOSE, + HiveDruidRules.AGGREGATE_PROJECT, + HiveDruidRules.PROJECT, + HiveDruidRules.EXPAND_SINGLE_DISTINCT_AGGREGATES_DRUID_RULE, + HiveDruidRules.AGGREGATE, + HiveDruidRules.POST_AGGREGATION_PROJECT, + HiveDruidRules.FILTER_AGGREGATE_TRANSPOSE, + HiveDruidRules.FILTER_PROJECT_TRANSPOSE, + HiveDruidRules.HAVING_FILTER_RULE, + HiveDruidRules.SORT_PROJECT_TRANSPOSE, + HiveDruidRules.SORT, + HiveDruidRules.PROJECT_SORT_TRANSPOSE); + + // 7. Apply JDBC transformation rules + if (conf.getBoolVar(ConfVars.HIVE_ENABLE_JDBC_PUSHDOWN)) { + List rules = Lists.newArrayList(); + rules.add(JDBCExpandExpressionsRule.FILTER_INSTANCE); + rules.add(JDBCExpandExpressionsRule.JOIN_INSTANCE); + rules.add(JDBCExpandExpressionsRule.PROJECT_INSTANCE); + rules.add(JDBCExtractJoinFilterRule.INSTANCE); + rules.add(JDBCAbstractSplitFilterRule.SPLIT_FILTER_ABOVE_JOIN); + rules.add(JDBCAbstractSplitFilterRule.SPLIT_FILTER_ABOVE_CONVERTER); + rules.add(JDBCFilterJoinRule.INSTANCE); + rules.add(JDBCFilterPushDownRule.INSTANCE); + rules.add(JDBCProjectPushDownRule.INSTANCE); + if (!conf.getBoolVar(ConfVars.HIVE_ENABLE_JDBC_SAFE_PUSHDOWN)) { + rules.add(JDBCJoinPushDownRule.INSTANCE); + rules.add(JDBCUnionPushDownRule.INSTANCE); + rules.add(JDBCAggregationPushDownRule.INSTANCE); + rules.add(JDBCSortPushDownRule.INSTANCE); + } + generatePartialProgram(program, true, HepMatchOrder.TOP_DOWN, + rules.toArray(new RelOptRule[rules.size()])); + } + + // 8. Run rules to aid in translation from Calcite tree to Hive tree + if (HiveConf.getBoolVar(conf, ConfVars.HIVE_CBO_RETPATH_HIVEOP)) { + // 8.1. Merge join into multijoin operators (if possible) + generatePartialProgram(program, true, HepMatchOrder.BOTTOM_UP, + HiveJoinProjectTransposeRule.BOTH_PROJECT_INCLUDE_OUTER, + HiveJoinProjectTransposeRule.LEFT_PROJECT_INCLUDE_OUTER, + HiveJoinProjectTransposeRule.RIGHT_PROJECT_INCLUDE_OUTER, + HiveJoinToMultiJoinRule.INSTANCE, HiveProjectMergeRule.INSTANCE); + // The previous rules can pull up projections through join operators, + // thus we run the field trimmer again to push them back down + generatePartialProgram(program,false, HepMatchOrder.TOP_DOWN, + new HiveFieldTrimmerRule(false)); + generatePartialProgram(program, false, HepMatchOrder.DEPTH_FIRST, + ProjectRemoveRule.INSTANCE, new ProjectMergeRule(false, HiveRelFactories.HIVE_BUILDER)); + generatePartialProgram(program, true, HepMatchOrder.TOP_DOWN, + HiveFilterProjectTSTransposeRule.INSTANCE, HiveFilterProjectTSTransposeRule.INSTANCE_DRUID, + HiveProjectFilterPullUpConstantsRule.INSTANCE); + + // 8.2. Introduce exchange operators below join/multijoin operators + generatePartialProgram(program, false, HepMatchOrder.DEPTH_FIRST, + HiveInsertExchange4JoinRule.EXCHANGE_BELOW_JOIN, HiveInsertExchange4JoinRule.EXCHANGE_BELOW_MULTIJOIN); + } + + // Trigger program + perfLogger.PerfLogBegin(this.getClass().getName(), PerfLogger.OPTIMIZER); + basePlan = executeProgram(basePlan, program.build(), mdProvider, executorProvider); + perfLogger.PerfLogEnd(this.getClass().getName(), PerfLogger.OPTIMIZER, + "Calcite: Postjoin ordering transformation"); + + return basePlan; + } + private List getTablesUsed(RelNode plan) { List tablesUsed = new ArrayList<>(); new RelVisitor() { @@ -2408,52 +2380,51 @@ public void visit(RelNode node, int ordinal, RelNode parent) { * @param followPlanChanges * @param mdProvider * @param executorProvider + * @param order * @param rules * @return optimized RelNode */ + @Deprecated private RelNode hepPlan(RelNode basePlan, boolean followPlanChanges, - RelMetadataProvider mdProvider, RexExecutor executorProvider, RelOptRule... rules) { - return hepPlan(basePlan, followPlanChanges, mdProvider, executorProvider, - HepMatchOrder.TOP_DOWN, rules); + RelMetadataProvider mdProvider, RexExecutor executorProvider, HepMatchOrder order, + RelOptRule... rules) { + final HepProgramBuilder programBuilder = new HepProgramBuilder(); + generatePartialProgram(programBuilder, followPlanChanges, order, rules); + return executeProgram(basePlan, programBuilder.build(), mdProvider, executorProvider); } /** - * Run the HEP Planner with the given rule set. + * Generate a HEP program with the given rule set. * - * @param basePlan - * @param followPlanChanges - * @param mdProvider - * @param executorProvider + * @param isCollection * @param order * @param rules - * @return optimized RelNode + * @return HEP program */ - private RelNode hepPlan(RelNode basePlan, boolean followPlanChanges, - RelMetadataProvider mdProvider, RexExecutor executorProvider, - HepMatchOrder order, RelOptRule... rules) { - HepPlanner planner = createHepPlanner(basePlan.getCluster(), followPlanChanges, - mdProvider, executorProvider, order, rules); - planner.setRoot(basePlan); - return planner.findBestExp(); - } - - private HepPlanner createHepPlanner(RelOptCluster cluster, boolean followPlanChanges, - RelMetadataProvider mdProvider, RexExecutor executorProvider, HepMatchOrder order, + private void generatePartialProgram(HepProgramBuilder programBuilder, boolean isCollection, HepMatchOrder order, RelOptRule... rules) { - HepProgramBuilder programBuilder = new HepProgramBuilder(); - if (followPlanChanges) { - programBuilder.addMatchOrder(order); - programBuilder = programBuilder.addRuleCollection(ImmutableList.copyOf(rules)); + programBuilder.addMatchOrder(order); + if (isCollection) { + programBuilder.addRuleCollection(ImmutableList.copyOf(rules)); } else { - // TODO: Should this be also TOP_DOWN? for (RelOptRule r : rules) { programBuilder.addRuleInstance(r); } } + } + + private RelNode executeProgram(RelNode basePlan, HepProgram program, + RelMetadataProvider mdProvider, RexExecutor executorProvider) { + return executeProgram(basePlan, program, mdProvider, executorProvider, null); + } + + private RelNode executeProgram(RelNode basePlan, HepProgram program, + RelMetadataProvider mdProvider, RexExecutor executorProvider, + List materializations) { // Create planner and copy context - HepPlanner planner = new HepPlanner(programBuilder.build(), - cluster.getPlanner().getContext()); + HepPlanner planner = new HepPlanner(program, + basePlan.getCluster().getPlanner().getContext()); List list = Lists.newArrayList(); list.add(mdProvider); @@ -2469,7 +2440,16 @@ private HepPlanner createHepPlanner(RelOptCluster cluster, boolean followPlanCha planner.setExecutor(executorProvider); } - return planner; + if (materializations != null) { + // Add materializations to planner + for (RelOptMaterialization materialization : materializations) { + planner.addMaterialization(materialization); + } + } + + planner.setRoot(basePlan); + + return planner.findBestExp(); } @SuppressWarnings("nls") diff --git a/ql/src/test/results/clientpositive/llap/external_jdbc_table_perf.q.out b/ql/src/test/results/clientpositive/llap/external_jdbc_table_perf.q.out index c1314c62a8..2a78ae91f8 100644 --- a/ql/src/test/results/clientpositive/llap/external_jdbc_table_perf.q.out +++ b/ql/src/test/results/clientpositive/llap/external_jdbc_table_perf.q.out @@ -1480,41 +1480,45 @@ STAGE PLANS: TableScan alias: inventory properties: - hive.sql.query SELECT "t23"."w_warehouse_sk", "t23"."i_item_sk", CAST(1 AS INTEGER) AS "d_moy", "t23"."mean", "t23"."cov", "t23"."w_warehouse_sk0" AS "w_warehouse_sk1", "t23"."i_item_sk0" AS "i_item_sk1", CAST(2 AS INTEGER) AS "d_moy1", "t23"."mean0" AS "mean1", "t23"."cov0" AS "cov1" -FROM (SELECT "t10"."w_warehouse_sk", "t10"."i_item_sk", "t10"."mean", "t10"."cov", "t22"."w_warehouse_sk" AS "w_warehouse_sk0", "t22"."i_item_sk" AS "i_item_sk0", "t22"."mean" AS "mean0", "t22"."cov" AS "cov0" + hive.sql.query SELECT "t27"."w_warehouse_sk", "t27"."i_item_sk", CAST(1 AS INTEGER) AS "d_moy", "t27"."mean", "t27"."cov", "t27"."w_warehouse_sk0" AS "w_warehouse_sk1", "t27"."i_item_sk0" AS "i_item_sk1", CAST(2 AS INTEGER) AS "d_moy1", "t27"."mean0" AS "mean1", "t27"."cov0" AS "cov1" +FROM (SELECT "t12"."w_warehouse_sk", "t12"."i_item_sk", "t12"."mean", "t12"."cov", "t26"."w_warehouse_sk" AS "w_warehouse_sk0", "t26"."i_item_sk" AS "i_item_sk0", "t26"."mean" AS "mean0", "t26"."cov" AS "cov0" FROM (SELECT "w_warehouse_sk", "i_item_sk", CAST("$f3" AS DOUBLE) / "$f4" AS "mean", CASE WHEN CAST("$f3" AS DOUBLE) / "$f4" = 0 THEN NULL ELSE CAST("$f3" AS DOUBLE) / (CAST("$f3" AS DOUBLE) / "$f4") END AS "cov" -FROM (SELECT "t4"."w_warehouse_name", "t4"."w_warehouse_sk", "t2"."i_item_sk", SUM("t0"."inv_quantity_on_hand") AS "$f3", COUNT("t0"."inv_quantity_on_hand") AS "$f4" +FROM (SELECT "t6"."w_warehouse_name", "t6"."w_warehouse_sk", "t6"."i_item_sk", SUM("t6"."inv_quantity_on_hand") AS "$f3", COUNT("t6"."inv_quantity_on_hand") AS "$f4" +FROM (SELECT "t3"."inv_date_sk", "t3"."inv_quantity_on_hand", "t3"."i_item_sk", "t5"."w_warehouse_sk", "t5"."w_warehouse_name" +FROM (SELECT "t0"."inv_date_sk", "t0"."inv_warehouse_sk", "t0"."inv_quantity_on_hand", "t2"."i_item_sk" FROM (SELECT "inv_date_sk", "inv_item_sk", "inv_warehouse_sk", "inv_quantity_on_hand" FROM "INVENTORY" WHERE "inv_item_sk" IS NOT NULL AND "inv_warehouse_sk" IS NOT NULL AND "inv_date_sk" IS NOT NULL) AS "t0" INNER JOIN (SELECT "i_item_sk" FROM "ITEM" -WHERE "i_item_sk" IS NOT NULL) AS "t2" ON "t0"."inv_item_sk" = "t2"."i_item_sk" +WHERE "i_item_sk" IS NOT NULL) AS "t2" ON "t0"."inv_item_sk" = "t2"."i_item_sk") AS "t3" INNER JOIN (SELECT "w_warehouse_sk", "w_warehouse_name" FROM "WAREHOUSE" -WHERE "w_warehouse_sk" IS NOT NULL) AS "t4" ON "t0"."inv_warehouse_sk" = "t4"."w_warehouse_sk" +WHERE "w_warehouse_sk" IS NOT NULL) AS "t5" ON "t3"."inv_warehouse_sk" = "t5"."w_warehouse_sk") AS "t6" INNER JOIN (SELECT "d_date_sk" FROM "DATE_DIM" -WHERE "d_year" = 2001 AND "d_moy" = 1 AND "d_date_sk" IS NOT NULL) AS "t6" ON "t0"."inv_date_sk" = "t6"."d_date_sk" -GROUP BY "t2"."i_item_sk", "t4"."w_warehouse_sk", "t4"."w_warehouse_name") AS "t8" -WHERE CASE WHEN CAST("t8"."$f3" AS DOUBLE) / "t8"."$f4" = 0 THEN FALSE ELSE CAST("t8"."$f3" AS DOUBLE) / (CAST("t8"."$f3" AS DOUBLE) / "t8"."$f4") > 1 END) AS "t10" +WHERE "d_year" = 2001 AND "d_moy" = 1 AND "d_date_sk" IS NOT NULL) AS "t8" ON "t6"."inv_date_sk" = "t8"."d_date_sk" +GROUP BY "t6"."i_item_sk", "t6"."w_warehouse_sk", "t6"."w_warehouse_name") AS "t10" +WHERE CASE WHEN CAST("t10"."$f3" AS DOUBLE) / "t10"."$f4" = 0 THEN FALSE ELSE CAST("t10"."$f3" AS DOUBLE) / (CAST("t10"."$f3" AS DOUBLE) / "t10"."$f4") > 1 END) AS "t12" INNER JOIN (SELECT "w_warehouse_sk", "i_item_sk", CAST("$f3" AS DOUBLE) / "$f4" AS "mean", CASE WHEN CAST("$f3" AS DOUBLE) / "$f4" = 0 THEN NULL ELSE CAST("$f3" AS DOUBLE) / (CAST("$f3" AS DOUBLE) / "$f4") END AS "cov" -FROM (SELECT "t16"."w_warehouse_name", "t16"."w_warehouse_sk", "t14"."i_item_sk", SUM("t12"."inv_quantity_on_hand") AS "$f3", COUNT("t12"."inv_quantity_on_hand") AS "$f4" +FROM (SELECT "t20"."w_warehouse_name", "t20"."w_warehouse_sk", "t20"."i_item_sk", SUM("t20"."inv_quantity_on_hand") AS "$f3", COUNT("t20"."inv_quantity_on_hand") AS "$f4" +FROM (SELECT "t17"."inv_date_sk", "t17"."inv_quantity_on_hand", "t17"."i_item_sk", "t19"."w_warehouse_sk", "t19"."w_warehouse_name" +FROM (SELECT "t14"."inv_date_sk", "t14"."inv_warehouse_sk", "t14"."inv_quantity_on_hand", "t16"."i_item_sk" FROM (SELECT "inv_date_sk", "inv_item_sk", "inv_warehouse_sk", "inv_quantity_on_hand" FROM "INVENTORY" -WHERE "inv_item_sk" IS NOT NULL AND "inv_warehouse_sk" IS NOT NULL AND "inv_date_sk" IS NOT NULL) AS "t12" +WHERE "inv_item_sk" IS NOT NULL AND "inv_warehouse_sk" IS NOT NULL AND "inv_date_sk" IS NOT NULL) AS "t14" INNER JOIN (SELECT "i_item_sk" FROM "ITEM" -WHERE "i_item_sk" IS NOT NULL) AS "t14" ON "t12"."inv_item_sk" = "t14"."i_item_sk" +WHERE "i_item_sk" IS NOT NULL) AS "t16" ON "t14"."inv_item_sk" = "t16"."i_item_sk") AS "t17" INNER JOIN (SELECT "w_warehouse_sk", "w_warehouse_name" FROM "WAREHOUSE" -WHERE "w_warehouse_sk" IS NOT NULL) AS "t16" ON "t12"."inv_warehouse_sk" = "t16"."w_warehouse_sk" +WHERE "w_warehouse_sk" IS NOT NULL) AS "t19" ON "t17"."inv_warehouse_sk" = "t19"."w_warehouse_sk") AS "t20" INNER JOIN (SELECT "d_date_sk" FROM "DATE_DIM" -WHERE "d_year" = 2001 AND "d_moy" = 2 AND "d_date_sk" IS NOT NULL) AS "t18" ON "t12"."inv_date_sk" = "t18"."d_date_sk" -GROUP BY "t14"."i_item_sk", "t16"."w_warehouse_sk", "t16"."w_warehouse_name") AS "t20" -WHERE CASE WHEN CAST("t20"."$f3" AS DOUBLE) / "t20"."$f4" = 0 THEN FALSE ELSE CAST("t20"."$f3" AS DOUBLE) / (CAST("t20"."$f3" AS DOUBLE) / "t20"."$f4") > 1 END) AS "t22" ON "t10"."i_item_sk" = "t22"."i_item_sk" AND "t10"."w_warehouse_sk" = "t22"."w_warehouse_sk" -ORDER BY "t10"."w_warehouse_sk", "t10"."i_item_sk", "t10"."mean", "t10"."cov", "t22"."mean", "t22"."cov") AS "t23" +WHERE "d_year" = 2001 AND "d_moy" = 2 AND "d_date_sk" IS NOT NULL) AS "t22" ON "t20"."inv_date_sk" = "t22"."d_date_sk" +GROUP BY "t20"."i_item_sk", "t20"."w_warehouse_sk", "t20"."w_warehouse_name") AS "t24" +WHERE CASE WHEN CAST("t24"."$f3" AS DOUBLE) / "t24"."$f4" = 0 THEN FALSE ELSE CAST("t24"."$f3" AS DOUBLE) / (CAST("t24"."$f3" AS DOUBLE) / "t24"."$f4") > 1 END) AS "t26" ON "t12"."i_item_sk" = "t26"."i_item_sk" AND "t12"."w_warehouse_sk" = "t26"."w_warehouse_sk" +ORDER BY "t12"."w_warehouse_sk", "t12"."i_item_sk", "t12"."mean", "t12"."cov", "t26"."mean", "t26"."cov") AS "t27" hive.sql.query.fieldNames w_warehouse_sk,i_item_sk,d_moy,mean,cov,w_warehouse_sk1,i_item_sk1,d_moy1,mean1,cov1 hive.sql.query.fieldTypes int,int,int,double,double,int,int,int,double,double hive.sql.query.split false @@ -3965,12 +3969,16 @@ GROUP BY "d_week_seq") AS "t2" ON "t0"."d_week_seq" = "t2"."d_week_seq" 1 _col0 (type: char(16)) outputColumnNames: _col0, _col1, _col2, _col4, _col5 Statistics: Num rows: 1 Data size: 193 Basic stats: COMPLETE Column stats: NONE - Reduce Output Operator - key expressions: _col0 (type: char(16)) - sort order: + - Map-reduce partition columns: _col0 (type: char(16)) + Select Operator + expressions: _col0 (type: char(16)), _col1 (type: bigint), _col4 (type: bigint), _col2 (type: double), (_col1 + _col4) (type: bigint), _col5 (type: double) + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5 Statistics: Num rows: 1 Data size: 193 Basic stats: COMPLETE Column stats: NONE - value expressions: _col1 (type: bigint), _col2 (type: double), _col4 (type: bigint), _col5 (type: double) + Reduce Output Operator + key expressions: _col0 (type: char(16)) + sort order: + + Map-reduce partition columns: _col0 (type: char(16)) + Statistics: Num rows: 1 Data size: 193 Basic stats: COMPLETE Column stats: NONE + value expressions: _col1 (type: bigint), _col2 (type: bigint), _col3 (type: double), _col4 (type: bigint), _col5 (type: double) Reducer 5 Execution mode: llap Reduce Operator Tree: @@ -3980,10 +3988,10 @@ GROUP BY "d_week_seq") AS "t2" ON "t0"."d_week_seq" = "t2"."d_week_seq" keys: 0 _col0 (type: char(16)) 1 _col0 (type: char(16)) - outputColumnNames: _col0, _col1, _col2, _col4, _col5, _col7, _col8 + outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col7, _col8 Statistics: Num rows: 1 Data size: 212 Basic stats: COMPLETE Column stats: NONE Select Operator - expressions: _col0 (type: char(16)), _col1 (type: bigint), (((_col2 / UDFToDouble(((_col1 + _col4) + _col7))) / 3.0D) * 100.0D) (type: double), _col4 (type: bigint), (((_col5 / UDFToDouble(((_col1 + _col4) + _col7))) / 3.0D) * 100.0D) (type: double), _col7 (type: bigint), (((_col8 / UDFToDouble(((_col1 + _col4) + _col7))) / 3.0D) * 100.0D) (type: double), (CAST( ((_col1 + _col4) + _col7) AS decimal(19,0)) / 3) (type: decimal(25,6)) + expressions: _col0 (type: char(16)), _col1 (type: bigint), (((_col3 / UDFToDouble((_col4 + _col7))) / 3.0D) * 100.0D) (type: double), _col2 (type: bigint), (((_col5 / UDFToDouble((_col4 + _col7))) / 3.0D) * 100.0D) (type: double), _col7 (type: bigint), (((_col8 / UDFToDouble((_col4 + _col7))) / 3.0D) * 100.0D) (type: double), (CAST( (_col4 + _col7) AS decimal(19,0)) / 3) (type: decimal(25,6)) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7 Statistics: Num rows: 1 Data size: 212 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator @@ -5039,18 +5047,20 @@ STAGE PLANS: alias: store_sales properties: hive.sql.query SELECT COUNT(*) AS "$f0" +FROM (SELECT "t3"."ss_store_sk" +FROM (SELECT "t0"."ss_sold_time_sk", "t0"."ss_store_sk" FROM (SELECT "ss_sold_time_sk", "ss_hdemo_sk", "ss_store_sk" FROM "STORE_SALES" WHERE "ss_hdemo_sk" IS NOT NULL AND "ss_sold_time_sk" IS NOT NULL AND "ss_store_sk" IS NOT NULL) AS "t0" INNER JOIN (SELECT "hd_demo_sk" FROM "HOUSEHOLD_DEMOGRAPHICS" -WHERE "hd_dep_count" IN (4, 2, 0) AND ("hd_vehicle_count" <= 5 OR "hd_vehicle_count" <= 2 OR "hd_vehicle_count" <= 3) AND ("hd_dep_count" = 4 AND "hd_vehicle_count" <= 5 OR "hd_dep_count" = 2 AND "hd_vehicle_count" <= 2 OR "hd_dep_count" = 0 AND "hd_vehicle_count" <= 3) AND "hd_demo_sk" IS NOT NULL) AS "t2" ON "t0"."ss_hdemo_sk" = "t2"."hd_demo_sk" +WHERE "hd_dep_count" IN (4, 2, 0) AND ("hd_vehicle_count" <= 5 OR "hd_vehicle_count" <= 2 OR "hd_vehicle_count" <= 3) AND ("hd_dep_count" = 4 AND "hd_vehicle_count" <= 5 OR "hd_dep_count" = 2 AND "hd_vehicle_count" <= 2 OR "hd_dep_count" = 0 AND "hd_vehicle_count" <= 3) AND "hd_demo_sk" IS NOT NULL) AS "t2" ON "t0"."ss_hdemo_sk" = "t2"."hd_demo_sk") AS "t3" INNER JOIN (SELECT "t_time_sk" FROM "TIME_DIM" -WHERE "t_hour" = 8 AND "t_minute" >= 30 AND "t_time_sk" IS NOT NULL) AS "t4" ON "t0"."ss_sold_time_sk" = "t4"."t_time_sk" +WHERE "t_hour" = 8 AND "t_minute" >= 30 AND "t_time_sk" IS NOT NULL) AS "t5" ON "t3"."ss_sold_time_sk" = "t5"."t_time_sk") AS "t6" INNER JOIN (SELECT "s_store_sk" FROM "STORE" -WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t6" ON "t0"."ss_store_sk" = "t6"."s_store_sk" +WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t8" ON "t6"."ss_store_sk" = "t8"."s_store_sk" hive.sql.query.fieldNames $f0 hive.sql.query.fieldTypes bigint hive.sql.query.split false @@ -5071,18 +5081,20 @@ WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t6" ON "t0"."ss_s alias: store_sales properties: hive.sql.query SELECT COUNT(*) AS "$f0" +FROM (SELECT "t3"."ss_store_sk" +FROM (SELECT "t0"."ss_sold_time_sk", "t0"."ss_store_sk" FROM (SELECT "ss_sold_time_sk", "ss_hdemo_sk", "ss_store_sk" FROM "STORE_SALES" WHERE "ss_hdemo_sk" IS NOT NULL AND "ss_sold_time_sk" IS NOT NULL AND "ss_store_sk" IS NOT NULL) AS "t0" INNER JOIN (SELECT "hd_demo_sk" FROM "HOUSEHOLD_DEMOGRAPHICS" -WHERE "hd_dep_count" IN (4, 2, 0) AND ("hd_vehicle_count" <= 5 OR "hd_vehicle_count" <= 2 OR "hd_vehicle_count" <= 3) AND ("hd_dep_count" = 4 AND "hd_vehicle_count" <= 5 OR "hd_dep_count" = 2 AND "hd_vehicle_count" <= 2 OR "hd_dep_count" = 0 AND "hd_vehicle_count" <= 3) AND "hd_demo_sk" IS NOT NULL) AS "t2" ON "t0"."ss_hdemo_sk" = "t2"."hd_demo_sk" +WHERE "hd_dep_count" IN (4, 2, 0) AND ("hd_vehicle_count" <= 5 OR "hd_vehicle_count" <= 2 OR "hd_vehicle_count" <= 3) AND ("hd_dep_count" = 4 AND "hd_vehicle_count" <= 5 OR "hd_dep_count" = 2 AND "hd_vehicle_count" <= 2 OR "hd_dep_count" = 0 AND "hd_vehicle_count" <= 3) AND "hd_demo_sk" IS NOT NULL) AS "t2" ON "t0"."ss_hdemo_sk" = "t2"."hd_demo_sk") AS "t3" INNER JOIN (SELECT "t_time_sk" FROM "TIME_DIM" -WHERE "t_hour" = 9 AND "t_minute" >= 30 AND "t_time_sk" IS NOT NULL) AS "t4" ON "t0"."ss_sold_time_sk" = "t4"."t_time_sk" +WHERE "t_hour" = 9 AND "t_minute" >= 30 AND "t_time_sk" IS NOT NULL) AS "t5" ON "t3"."ss_sold_time_sk" = "t5"."t_time_sk") AS "t6" INNER JOIN (SELECT "s_store_sk" FROM "STORE" -WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t6" ON "t0"."ss_store_sk" = "t6"."s_store_sk" +WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t8" ON "t6"."ss_store_sk" = "t8"."s_store_sk" hive.sql.query.fieldNames $f0 hive.sql.query.fieldTypes bigint hive.sql.query.split false @@ -5103,18 +5115,20 @@ WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t6" ON "t0"."ss_s alias: store_sales properties: hive.sql.query SELECT COUNT(*) AS "$f0" +FROM (SELECT "t3"."ss_store_sk" +FROM (SELECT "t0"."ss_sold_time_sk", "t0"."ss_store_sk" FROM (SELECT "ss_sold_time_sk", "ss_hdemo_sk", "ss_store_sk" FROM "STORE_SALES" WHERE "ss_hdemo_sk" IS NOT NULL AND "ss_sold_time_sk" IS NOT NULL AND "ss_store_sk" IS NOT NULL) AS "t0" INNER JOIN (SELECT "hd_demo_sk" FROM "HOUSEHOLD_DEMOGRAPHICS" -WHERE "hd_dep_count" IN (4, 2, 0) AND ("hd_vehicle_count" <= 5 OR "hd_vehicle_count" <= 2 OR "hd_vehicle_count" <= 3) AND ("hd_dep_count" = 4 AND "hd_vehicle_count" <= 5 OR "hd_dep_count" = 2 AND "hd_vehicle_count" <= 2 OR "hd_dep_count" = 0 AND "hd_vehicle_count" <= 3) AND "hd_demo_sk" IS NOT NULL) AS "t2" ON "t0"."ss_hdemo_sk" = "t2"."hd_demo_sk" +WHERE "hd_dep_count" IN (4, 2, 0) AND ("hd_vehicle_count" <= 5 OR "hd_vehicle_count" <= 2 OR "hd_vehicle_count" <= 3) AND ("hd_dep_count" = 4 AND "hd_vehicle_count" <= 5 OR "hd_dep_count" = 2 AND "hd_vehicle_count" <= 2 OR "hd_dep_count" = 0 AND "hd_vehicle_count" <= 3) AND "hd_demo_sk" IS NOT NULL) AS "t2" ON "t0"."ss_hdemo_sk" = "t2"."hd_demo_sk") AS "t3" INNER JOIN (SELECT "t_time_sk" FROM "TIME_DIM" -WHERE "t_hour" = 10 AND "t_minute" < 30 AND "t_time_sk" IS NOT NULL) AS "t4" ON "t0"."ss_sold_time_sk" = "t4"."t_time_sk" +WHERE "t_hour" = 10 AND "t_minute" < 30 AND "t_time_sk" IS NOT NULL) AS "t5" ON "t3"."ss_sold_time_sk" = "t5"."t_time_sk") AS "t6" INNER JOIN (SELECT "s_store_sk" FROM "STORE" -WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t6" ON "t0"."ss_store_sk" = "t6"."s_store_sk" +WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t8" ON "t6"."ss_store_sk" = "t8"."s_store_sk" hive.sql.query.fieldNames $f0 hive.sql.query.fieldTypes bigint hive.sql.query.split false @@ -5135,18 +5149,20 @@ WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t6" ON "t0"."ss_s alias: store_sales properties: hive.sql.query SELECT COUNT(*) AS "$f0" +FROM (SELECT "t3"."ss_store_sk" +FROM (SELECT "t0"."ss_sold_time_sk", "t0"."ss_store_sk" FROM (SELECT "ss_sold_time_sk", "ss_hdemo_sk", "ss_store_sk" FROM "STORE_SALES" WHERE "ss_hdemo_sk" IS NOT NULL AND "ss_sold_time_sk" IS NOT NULL AND "ss_store_sk" IS NOT NULL) AS "t0" INNER JOIN (SELECT "hd_demo_sk" FROM "HOUSEHOLD_DEMOGRAPHICS" -WHERE "hd_dep_count" IN (4, 2, 0) AND ("hd_vehicle_count" <= 5 OR "hd_vehicle_count" <= 2 OR "hd_vehicle_count" <= 3) AND ("hd_dep_count" = 4 AND "hd_vehicle_count" <= 5 OR "hd_dep_count" = 2 AND "hd_vehicle_count" <= 2 OR "hd_dep_count" = 0 AND "hd_vehicle_count" <= 3) AND "hd_demo_sk" IS NOT NULL) AS "t2" ON "t0"."ss_hdemo_sk" = "t2"."hd_demo_sk" +WHERE "hd_dep_count" IN (4, 2, 0) AND ("hd_vehicle_count" <= 5 OR "hd_vehicle_count" <= 2 OR "hd_vehicle_count" <= 3) AND ("hd_dep_count" = 4 AND "hd_vehicle_count" <= 5 OR "hd_dep_count" = 2 AND "hd_vehicle_count" <= 2 OR "hd_dep_count" = 0 AND "hd_vehicle_count" <= 3) AND "hd_demo_sk" IS NOT NULL) AS "t2" ON "t0"."ss_hdemo_sk" = "t2"."hd_demo_sk") AS "t3" INNER JOIN (SELECT "t_time_sk" FROM "TIME_DIM" -WHERE "t_hour" = 10 AND "t_minute" >= 30 AND "t_time_sk" IS NOT NULL) AS "t4" ON "t0"."ss_sold_time_sk" = "t4"."t_time_sk" +WHERE "t_hour" = 10 AND "t_minute" >= 30 AND "t_time_sk" IS NOT NULL) AS "t5" ON "t3"."ss_sold_time_sk" = "t5"."t_time_sk") AS "t6" INNER JOIN (SELECT "s_store_sk" FROM "STORE" -WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t6" ON "t0"."ss_store_sk" = "t6"."s_store_sk" +WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t8" ON "t6"."ss_store_sk" = "t8"."s_store_sk" hive.sql.query.fieldNames $f0 hive.sql.query.fieldTypes bigint hive.sql.query.split false @@ -5167,18 +5183,20 @@ WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t6" ON "t0"."ss_s alias: store_sales properties: hive.sql.query SELECT COUNT(*) AS "$f0" +FROM (SELECT "t3"."ss_store_sk" +FROM (SELECT "t0"."ss_sold_time_sk", "t0"."ss_store_sk" FROM (SELECT "ss_sold_time_sk", "ss_hdemo_sk", "ss_store_sk" FROM "STORE_SALES" WHERE "ss_hdemo_sk" IS NOT NULL AND "ss_sold_time_sk" IS NOT NULL AND "ss_store_sk" IS NOT NULL) AS "t0" INNER JOIN (SELECT "hd_demo_sk" FROM "HOUSEHOLD_DEMOGRAPHICS" -WHERE "hd_dep_count" IN (4, 2, 0) AND ("hd_vehicle_count" <= 5 OR "hd_vehicle_count" <= 2 OR "hd_vehicle_count" <= 3) AND ("hd_dep_count" = 4 AND "hd_vehicle_count" <= 5 OR "hd_dep_count" = 2 AND "hd_vehicle_count" <= 2 OR "hd_dep_count" = 0 AND "hd_vehicle_count" <= 3) AND "hd_demo_sk" IS NOT NULL) AS "t2" ON "t0"."ss_hdemo_sk" = "t2"."hd_demo_sk" +WHERE "hd_dep_count" IN (4, 2, 0) AND ("hd_vehicle_count" <= 5 OR "hd_vehicle_count" <= 2 OR "hd_vehicle_count" <= 3) AND ("hd_dep_count" = 4 AND "hd_vehicle_count" <= 5 OR "hd_dep_count" = 2 AND "hd_vehicle_count" <= 2 OR "hd_dep_count" = 0 AND "hd_vehicle_count" <= 3) AND "hd_demo_sk" IS NOT NULL) AS "t2" ON "t0"."ss_hdemo_sk" = "t2"."hd_demo_sk") AS "t3" INNER JOIN (SELECT "t_time_sk" FROM "TIME_DIM" -WHERE "t_hour" = 11 AND "t_minute" < 30 AND "t_time_sk" IS NOT NULL) AS "t4" ON "t0"."ss_sold_time_sk" = "t4"."t_time_sk" +WHERE "t_hour" = 11 AND "t_minute" < 30 AND "t_time_sk" IS NOT NULL) AS "t5" ON "t3"."ss_sold_time_sk" = "t5"."t_time_sk") AS "t6" INNER JOIN (SELECT "s_store_sk" FROM "STORE" -WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t6" ON "t0"."ss_store_sk" = "t6"."s_store_sk" +WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t8" ON "t6"."ss_store_sk" = "t8"."s_store_sk" hive.sql.query.fieldNames $f0 hive.sql.query.fieldTypes bigint hive.sql.query.split false @@ -5199,18 +5217,20 @@ WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t6" ON "t0"."ss_s alias: store_sales properties: hive.sql.query SELECT COUNT(*) AS "$f0" +FROM (SELECT "t3"."ss_store_sk" +FROM (SELECT "t0"."ss_sold_time_sk", "t0"."ss_store_sk" FROM (SELECT "ss_sold_time_sk", "ss_hdemo_sk", "ss_store_sk" FROM "STORE_SALES" WHERE "ss_hdemo_sk" IS NOT NULL AND "ss_sold_time_sk" IS NOT NULL AND "ss_store_sk" IS NOT NULL) AS "t0" INNER JOIN (SELECT "hd_demo_sk" FROM "HOUSEHOLD_DEMOGRAPHICS" -WHERE "hd_dep_count" IN (4, 2, 0) AND ("hd_vehicle_count" <= 5 OR "hd_vehicle_count" <= 2 OR "hd_vehicle_count" <= 3) AND ("hd_dep_count" = 4 AND "hd_vehicle_count" <= 5 OR "hd_dep_count" = 2 AND "hd_vehicle_count" <= 2 OR "hd_dep_count" = 0 AND "hd_vehicle_count" <= 3) AND "hd_demo_sk" IS NOT NULL) AS "t2" ON "t0"."ss_hdemo_sk" = "t2"."hd_demo_sk" +WHERE "hd_dep_count" IN (4, 2, 0) AND ("hd_vehicle_count" <= 5 OR "hd_vehicle_count" <= 2 OR "hd_vehicle_count" <= 3) AND ("hd_dep_count" = 4 AND "hd_vehicle_count" <= 5 OR "hd_dep_count" = 2 AND "hd_vehicle_count" <= 2 OR "hd_dep_count" = 0 AND "hd_vehicle_count" <= 3) AND "hd_demo_sk" IS NOT NULL) AS "t2" ON "t0"."ss_hdemo_sk" = "t2"."hd_demo_sk") AS "t3" INNER JOIN (SELECT "t_time_sk" FROM "TIME_DIM" -WHERE "t_hour" = 11 AND "t_minute" >= 30 AND "t_time_sk" IS NOT NULL) AS "t4" ON "t0"."ss_sold_time_sk" = "t4"."t_time_sk" +WHERE "t_hour" = 11 AND "t_minute" >= 30 AND "t_time_sk" IS NOT NULL) AS "t5" ON "t3"."ss_sold_time_sk" = "t5"."t_time_sk") AS "t6" INNER JOIN (SELECT "s_store_sk" FROM "STORE" -WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t6" ON "t0"."ss_store_sk" = "t6"."s_store_sk" +WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t8" ON "t6"."ss_store_sk" = "t8"."s_store_sk" hive.sql.query.fieldNames $f0 hive.sql.query.fieldTypes bigint hive.sql.query.split false @@ -5231,18 +5251,20 @@ WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t6" ON "t0"."ss_s alias: store_sales properties: hive.sql.query SELECT COUNT(*) AS "$f0" +FROM (SELECT "t3"."ss_store_sk" +FROM (SELECT "t0"."ss_sold_time_sk", "t0"."ss_store_sk" FROM (SELECT "ss_sold_time_sk", "ss_hdemo_sk", "ss_store_sk" FROM "STORE_SALES" WHERE "ss_hdemo_sk" IS NOT NULL AND "ss_sold_time_sk" IS NOT NULL AND "ss_store_sk" IS NOT NULL) AS "t0" INNER JOIN (SELECT "hd_demo_sk" FROM "HOUSEHOLD_DEMOGRAPHICS" -WHERE "hd_dep_count" IN (4, 2, 0) AND ("hd_vehicle_count" <= 5 OR "hd_vehicle_count" <= 2 OR "hd_vehicle_count" <= 3) AND ("hd_dep_count" = 4 AND "hd_vehicle_count" <= 5 OR "hd_dep_count" = 2 AND "hd_vehicle_count" <= 2 OR "hd_dep_count" = 0 AND "hd_vehicle_count" <= 3) AND "hd_demo_sk" IS NOT NULL) AS "t2" ON "t0"."ss_hdemo_sk" = "t2"."hd_demo_sk" +WHERE "hd_dep_count" IN (4, 2, 0) AND ("hd_vehicle_count" <= 5 OR "hd_vehicle_count" <= 2 OR "hd_vehicle_count" <= 3) AND ("hd_dep_count" = 4 AND "hd_vehicle_count" <= 5 OR "hd_dep_count" = 2 AND "hd_vehicle_count" <= 2 OR "hd_dep_count" = 0 AND "hd_vehicle_count" <= 3) AND "hd_demo_sk" IS NOT NULL) AS "t2" ON "t0"."ss_hdemo_sk" = "t2"."hd_demo_sk") AS "t3" INNER JOIN (SELECT "t_time_sk" FROM "TIME_DIM" -WHERE "t_hour" = 12 AND "t_minute" < 30 AND "t_time_sk" IS NOT NULL) AS "t4" ON "t0"."ss_sold_time_sk" = "t4"."t_time_sk" +WHERE "t_hour" = 12 AND "t_minute" < 30 AND "t_time_sk" IS NOT NULL) AS "t5" ON "t3"."ss_sold_time_sk" = "t5"."t_time_sk") AS "t6" INNER JOIN (SELECT "s_store_sk" FROM "STORE" -WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t6" ON "t0"."ss_store_sk" = "t6"."s_store_sk" +WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t8" ON "t6"."ss_store_sk" = "t8"."s_store_sk" hive.sql.query.fieldNames $f0 hive.sql.query.fieldTypes bigint hive.sql.query.split false @@ -5263,18 +5285,20 @@ WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t6" ON "t0"."ss_s alias: store_sales properties: hive.sql.query SELECT COUNT(*) AS "$f0" +FROM (SELECT "t3"."ss_store_sk" +FROM (SELECT "t0"."ss_sold_time_sk", "t0"."ss_store_sk" FROM (SELECT "ss_sold_time_sk", "ss_hdemo_sk", "ss_store_sk" FROM "STORE_SALES" WHERE "ss_hdemo_sk" IS NOT NULL AND "ss_sold_time_sk" IS NOT NULL AND "ss_store_sk" IS NOT NULL) AS "t0" INNER JOIN (SELECT "hd_demo_sk" FROM "HOUSEHOLD_DEMOGRAPHICS" -WHERE "hd_dep_count" IN (4, 2, 0) AND ("hd_vehicle_count" <= 5 OR "hd_vehicle_count" <= 2 OR "hd_vehicle_count" <= 3) AND ("hd_dep_count" = 4 AND "hd_vehicle_count" <= 5 OR "hd_dep_count" = 2 AND "hd_vehicle_count" <= 2 OR "hd_dep_count" = 0 AND "hd_vehicle_count" <= 3) AND "hd_demo_sk" IS NOT NULL) AS "t2" ON "t0"."ss_hdemo_sk" = "t2"."hd_demo_sk" +WHERE "hd_dep_count" IN (4, 2, 0) AND ("hd_vehicle_count" <= 5 OR "hd_vehicle_count" <= 2 OR "hd_vehicle_count" <= 3) AND ("hd_dep_count" = 4 AND "hd_vehicle_count" <= 5 OR "hd_dep_count" = 2 AND "hd_vehicle_count" <= 2 OR "hd_dep_count" = 0 AND "hd_vehicle_count" <= 3) AND "hd_demo_sk" IS NOT NULL) AS "t2" ON "t0"."ss_hdemo_sk" = "t2"."hd_demo_sk") AS "t3" INNER JOIN (SELECT "t_time_sk" FROM "TIME_DIM" -WHERE "t_hour" = 9 AND "t_minute" < 30 AND "t_time_sk" IS NOT NULL) AS "t4" ON "t0"."ss_sold_time_sk" = "t4"."t_time_sk" +WHERE "t_hour" = 9 AND "t_minute" < 30 AND "t_time_sk" IS NOT NULL) AS "t5" ON "t3"."ss_sold_time_sk" = "t5"."t_time_sk") AS "t6" INNER JOIN (SELECT "s_store_sk" FROM "STORE" -WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t6" ON "t0"."ss_store_sk" = "t6"."s_store_sk" +WHERE "s_store_name" = 'ese' AND "s_store_sk" IS NOT NULL) AS "t8" ON "t6"."ss_store_sk" = "t8"."s_store_sk" hive.sql.query.fieldNames $f0 hive.sql.query.fieldTypes bigint hive.sql.query.split false @@ -5833,29 +5857,34 @@ STAGE PLANS: TableScan alias: web_sales properties: - hive.sql.query SELECT "t12"."r_reason_desc", SUM("t0"."ws_quantity") AS "$f1", COUNT("t0"."ws_quantity") AS "$f2", SUM("t2"."wr_refunded_cash") AS "$f3", COUNT("t2"."wr_refunded_cash") AS "$f4", SUM("t2"."wr_fee") AS "$f5", COUNT("t2"."wr_fee") AS "$f6" + hive.sql.query SELECT "t17"."r_reason_desc", SUM("t15"."ws_quantity") AS "$f1", COUNT("t15"."ws_quantity") AS "$f2", SUM("t15"."wr_refunded_cash") AS "$f3", COUNT("t15"."wr_refunded_cash") AS "$f4", SUM("t15"."wr_fee") AS "$f5", COUNT("t15"."wr_fee") AS "$f6" +FROM (SELECT "t12"."ws_quantity", "t12"."wr_reason_sk", "t12"."wr_fee", "t12"."wr_refunded_cash" +FROM (SELECT "t9"."ws_sold_date_sk", "t9"."ws_quantity", "t9"."wr_reason_sk", "t9"."wr_fee", "t9"."wr_refunded_cash" +FROM (SELECT "t6"."ws_sold_date_sk", "t6"."ws_quantity", "t6"."wr_refunded_addr_sk", "t6"."wr_reason_sk", "t6"."wr_fee", "t6"."wr_refunded_cash", "t6"."BETWEEN", "t6"."BETWEEN10" AS "BETWEEN7", "t6"."BETWEEN11" AS "BETWEEN8" +FROM (SELECT "t3"."ws_sold_date_sk", "t3"."ws_quantity", "t3"."wr_refunded_addr_sk", "t3"."wr_returning_cdemo_sk", "t3"."wr_reason_sk", "t3"."wr_fee", "t3"."wr_refunded_cash", "t5"."cd_marital_status", "t5"."cd_education_status", "t3"."BETWEEN", "t3"."BETWEEN9" AS "BETWEEN10", "t3"."BETWEEN10" AS "BETWEEN11" +FROM (SELECT "t0"."ws_sold_date_sk", "t0"."ws_quantity", "t2"."wr_refunded_cdemo_sk", "t2"."wr_refunded_addr_sk", "t2"."wr_returning_cdemo_sk", "t2"."wr_reason_sk", "t2"."wr_fee", "t2"."wr_refunded_cash", "t0"."BETWEEN", "t0"."BETWEEN5" AS "BETWEEN9", "t0"."BETWEEN6" AS "BETWEEN10", "t0"."BETWEEN7" AS "BETWEEN11", "t0"."BETWEEN8" AS "BETWEEN12", "t0"."BETWEEN9" AS "BETWEEN13" FROM (SELECT "ws_sold_date_sk", "ws_item_sk", "ws_order_number", "ws_quantity", "ws_net_profit" BETWEEN 100 AND 200 AS "BETWEEN", "ws_net_profit" BETWEEN 150 AND 300 AS "BETWEEN5", "ws_net_profit" BETWEEN 50 AND 250 AS "BETWEEN6", "ws_sales_price" BETWEEN 100 AND 150 AS "BETWEEN7", "ws_sales_price" BETWEEN 50 AND 100 AS "BETWEEN8", "ws_sales_price" BETWEEN 150 AND 200 AS "BETWEEN9" FROM "WEB_SALES" WHERE (100 <= "ws_sales_price" OR "ws_sales_price" <= 150 OR 50 <= "ws_sales_price" OR "ws_sales_price" <= 100 OR 150 <= "ws_sales_price" OR "ws_sales_price" <= 200) AND (100 <= "ws_net_profit" OR "ws_net_profit" <= 200 OR 150 <= "ws_net_profit" OR "ws_net_profit" <= 300 OR 50 <= "ws_net_profit" OR "ws_net_profit" <= 250) AND "ws_item_sk" IS NOT NULL AND "ws_order_number" IS NOT NULL AND "ws_sold_date_sk" IS NOT NULL) AS "t0" INNER JOIN (SELECT "wr_item_sk", "wr_refunded_cdemo_sk", "wr_refunded_addr_sk", "wr_returning_cdemo_sk", "wr_reason_sk", "wr_order_number", "wr_fee", "wr_refunded_cash" FROM "WEB_RETURNS" -WHERE "wr_item_sk" IS NOT NULL AND "wr_order_number" IS NOT NULL AND "wr_refunded_cdemo_sk" IS NOT NULL AND "wr_returning_cdemo_sk" IS NOT NULL AND "wr_refunded_addr_sk" IS NOT NULL AND "wr_reason_sk" IS NOT NULL) AS "t2" ON "t0"."ws_item_sk" = "t2"."wr_item_sk" AND "t0"."ws_order_number" = "t2"."wr_order_number" +WHERE "wr_item_sk" IS NOT NULL AND "wr_order_number" IS NOT NULL AND "wr_refunded_cdemo_sk" IS NOT NULL AND "wr_returning_cdemo_sk" IS NOT NULL AND "wr_refunded_addr_sk" IS NOT NULL AND "wr_reason_sk" IS NOT NULL) AS "t2" ON "t0"."ws_item_sk" = "t2"."wr_item_sk" AND "t0"."ws_order_number" = "t2"."wr_order_number") AS "t3" INNER JOIN (SELECT "cd_demo_sk", "cd_marital_status", "cd_education_status", "cd_marital_status" = 'M' AS "=", "cd_education_status" = 'Advanced Degree ' AS "=4", "cd_marital_status" = 'S' AS "=5", "cd_education_status" = 'College ' AS "=6", "cd_marital_status" = 'W' AS "=7", "cd_education_status" = '2 yr Degree ' AS "=8" FROM "CUSTOMER_DEMOGRAPHICS" -WHERE "cd_marital_status" IN ('M', 'S', 'W') AND "cd_education_status" IN ('Advanced Degree ', 'College ', '2 yr Degree ') AND "cd_demo_sk" IS NOT NULL) AS "t4" ON "t2"."wr_refunded_cdemo_sk" = "t4"."cd_demo_sk" AND ("t4"."=" AND "t4"."=4" AND "t0"."BETWEEN7" OR "t4"."=5" AND "t4"."=6" AND "t0"."BETWEEN8" OR "t4"."=7" AND "t4"."=8" AND "t0"."BETWEEN9") +WHERE "cd_marital_status" IN ('M', 'S', 'W') AND "cd_education_status" IN ('Advanced Degree ', 'College ', '2 yr Degree ') AND "cd_demo_sk" IS NOT NULL) AS "t5" ON "t3"."wr_refunded_cdemo_sk" = "t5"."cd_demo_sk" AND ("t5"."=" AND "t5"."=4" AND "t3"."BETWEEN11" OR "t5"."=5" AND "t5"."=6" AND "t3"."BETWEEN12" OR "t5"."=7" AND "t5"."=8" AND "t3"."BETWEEN13")) AS "t6" INNER JOIN (SELECT "cd_demo_sk", "cd_marital_status", "cd_education_status" FROM "CUSTOMER_DEMOGRAPHICS" -WHERE "cd_marital_status" IN ('M', 'S', 'W') AND "cd_education_status" IN ('Advanced Degree ', 'College ', '2 yr Degree ') AND "cd_demo_sk" IS NOT NULL) AS "t6" ON "t2"."wr_returning_cdemo_sk" = "t6"."cd_demo_sk" AND "t4"."cd_marital_status" = "t6"."cd_marital_status" AND "t4"."cd_education_status" = "t6"."cd_education_status" +WHERE "cd_marital_status" IN ('M', 'S', 'W') AND "cd_education_status" IN ('Advanced Degree ', 'College ', '2 yr Degree ') AND "cd_demo_sk" IS NOT NULL) AS "t8" ON "t6"."wr_returning_cdemo_sk" = "t8"."cd_demo_sk" AND "t6"."cd_marital_status" = "t8"."cd_marital_status" AND "t6"."cd_education_status" = "t8"."cd_education_status") AS "t9" INNER JOIN (SELECT "ca_address_sk", "ca_state" IN ('IN', 'OH', 'NJ') AS "IN", "ca_state" IN ('WI', 'CT', 'KY') AS "IN2", "ca_state" IN ('LA', 'IA', 'AR') AS "IN3" FROM "CUSTOMER_ADDRESS" -WHERE "ca_state" IN ('IN', 'OH', 'NJ', 'WI', 'CT', 'KY', 'LA', 'IA', 'AR') AND "ca_country" = 'United States' AND "ca_address_sk" IS NOT NULL) AS "t8" ON "t2"."wr_refunded_addr_sk" = "t8"."ca_address_sk" AND ("t8"."IN" AND "t0"."BETWEEN" OR "t8"."IN2" AND "t0"."BETWEEN5" OR "t8"."IN3" AND "t0"."BETWEEN6") +WHERE "ca_state" IN ('IN', 'OH', 'NJ', 'WI', 'CT', 'KY', 'LA', 'IA', 'AR') AND "ca_country" = 'United States' AND "ca_address_sk" IS NOT NULL) AS "t11" ON "t9"."wr_refunded_addr_sk" = "t11"."ca_address_sk" AND ("t11"."IN" AND "t9"."BETWEEN" OR "t11"."IN2" AND "t9"."BETWEEN7" OR "t11"."IN3" AND "t9"."BETWEEN8")) AS "t12" INNER JOIN (SELECT "d_date_sk" FROM "DATE_DIM" -WHERE "d_year" = 2000 AND "d_date_sk" IS NOT NULL) AS "t10" ON "t0"."ws_sold_date_sk" = "t10"."d_date_sk" +WHERE "d_year" = 2000 AND "d_date_sk" IS NOT NULL) AS "t14" ON "t12"."ws_sold_date_sk" = "t14"."d_date_sk") AS "t15" INNER JOIN (SELECT "r_reason_sk", "r_reason_desc" FROM "REASON" -WHERE "r_reason_sk" IS NOT NULL) AS "t12" ON "t2"."wr_reason_sk" = "t12"."r_reason_sk" -GROUP BY "t12"."r_reason_desc" +WHERE "r_reason_sk" IS NOT NULL) AS "t17" ON "t15"."wr_reason_sk" = "t17"."r_reason_sk" +GROUP BY "t17"."r_reason_desc" hive.sql.query.fieldNames r_reason_desc,$f1,$f2,$f3,$f4,$f5,$f6 hive.sql.query.fieldTypes char(100),bigint,bigint,decimal(11,6),bigint,decimal(11,6),bigint hive.sql.query.split false diff --git a/ql/src/test/results/clientpositive/perf/tez/cbo_ext_query1.q.out b/ql/src/test/results/clientpositive/perf/tez/cbo_ext_query1.q.out index f7a2a66d72..3c9426766e 100644 --- a/ql/src/test/results/clientpositive/perf/tez/cbo_ext_query1.q.out +++ b/ql/src/test/results/clientpositive/perf/tez/cbo_ext_query1.q.out @@ -68,7 +68,7 @@ HiveSortLimit(sort0=[$0], dir0=[ASC], fetch=[100]): rowcount = ###Masked###, cum HiveProject(s_store_sk=[$0]): rowcount = ###Masked###, cumulative cost = ###Masked###, id = ###Masked### HiveFilter(condition=[AND(=($24, _UTF-16LE'NM'), IS NOT NULL($0))]): rowcount = ###Masked###, cumulative cost = ###Masked###, id = ###Masked### HiveTableScan(table=[[default, store]], table:alias=[store]): rowcount = ###Masked###, cumulative cost = ###Masked###, id = ###Masked### - HiveProject(sr_customer_sk=[$0], sr_store_sk=[$1], $f2=[$2]): rowcount = ###Masked###, cumulative cost = ###Masked###, id = ###Masked### + HiveProject($f0=[$0], $f1=[$1], $f2=[$2]): rowcount = ###Masked###, cumulative cost = ###Masked###, id = ###Masked### HiveFilter(condition=[IS NOT NULL($2)]): rowcount = ###Masked###, cumulative cost = ###Masked###, id = ###Masked### HiveAggregate(group=[{1, 2}], agg#0=[sum($3)]): rowcount = ###Masked###, cumulative cost = ###Masked###, id = ###Masked### HiveJoin(condition=[=($0, $4)], joinType=[inner], algorithm=[none], cost=[not available]): rowcount = ###Masked###, cumulative cost = ###Masked###, id = ###Masked### @@ -161,7 +161,7 @@ HiveSortLimit(sort0=[$0], dir0=[ASC], fetch=[100]): rowcount = ###Masked###, cum HiveProject(s_store_sk=[$0]): rowcount = ###Masked###, cumulative cost = ###Masked###, id = ###Masked### HiveFilter(condition=[AND(=($24, _UTF-16LE'NM'), IS NOT NULL($0))]): rowcount = ###Masked###, cumulative cost = ###Masked###, id = ###Masked### HiveTableScan(table=[[default, store]], table:alias=[store]): rowcount = ###Masked###, cumulative cost = ###Masked###, id = ###Masked### - HiveProject(sr_customer_sk=[$0], sr_store_sk=[$1], $f2=[$2]): rowcount = ###Masked###, cumulative cost = ###Masked###, id = ###Masked### + HiveProject($f0=[$0], $f1=[$1], $f2=[$2]): rowcount = ###Masked###, cumulative cost = ###Masked###, id = ###Masked### HiveFilter(condition=[IS NOT NULL($2)]): rowcount = ###Masked###, cumulative cost = ###Masked###, id = ###Masked### HiveAggregate(group=[{1, 2}], agg#0=[sum($3)]): rowcount = ###Masked###, cumulative cost = ###Masked###, id = ###Masked### HiveJoin(condition=[=($0, $4)], joinType=[inner], algorithm=[none], cost=[{5.175767820386722E7 rows, 0.0 cpu, 0.0 io}]): rowcount = ###Masked###, cumulative cost = ###Masked###, id = ###Masked### diff --git a/ql/src/test/results/clientpositive/perf/tez/cbo_query1.q.out b/ql/src/test/results/clientpositive/perf/tez/cbo_query1.q.out index a52ff24f0a..e506d679ca 100644 --- a/ql/src/test/results/clientpositive/perf/tez/cbo_query1.q.out +++ b/ql/src/test/results/clientpositive/perf/tez/cbo_query1.q.out @@ -68,7 +68,7 @@ HiveSortLimit(sort0=[$0], dir0=[ASC], fetch=[100]) HiveProject(s_store_sk=[$0]) HiveFilter(condition=[AND(=($24, _UTF-16LE'NM'), IS NOT NULL($0))]) HiveTableScan(table=[[default, store]], table:alias=[store]) - HiveProject(sr_customer_sk=[$0], sr_store_sk=[$1], $f2=[$2]) + HiveProject($f0=[$0], $f1=[$1], $f2=[$2]) HiveFilter(condition=[IS NOT NULL($2)]) HiveAggregate(group=[{1, 2}], agg#0=[sum($3)]) HiveJoin(condition=[=($0, $4)], joinType=[inner], algorithm=[none], cost=[not available]) diff --git a/ql/src/test/results/clientpositive/perf/tez/cbo_query14.q.out b/ql/src/test/results/clientpositive/perf/tez/cbo_query14.q.out index e783983937..db55110317 100644 --- a/ql/src/test/results/clientpositive/perf/tez/cbo_query14.q.out +++ b/ql/src/test/results/clientpositive/perf/tez/cbo_query14.q.out @@ -227,7 +227,7 @@ HiveSortLimit(sort0=[$0], sort1=[$1], sort2=[$2], sort3=[$3], dir0=[ASC], dir1=[ HiveUnion(all=[true]) HiveProject(channel=[_UTF-16LE'store':VARCHAR(2147483647) CHARACTER SET "UTF-16LE"], i_brand_id=[$0], i_class_id=[$1], i_category_id=[$2], sales=[$3], number_sales=[$4]) HiveJoin(condition=[>($3, $5)], joinType=[inner], algorithm=[none], cost=[not available]) - HiveProject(i_brand_id=[$0], i_class_id=[$1], i_category_id=[$2], $f3=[$3], $f4=[$4]) + HiveProject($f0=[$0], $f1=[$1], $f2=[$2], $f3=[$3], $f4=[$4]) HiveFilter(condition=[IS NOT NULL($3)]) HiveAggregate(group=[{0, 1, 2}], agg#0=[sum($3)], agg#1=[count()]) HiveProject(i_brand_id=[$1], i_class_id=[$2], i_category_id=[$3], $f3=[*(CAST($6):DECIMAL(10, 0), $7)]) @@ -251,7 +251,7 @@ HiveSortLimit(sort0=[$0], sort1=[$1], sort2=[$2], sort3=[$3], dir0=[ASC], dir1=[ HiveProject($f0=[$0], $f1=[$1], $f2=[$2]) HiveFilter(condition=[=($3, 3)]) HiveAggregate(group=[{0, 1, 2}], agg#0=[count($3)]) - HiveProject(i_brand_id=[$0], i_class_id=[$1], i_category_id=[$2], $f3=[$3]) + HiveProject(brand_id=[$0], class_id=[$1], category_id=[$2], $f3=[$3]) HiveUnion(all=[true]) HiveProject(i_brand_id=[$0], i_class_id=[$1], i_category_id=[$2], $f3=[$3]) HiveAggregate(group=[{4, 5, 6}], agg#0=[count()]) @@ -324,7 +324,7 @@ HiveSortLimit(sort0=[$0], sort1=[$1], sort2=[$2], sort3=[$3], dir0=[ASC], dir1=[ HiveTableScan(table=[[default, date_dim]], table:alias=[date_dim]) HiveProject(channel=[_UTF-16LE'catalog':VARCHAR(2147483647) CHARACTER SET "UTF-16LE"], i_brand_id=[$0], i_class_id=[$1], i_category_id=[$2], sales=[$3], number_sales=[$4]) HiveJoin(condition=[>($3, $5)], joinType=[inner], algorithm=[none], cost=[not available]) - HiveProject(i_brand_id=[$0], i_class_id=[$1], i_category_id=[$2], $f3=[$3], $f4=[$4]) + HiveProject($f0=[$0], $f1=[$1], $f2=[$2], $f3=[$3], $f4=[$4]) HiveFilter(condition=[IS NOT NULL($3)]) HiveAggregate(group=[{0, 1, 2}], agg#0=[sum($3)], agg#1=[count()]) HiveProject(i_brand_id=[$1], i_class_id=[$2], i_category_id=[$3], $f3=[*(CAST($6):DECIMAL(10, 0), $7)]) @@ -348,7 +348,7 @@ HiveSortLimit(sort0=[$0], sort1=[$1], sort2=[$2], sort3=[$3], dir0=[ASC], dir1=[ HiveProject($f0=[$0], $f1=[$1], $f2=[$2]) HiveFilter(condition=[=($3, 3)]) HiveAggregate(group=[{0, 1, 2}], agg#0=[count($3)]) - HiveProject(i_brand_id=[$0], i_class_id=[$1], i_category_id=[$2], $f3=[$3]) + HiveProject(brand_id=[$0], class_id=[$1], category_id=[$2], $f3=[$3]) HiveUnion(all=[true]) HiveProject(i_brand_id=[$0], i_class_id=[$1], i_category_id=[$2], $f3=[$3]) HiveAggregate(group=[{4, 5, 6}], agg#0=[count()]) @@ -421,7 +421,7 @@ HiveSortLimit(sort0=[$0], sort1=[$1], sort2=[$2], sort3=[$3], dir0=[ASC], dir1=[ HiveTableScan(table=[[default, date_dim]], table:alias=[date_dim]) HiveProject(channel=[_UTF-16LE'web':VARCHAR(2147483647) CHARACTER SET "UTF-16LE"], i_brand_id=[$0], i_class_id=[$1], i_category_id=[$2], sales=[$3], number_sales=[$4]) HiveJoin(condition=[>($3, $5)], joinType=[inner], algorithm=[none], cost=[not available]) - HiveProject(i_brand_id=[$0], i_class_id=[$1], i_category_id=[$2], $f3=[$3], $f4=[$4]) + HiveProject($f0=[$0], $f1=[$1], $f2=[$2], $f3=[$3], $f4=[$4]) HiveFilter(condition=[IS NOT NULL($3)]) HiveAggregate(group=[{0, 1, 2}], agg#0=[sum($3)], agg#1=[count()]) HiveProject(i_brand_id=[$1], i_class_id=[$2], i_category_id=[$3], $f3=[*(CAST($6):DECIMAL(10, 0), $7)]) @@ -445,7 +445,7 @@ HiveSortLimit(sort0=[$0], sort1=[$1], sort2=[$2], sort3=[$3], dir0=[ASC], dir1=[ HiveProject($f0=[$0], $f1=[$1], $f2=[$2]) HiveFilter(condition=[=($3, 3)]) HiveAggregate(group=[{0, 1, 2}], agg#0=[count($3)]) - HiveProject(i_brand_id=[$0], i_class_id=[$1], i_category_id=[$2], $f3=[$3]) + HiveProject(brand_id=[$0], class_id=[$1], category_id=[$2], $f3=[$3]) HiveUnion(all=[true]) HiveProject(i_brand_id=[$0], i_class_id=[$1], i_category_id=[$2], $f3=[$3]) HiveAggregate(group=[{4, 5, 6}], agg#0=[count()]) diff --git a/ql/src/test/results/clientpositive/perf/tez/cbo_query23.q.out b/ql/src/test/results/clientpositive/perf/tez/cbo_query23.q.out index f004144407..66db60ea86 100644 --- a/ql/src/test/results/clientpositive/perf/tez/cbo_query23.q.out +++ b/ql/src/test/results/clientpositive/perf/tez/cbo_query23.q.out @@ -123,7 +123,7 @@ HiveAggregate(group=[{}], agg#0=[sum($0)]) HiveProject(sales=[*(CAST($4):DECIMAL(10, 0), $5)]) HiveSemiJoin(condition=[=($2, $7)], joinType=[inner]) HiveJoin(condition=[=($3, $0)], joinType=[inner], algorithm=[none], cost=[not available]) - HiveProject(i_item_sk=[$0]) + HiveProject($f1=[$0]) HiveAggregate(group=[{1}]) HiveFilter(condition=[>($3, 4)]) HiveProject(substr=[$2], i_item_sk=[$1], d_date=[$0], $f3=[$3]) @@ -146,9 +146,9 @@ HiveAggregate(group=[{}], agg#0=[sum($0)]) HiveProject(d_date_sk=[$0]) HiveFilter(condition=[AND(=($6, 1999), =($8, 1), IS NOT NULL($0))]) HiveTableScan(table=[[default, date_dim]], table:alias=[date_dim]) - HiveProject(c_customer_sk=[$0]) + HiveProject($f0=[$0]) HiveJoin(condition=[>($1, $2)], joinType=[inner], algorithm=[none], cost=[not available]) - HiveProject(c_customer_sk=[$0], $f1=[$1]) + HiveProject($f0=[$0], $f1=[$1]) HiveFilter(condition=[IS NOT NULL($1)]) HiveAggregate(group=[{2}], agg#0=[sum($1)]) HiveJoin(condition=[=($0, $2)], joinType=[inner], algorithm=[none], cost=[not available]) @@ -178,7 +178,7 @@ HiveAggregate(group=[{}], agg#0=[sum($0)]) HiveProject(sales=[*(CAST($4):DECIMAL(10, 0), $5)]) HiveSemiJoin(condition=[=($3, $7)], joinType=[inner]) HiveJoin(condition=[=($2, $0)], joinType=[inner], algorithm=[none], cost=[not available]) - HiveProject(i_item_sk=[$0]) + HiveProject($f1=[$0]) HiveAggregate(group=[{1}]) HiveFilter(condition=[>($3, 4)]) HiveProject(substr=[$2], i_item_sk=[$1], d_date=[$0], $f3=[$3]) @@ -201,9 +201,9 @@ HiveAggregate(group=[{}], agg#0=[sum($0)]) HiveProject(d_date_sk=[$0]) HiveFilter(condition=[AND(=($6, 1999), =($8, 1), IS NOT NULL($0))]) HiveTableScan(table=[[default, date_dim]], table:alias=[date_dim]) - HiveProject(c_customer_sk=[$0]) + HiveProject($f0=[$0]) HiveJoin(condition=[>($1, $2)], joinType=[inner], algorithm=[none], cost=[not available]) - HiveProject(c_customer_sk=[$0], $f1=[$1]) + HiveProject($f0=[$0], $f1=[$1]) HiveFilter(condition=[IS NOT NULL($1)]) HiveAggregate(group=[{2}], agg#0=[sum($1)]) HiveJoin(condition=[=($0, $2)], joinType=[inner], algorithm=[none], cost=[not available]) diff --git a/ql/src/test/results/clientpositive/perf/tez/cbo_query24.q.out b/ql/src/test/results/clientpositive/perf/tez/cbo_query24.q.out index 6c4426c0f3..c15748f492 100644 --- a/ql/src/test/results/clientpositive/perf/tez/cbo_query24.q.out +++ b/ql/src/test/results/clientpositive/perf/tez/cbo_query24.q.out @@ -116,7 +116,7 @@ POSTHOOK: Output: hdfs://### HDFS PATH ### CBO PLAN: HiveProject($f0=[$0], $f1=[$1], $f2=[$2], $f3=[$3]) HiveJoin(condition=[>($3, $4)], joinType=[inner], algorithm=[none], cost=[not available]) - HiveProject(c_last_name=[$0], c_first_name=[$1], s_store_name=[$2], $f3=[$3]) + HiveProject($f0=[$0], $f1=[$1], $f2=[$2], $f3=[$3]) HiveFilter(condition=[IS NOT NULL($3)]) HiveProject(c_last_name=[$1], c_first_name=[$0], s_store_name=[$2], $f3=[$3]) HiveAggregate(group=[{4, 5, 7}], agg#0=[sum($9)]) diff --git a/ql/src/test/results/clientpositive/perf/tez/cbo_query30.q.out b/ql/src/test/results/clientpositive/perf/tez/cbo_query30.q.out index 833652a21f..8b554e9dd6 100644 --- a/ql/src/test/results/clientpositive/perf/tez/cbo_query30.q.out +++ b/ql/src/test/results/clientpositive/perf/tez/cbo_query30.q.out @@ -79,9 +79,9 @@ HiveSortLimit(sort0=[$0], sort1=[$1], sort2=[$2], sort3=[$3], sort4=[$4], sort5= HiveProject(ca_address_sk=[$0]) HiveFilter(condition=[AND(=($8, _UTF-16LE'IL'), IS NOT NULL($0))]) HiveTableScan(table=[[default, customer_address]], table:alias=[customer_address]) - HiveProject(wr_returning_customer_sk=[$0], ca_state=[$1], $f2=[$2], _o__c0=[$3], ctr_state=[$4]) + HiveProject($f0=[$0], $f1=[$1], $f2=[$2], _o__c0=[$3], ctr_state=[$4]) HiveJoin(condition=[AND(=($1, $4), >($2, $3))], joinType=[inner], algorithm=[none], cost=[not available]) - HiveProject(wr_returning_customer_sk=[$0], ca_state=[$1], $f2=[$2]) + HiveProject($f0=[$0], $f1=[$1], $f2=[$2]) HiveFilter(condition=[IS NOT NULL($2)]) HiveProject(wr_returning_customer_sk=[$1], ca_state=[$0], $f2=[$2]) HiveAggregate(group=[{1, 3}], agg#0=[sum($5)]) diff --git a/ql/src/test/results/clientpositive/perf/tez/cbo_query31.q.out b/ql/src/test/results/clientpositive/perf/tez/cbo_query31.q.out index 310c004248..63e9cafbfb 100644 --- a/ql/src/test/results/clientpositive/perf/tez/cbo_query31.q.out +++ b/ql/src/test/results/clientpositive/perf/tez/cbo_query31.q.out @@ -154,7 +154,7 @@ HiveProject(ca_county=[$8], d_year=[CAST(2000):INTEGER], web_q1_q2_increase=[/($ HiveProject(d_date_sk=[$0]) HiveFilter(condition=[AND(=($10, 2), =($6, 2000), IS NOT NULL($0))]) HiveTableScan(table=[[default, date_dim]], table:alias=[date_dim]) - HiveProject(ca_county=[$0], $f1=[$1], ca_county0=[$2], $f10=[$3], ca_county1=[$4], $f11=[$5]) + HiveProject($f0=[$0], $f1=[$1], $f00=[$2], $f10=[$3], $f01=[$4], $f11=[$5]) HiveJoin(condition=[=($0, $4)], joinType=[inner], algorithm=[none], cost=[not available]) HiveJoin(condition=[=($2, $0)], joinType=[inner], algorithm=[none], cost=[not available]) HiveProject(ca_county=[$0], $f1=[$1]) diff --git a/ql/src/test/results/clientpositive/perf/tez/cbo_query33.q.out b/ql/src/test/results/clientpositive/perf/tez/cbo_query33.q.out index a47db4e383..8419b7067a 100644 --- a/ql/src/test/results/clientpositive/perf/tez/cbo_query33.q.out +++ b/ql/src/test/results/clientpositive/perf/tez/cbo_query33.q.out @@ -162,9 +162,9 @@ POSTHOOK: Input: default@web_sales POSTHOOK: Output: hdfs://### HDFS PATH ### CBO PLAN: HiveSortLimit(sort0=[$1], dir0=[ASC], fetch=[100]) - HiveProject(i_manufact_id=[$0], $f1=[$1]) + HiveProject($f0=[$0], $f1=[$1]) HiveAggregate(group=[{0}], agg#0=[sum($1)]) - HiveProject(i_manufact_id=[$0], $f1=[$1]) + HiveProject($f0=[$0], $f1=[$1]) HiveUnion(all=[true]) HiveProject(i_manufact_id=[$0], $f1=[$1]) HiveAggregate(group=[{1}], agg#0=[sum($7)]) diff --git a/ql/src/test/results/clientpositive/perf/tez/cbo_query34.q.out b/ql/src/test/results/clientpositive/perf/tez/cbo_query34.q.out index b88ee6ee80..aeb7389cd1 100644 --- a/ql/src/test/results/clientpositive/perf/tez/cbo_query34.q.out +++ b/ql/src/test/results/clientpositive/perf/tez/cbo_query34.q.out @@ -77,7 +77,7 @@ HiveSortLimit(sort0=[$0], sort1=[$1], sort2=[$2], sort3=[$3], dir0=[ASC], dir1=[ HiveProject(c_customer_sk=[$0], c_salutation=[$7], c_first_name=[$8], c_last_name=[$9], c_preferred_cust_flag=[$10]) HiveFilter(condition=[IS NOT NULL($0)]) HiveTableScan(table=[[default, customer]], table:alias=[customer]) - HiveProject(ss_ticket_number=[$0], ss_customer_sk=[$1], $f2=[$2]) + HiveProject($f0=[$0], $f1=[$1], $f2=[$2]) HiveFilter(condition=[BETWEEN(false, $2, 15:BIGINT, 20:BIGINT)]) HiveProject(ss_ticket_number=[$1], ss_customer_sk=[$0], $f2=[$2]) HiveAggregate(group=[{1, 4}], agg#0=[count()]) diff --git a/ql/src/test/results/clientpositive/perf/tez/cbo_query38.q.out b/ql/src/test/results/clientpositive/perf/tez/cbo_query38.q.out index b23be251fd..dd728815c8 100644 --- a/ql/src/test/results/clientpositive/perf/tez/cbo_query38.q.out +++ b/ql/src/test/results/clientpositive/perf/tez/cbo_query38.q.out @@ -56,10 +56,10 @@ POSTHOOK: Input: default@web_sales POSTHOOK: Output: hdfs://### HDFS PATH ### CBO PLAN: HiveAggregate(group=[{}], agg#0=[count()]) - HiveProject(c_last_name=[$0], c_first_name=[$1], d_date=[$2], $f3=[$3]) + HiveProject($f0=[$0], $f1=[$1], $f2=[$2], $f3=[$3]) HiveFilter(condition=[=($3, 3)]) HiveAggregate(group=[{0, 1, 2}], agg#0=[count($3)]) - HiveProject(c_last_name=[$0], c_first_name=[$1], d_date=[$2], $f3=[$3]) + HiveProject($f0=[$0], $f1=[$1], $f2=[$2], $f3=[$3]) HiveUnion(all=[true]) HiveProject(c_last_name=[$1], c_first_name=[$0], d_date=[$2], $f3=[$3]) HiveAggregate(group=[{0, 1, 2}], agg#0=[count()]) diff --git a/ql/src/test/results/clientpositive/perf/tez/cbo_query54.q.out b/ql/src/test/results/clientpositive/perf/tez/cbo_query54.q.out index 26f5014cd0..0e54317de5 100644 --- a/ql/src/test/results/clientpositive/perf/tez/cbo_query54.q.out +++ b/ql/src/test/results/clientpositive/perf/tez/cbo_query54.q.out @@ -148,7 +148,7 @@ HiveSortLimit(sort0=[$0], sort1=[$1], dir0=[ASC], dir1=[ASC], fetch=[100]) HiveProject(d_date_sk=[$0], d_month_seq=[$3]) HiveFilter(condition=[AND(IS NOT NULL($0), IS NOT NULL($3))]) HiveTableScan(table=[[default, date_dim]], table:alias=[date_dim]) - HiveProject(ca_address_sk=[$0], ca_county=[$1], ca_state=[$2], s_county=[$3], s_state=[$4], c_customer_sk=[$5], c_current_addr_sk=[$6]) + HiveProject(ca_address_sk=[$0], ca_county=[$1], ca_state=[$2], s_county=[$3], s_state=[$4], $f0=[$5], $f1=[$6]) HiveJoin(condition=[=($6, $0)], joinType=[inner], algorithm=[none], cost=[not available]) HiveJoin(condition=[AND(=($1, $3), =($2, $4))], joinType=[inner], algorithm=[none], cost=[not available]) HiveProject(ca_address_sk=[$0], ca_county=[$7], ca_state=[$8]) diff --git a/ql/src/test/results/clientpositive/perf/tez/cbo_query56.q.out b/ql/src/test/results/clientpositive/perf/tez/cbo_query56.q.out index 3ee0356747..8a3780b20d 100644 --- a/ql/src/test/results/clientpositive/perf/tez/cbo_query56.q.out +++ b/ql/src/test/results/clientpositive/perf/tez/cbo_query56.q.out @@ -148,9 +148,9 @@ POSTHOOK: Input: default@web_sales POSTHOOK: Output: hdfs://### HDFS PATH ### CBO PLAN: HiveSortLimit(sort0=[$1], dir0=[ASC], fetch=[100]) - HiveProject(i_item_id=[$0], $f1=[$1]) + HiveProject($f0=[$0], $f1=[$1]) HiveAggregate(group=[{0}], agg#0=[sum($1)]) - HiveProject(i_item_id=[$0], $f1=[$1]) + HiveProject($f0=[$0], $f1=[$1]) HiveUnion(all=[true]) HiveProject(i_item_id=[$0], $f1=[$1]) HiveAggregate(group=[{1}], agg#0=[sum($7)]) diff --git a/ql/src/test/results/clientpositive/perf/tez/cbo_query60.q.out b/ql/src/test/results/clientpositive/perf/tez/cbo_query60.q.out index fb4ca86719..8802220d23 100644 --- a/ql/src/test/results/clientpositive/perf/tez/cbo_query60.q.out +++ b/ql/src/test/results/clientpositive/perf/tez/cbo_query60.q.out @@ -168,9 +168,9 @@ POSTHOOK: Input: default@web_sales POSTHOOK: Output: hdfs://### HDFS PATH ### CBO PLAN: HiveSortLimit(sort0=[$0], sort1=[$1], dir0=[ASC], dir1=[ASC], fetch=[100]) - HiveProject(i_item_id=[$0], $f1=[$1]) + HiveProject($f0=[$0], $f1=[$1]) HiveAggregate(group=[{0}], agg#0=[sum($1)]) - HiveProject(i_item_id=[$0], $f1=[$1]) + HiveProject($f0=[$0], $f1=[$1]) HiveUnion(all=[true]) HiveProject(i_item_id=[$0], $f1=[$1]) HiveAggregate(group=[{1}], agg#0=[sum($7)]) diff --git a/ql/src/test/results/clientpositive/perf/tez/cbo_query65.q.out b/ql/src/test/results/clientpositive/perf/tez/cbo_query65.q.out index e739cb88e4..5d7486cc8c 100644 --- a/ql/src/test/results/clientpositive/perf/tez/cbo_query65.q.out +++ b/ql/src/test/results/clientpositive/perf/tez/cbo_query65.q.out @@ -76,7 +76,7 @@ HiveSortLimit(sort0=[$0], sort1=[$1], dir0=[ASC], dir1=[ASC], fetch=[100]) HiveFilter(condition=[IS NOT NULL($0)]) HiveTableScan(table=[[default, store]], table:alias=[store]) HiveJoin(condition=[AND(=($3, $0), <=($2, $4))], joinType=[inner], algorithm=[none], cost=[not available]) - HiveProject(ss_store_sk=[$0], ss_item_sk=[$1], $f2=[$2]) + HiveProject($f0=[$0], $f1=[$1], $f2=[$2]) HiveFilter(condition=[IS NOT NULL($2)]) HiveProject(ss_store_sk=[$1], ss_item_sk=[$0], $f2=[$2]) HiveAggregate(group=[{1, 2}], agg#0=[sum($3)]) diff --git a/ql/src/test/results/clientpositive/perf/tez/cbo_query73.q.out b/ql/src/test/results/clientpositive/perf/tez/cbo_query73.q.out index 8f686fed36..c7b8ac9114 100644 --- a/ql/src/test/results/clientpositive/perf/tez/cbo_query73.q.out +++ b/ql/src/test/results/clientpositive/perf/tez/cbo_query73.q.out @@ -71,7 +71,7 @@ HiveSortLimit(sort0=[$5], dir0=[DESC-nulls-last]) HiveProject(c_customer_sk=[$0], c_salutation=[$7], c_first_name=[$8], c_last_name=[$9], c_preferred_cust_flag=[$10]) HiveFilter(condition=[IS NOT NULL($0)]) HiveTableScan(table=[[default, customer]], table:alias=[customer]) - HiveProject(ss_ticket_number=[$0], ss_customer_sk=[$1], $f2=[$2]) + HiveProject($f0=[$0], $f1=[$1], $f2=[$2]) HiveFilter(condition=[BETWEEN(false, $2, 1:BIGINT, 5:BIGINT)]) HiveProject(ss_ticket_number=[$1], ss_customer_sk=[$0], $f2=[$2]) HiveAggregate(group=[{1, 4}], agg#0=[count()]) diff --git a/ql/src/test/results/clientpositive/perf/tez/cbo_query78.q.out b/ql/src/test/results/clientpositive/perf/tez/cbo_query78.q.out index 0c314a6141..a5cbab2344 100644 --- a/ql/src/test/results/clientpositive/perf/tez/cbo_query78.q.out +++ b/ql/src/test/results/clientpositive/perf/tez/cbo_query78.q.out @@ -150,7 +150,7 @@ HiveSortLimit(fetch=[100]) HiveProject(sr_item_sk=[$2], sr_ticket_number=[$9]) HiveFilter(condition=[AND(IS NOT NULL($9), IS NOT NULL($2))]) HiveTableScan(table=[[default, store_returns]], table:alias=[store_returns]) - HiveProject(ws_item_sk=[$0], ws_bill_customer_sk=[$1], $f2=[$2], $f3=[$3], $f4=[$4]) + HiveProject($f1=[$0], $f2=[$1], $f2_0=[$2], $f3=[$3], $f4=[$4]) HiveFilter(condition=[>($2, 0)]) HiveAggregate(group=[{2, 3}], agg#0=[sum($4)], agg#1=[sum($5)], agg#2=[sum($6)]) HiveJoin(condition=[=($1, $0)], joinType=[inner], algorithm=[none], cost=[not available]) diff --git a/ql/src/test/results/clientpositive/perf/tez/cbo_query81.q.out b/ql/src/test/results/clientpositive/perf/tez/cbo_query81.q.out index 3e63c0c6b6..bab722708c 100644 --- a/ql/src/test/results/clientpositive/perf/tez/cbo_query81.q.out +++ b/ql/src/test/results/clientpositive/perf/tez/cbo_query81.q.out @@ -80,9 +80,9 @@ HiveProject(c_customer_id=[$0], c_salutation=[$1], c_first_name=[$2], c_last_nam HiveProject(ca_address_sk=[$0], ca_street_number=[$2], ca_street_name=[$3], ca_street_type=[$4], ca_suite_number=[$5], ca_city=[$6], ca_county=[$7], ca_zip=[$9], ca_country=[$10], ca_gmt_offset=[$11], ca_location_type=[$12]) HiveFilter(condition=[AND(=($8, _UTF-16LE'IL'), IS NOT NULL($0))]) HiveTableScan(table=[[default, customer_address]], table:alias=[customer_address]) - HiveProject(cr_returning_customer_sk=[$0], ca_state=[$1], $f2=[$2], _o__c0=[$3], ctr_state=[$4]) + HiveProject($f0=[$0], $f1=[$1], $f2=[$2], _o__c0=[$3], ctr_state=[$4]) HiveJoin(condition=[AND(=($1, $4), >($2, $3))], joinType=[inner], algorithm=[none], cost=[not available]) - HiveProject(cr_returning_customer_sk=[$0], ca_state=[$1], $f2=[$2]) + HiveProject($f0=[$0], $f1=[$1], $f2=[$2]) HiveFilter(condition=[IS NOT NULL($2)]) HiveProject(cr_returning_customer_sk=[$1], ca_state=[$0], $f2=[$2]) HiveAggregate(group=[{1, 3}], agg#0=[sum($5)]) diff --git a/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_ext_query1.q.out b/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_ext_query1.q.out index 7b754f736d..896a30b250 100644 --- a/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_ext_query1.q.out +++ b/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_ext_query1.q.out @@ -67,7 +67,7 @@ HiveSortLimit(sort0=[$0], dir0=[ASC], fetch=[100]): rowcount = ###Masked###, cum HiveProject(s_store_sk=[$0]): rowcount = ###Masked###, cumulative cost = ###Masked###, id = ###Masked### HiveFilter(condition=[=($24, _UTF-16LE'NM')]): rowcount = ###Masked###, cumulative cost = ###Masked###, id = ###Masked### HiveTableScan(table=[[default, store]], table:alias=[store]): rowcount = ###Masked###, cumulative cost = ###Masked###, id = ###Masked### - HiveProject(sr_customer_sk=[$0], sr_store_sk=[$1], $f2=[$2]): rowcount = ###Masked###, cumulative cost = ###Masked###, id = ###Masked### + HiveProject($f0=[$0], $f1=[$1], $f2=[$2]): rowcount = ###Masked###, cumulative cost = ###Masked###, id = ###Masked### HiveFilter(condition=[IS NOT NULL($2)]): rowcount = ###Masked###, cumulative cost = ###Masked###, id = ###Masked### HiveAggregate(group=[{1, 2}], agg#0=[sum($3)]): rowcount = ###Masked###, cumulative cost = ###Masked###, id = ###Masked### HiveJoin(condition=[=($0, $4)], joinType=[inner], algorithm=[none], cost=[not available]): rowcount = ###Masked###, cumulative cost = ###Masked###, id = ###Masked### @@ -159,7 +159,7 @@ HiveSortLimit(sort0=[$0], dir0=[ASC], fetch=[100]): rowcount = ###Masked###, cum HiveProject(s_store_sk=[$0]): rowcount = ###Masked###, cumulative cost = ###Masked###, id = ###Masked### HiveFilter(condition=[=($24, _UTF-16LE'NM')]): rowcount = ###Masked###, cumulative cost = ###Masked###, id = ###Masked### HiveTableScan(table=[[default, store]], table:alias=[store]): rowcount = ###Masked###, cumulative cost = ###Masked###, id = ###Masked### - HiveProject(sr_customer_sk=[$0], sr_store_sk=[$1], $f2=[$2]): rowcount = ###Masked###, cumulative cost = ###Masked###, id = ###Masked### + HiveProject($f0=[$0], $f1=[$1], $f2=[$2]): rowcount = ###Masked###, cumulative cost = ###Masked###, id = ###Masked### HiveFilter(condition=[IS NOT NULL($2)]): rowcount = ###Masked###, cumulative cost = ###Masked###, id = ###Masked### HiveAggregate(group=[{1, 2}], agg#0=[sum($3)]): rowcount = ###Masked###, cumulative cost = ###Masked###, id = ###Masked### HiveJoin(condition=[=($0, $4)], joinType=[inner], algorithm=[none], cost=[{5.175767820386722E7 rows, 0.0 cpu, 0.0 io}]): rowcount = ###Masked###, cumulative cost = ###Masked###, id = ###Masked### diff --git a/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query1.q.out b/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query1.q.out index d50691434d..c8a1ac53b4 100644 --- a/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query1.q.out +++ b/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query1.q.out @@ -67,7 +67,7 @@ HiveSortLimit(sort0=[$0], dir0=[ASC], fetch=[100]) HiveProject(s_store_sk=[$0]) HiveFilter(condition=[=($24, _UTF-16LE'NM')]) HiveTableScan(table=[[default, store]], table:alias=[store]) - HiveProject(sr_customer_sk=[$0], sr_store_sk=[$1], $f2=[$2]) + HiveProject($f0=[$0], $f1=[$1], $f2=[$2]) HiveFilter(condition=[IS NOT NULL($2)]) HiveAggregate(group=[{1, 2}], agg#0=[sum($3)]) HiveJoin(condition=[=($0, $4)], joinType=[inner], algorithm=[none], cost=[not available]) diff --git a/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query14.q.out b/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query14.q.out index 7eacbc758d..cf735d2ee6 100644 --- a/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query14.q.out +++ b/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query14.q.out @@ -243,7 +243,7 @@ HiveSortLimit(sort0=[$0], sort1=[$1], sort2=[$2], sort3=[$3], dir0=[ASC], dir1=[ HiveProject($f0=[$0], $f1=[$1], $f2=[$2]) HiveFilter(condition=[=($3, 3)]) HiveAggregate(group=[{0, 1, 2}], agg#0=[count($3)]) - HiveProject(i_brand_id=[$0], i_class_id=[$1], i_category_id=[$2], $f3=[$3]) + HiveProject(brand_id=[$0], class_id=[$1], category_id=[$2], $f3=[$3]) HiveUnion(all=[true]) HiveProject(i_brand_id=[$0], i_class_id=[$1], i_category_id=[$2], $f3=[$3]) HiveAggregate(group=[{4, 5, 6}], agg#0=[count()]) @@ -339,7 +339,7 @@ HiveSortLimit(sort0=[$0], sort1=[$1], sort2=[$2], sort3=[$3], dir0=[ASC], dir1=[ HiveProject($f0=[$0], $f1=[$1], $f2=[$2]) HiveFilter(condition=[=($3, 3)]) HiveAggregate(group=[{0, 1, 2}], agg#0=[count($3)]) - HiveProject(i_brand_id=[$0], i_class_id=[$1], i_category_id=[$2], $f3=[$3]) + HiveProject(brand_id=[$0], class_id=[$1], category_id=[$2], $f3=[$3]) HiveUnion(all=[true]) HiveProject(i_brand_id=[$0], i_class_id=[$1], i_category_id=[$2], $f3=[$3]) HiveAggregate(group=[{4, 5, 6}], agg#0=[count()]) @@ -435,7 +435,7 @@ HiveSortLimit(sort0=[$0], sort1=[$1], sort2=[$2], sort3=[$3], dir0=[ASC], dir1=[ HiveProject($f0=[$0], $f1=[$1], $f2=[$2]) HiveFilter(condition=[=($3, 3)]) HiveAggregate(group=[{0, 1, 2}], agg#0=[count($3)]) - HiveProject(i_brand_id=[$0], i_class_id=[$1], i_category_id=[$2], $f3=[$3]) + HiveProject(brand_id=[$0], class_id=[$1], category_id=[$2], $f3=[$3]) HiveUnion(all=[true]) HiveProject(i_brand_id=[$0], i_class_id=[$1], i_category_id=[$2], $f3=[$3]) HiveAggregate(group=[{4, 5, 6}], agg#0=[count()]) diff --git a/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query23.q.out b/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query23.q.out index 070894d6c9..5e194cd1dc 100644 --- a/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query23.q.out +++ b/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query23.q.out @@ -152,7 +152,7 @@ HiveAggregate(group=[{}], agg#0=[sum($0)]) HiveProject(d_date_sk=[$0]) HiveFilter(condition=[AND(=($6, 1999), =($8, 1))]) HiveTableScan(table=[[default, date_dim]], table:alias=[date_dim]) - HiveProject(i_item_sk=[$0]) + HiveProject($f1=[$0]) HiveFilter(condition=[>($2, 4)]) HiveProject(i_item_sk=[$1], d_date=[$0], $f2=[$2]) HiveAggregate(group=[{3, 4}], agg#0=[count()]) @@ -198,7 +198,7 @@ HiveAggregate(group=[{}], agg#0=[sum($0)]) HiveProject(d_date_sk=[$0]) HiveFilter(condition=[AND(=($6, 1999), =($8, 1))]) HiveTableScan(table=[[default, date_dim]], table:alias=[date_dim]) - HiveProject(i_item_sk=[$0]) + HiveProject($f1=[$0]) HiveFilter(condition=[>($2, 4)]) HiveProject(i_item_sk=[$1], d_date=[$0], $f2=[$2]) HiveAggregate(group=[{3, 4}], agg#0=[count()]) diff --git a/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query24.q.out b/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query24.q.out index 9d93d73ec9..5fedc56a77 100644 --- a/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query24.q.out +++ b/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query24.q.out @@ -116,7 +116,7 @@ POSTHOOK: Output: hdfs://### HDFS PATH ### CBO PLAN: HiveProject($f0=[$0], $f1=[$1], $f2=[$2], $f3=[$3]) HiveJoin(condition=[>($3, $4)], joinType=[inner], algorithm=[none], cost=[not available]) - HiveProject(c_last_name=[$0], c_first_name=[$1], s_store_name=[$2], $f3=[$3]) + HiveProject($f0=[$0], $f1=[$1], $f2=[$2], $f3=[$3]) HiveFilter(condition=[IS NOT NULL($3)]) HiveProject(c_last_name=[$1], c_first_name=[$0], s_store_name=[$2], $f3=[$3]) HiveAggregate(group=[{0, 1, 3}], agg#0=[sum($9)]) diff --git a/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query30.q.out b/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query30.q.out index 564fe6af99..48c7dfb5d8 100644 --- a/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query30.q.out +++ b/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query30.q.out @@ -79,9 +79,9 @@ HiveSortLimit(sort0=[$0], sort1=[$1], sort2=[$2], sort3=[$3], sort4=[$4], sort5= HiveProject(ca_address_sk=[$0]) HiveFilter(condition=[=($8, _UTF-16LE'IL')]) HiveTableScan(table=[[default, customer_address]], table:alias=[customer_address]) - HiveProject(wr_returning_customer_sk=[$0], ca_state=[$1], $f2=[$2], _o__c0=[$3], ctr_state=[$4]) + HiveProject($f0=[$0], $f1=[$1], $f2=[$2], _o__c0=[$3], ctr_state=[$4]) HiveJoin(condition=[AND(=($1, $4), >($2, $3))], joinType=[inner], algorithm=[none], cost=[not available]) - HiveProject(wr_returning_customer_sk=[$0], ca_state=[$1], $f2=[$2]) + HiveProject($f0=[$0], $f1=[$1], $f2=[$2]) HiveFilter(condition=[IS NOT NULL($2)]) HiveProject(wr_returning_customer_sk=[$1], ca_state=[$0], $f2=[$2]) HiveAggregate(group=[{1, 3}], agg#0=[sum($5)]) diff --git a/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query31.q.out b/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query31.q.out index 55435c7049..1c808e8c22 100644 --- a/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query31.q.out +++ b/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query31.q.out @@ -154,7 +154,7 @@ HiveProject(ca_county=[$8], d_year=[CAST(2000):INTEGER], web_q1_q2_increase=[/($ HiveProject(d_date_sk=[$0]) HiveFilter(condition=[AND(=($10, 2), =($6, 2000))]) HiveTableScan(table=[[default, date_dim]], table:alias=[date_dim]) - HiveProject(ca_county=[$0], $f1=[$1], ca_county0=[$2], $f10=[$3], ca_county1=[$4], $f11=[$5]) + HiveProject($f0=[$0], $f1=[$1], $f00=[$2], $f10=[$3], $f01=[$4], $f11=[$5]) HiveJoin(condition=[=($0, $4)], joinType=[inner], algorithm=[none], cost=[not available]) HiveJoin(condition=[=($2, $0)], joinType=[inner], algorithm=[none], cost=[not available]) HiveProject(ca_county=[$0], $f1=[$1]) diff --git a/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query33.q.out b/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query33.q.out index d917a04afb..673dc3da57 100644 --- a/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query33.q.out +++ b/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query33.q.out @@ -162,9 +162,9 @@ POSTHOOK: Input: default@web_sales POSTHOOK: Output: hdfs://### HDFS PATH ### CBO PLAN: HiveSortLimit(sort0=[$1], dir0=[ASC], fetch=[100]) - HiveProject(i_manufact_id=[$0], $f1=[$1]) + HiveProject($f0=[$0], $f1=[$1]) HiveAggregate(group=[{0}], agg#0=[sum($1)]) - HiveProject(i_manufact_id=[$0], $f1=[$1]) + HiveProject($f0=[$0], $f1=[$1]) HiveUnion(all=[true]) HiveProject(i_manufact_id=[$0], $f1=[$1]) HiveAggregate(group=[{1}], agg#0=[sum($7)]) diff --git a/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query34.q.out b/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query34.q.out index 9f6a6f7ff9..e19dd57112 100644 --- a/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query34.q.out +++ b/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query34.q.out @@ -76,7 +76,7 @@ HiveSortLimit(sort0=[$0], sort1=[$1], sort2=[$2], sort3=[$3], dir0=[ASC], dir1=[ HiveJoin(condition=[=($6, $0)], joinType=[inner], algorithm=[none], cost=[not available]) HiveProject(c_customer_sk=[$0], c_salutation=[$7], c_first_name=[$8], c_last_name=[$9], c_preferred_cust_flag=[$10]) HiveTableScan(table=[[default, customer]], table:alias=[customer]) - HiveProject(ss_ticket_number=[$0], ss_customer_sk=[$1], $f2=[$2]) + HiveProject($f0=[$0], $f1=[$1], $f2=[$2]) HiveFilter(condition=[BETWEEN(false, $2, 15:BIGINT, 20:BIGINT)]) HiveProject(ss_ticket_number=[$1], ss_customer_sk=[$0], $f2=[$2]) HiveAggregate(group=[{1, 4}], agg#0=[count()]) diff --git a/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query38.q.out b/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query38.q.out index a08b35d90e..f410de2bbe 100644 --- a/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query38.q.out +++ b/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query38.q.out @@ -56,10 +56,10 @@ POSTHOOK: Input: default@web_sales POSTHOOK: Output: hdfs://### HDFS PATH ### CBO PLAN: HiveAggregate(group=[{}], agg#0=[count()]) - HiveProject(c_last_name=[$0], c_first_name=[$1], d_date=[$2], $f3=[$3]) + HiveProject($f0=[$0], $f1=[$1], $f2=[$2], $f3=[$3]) HiveFilter(condition=[=($3, 3)]) HiveAggregate(group=[{0, 1, 2}], agg#0=[count($3)]) - HiveProject(c_last_name=[$0], c_first_name=[$1], d_date=[$2], $f3=[$3]) + HiveProject($f0=[$0], $f1=[$1], $f2=[$2], $f3=[$3]) HiveUnion(all=[true]) HiveProject(c_last_name=[$1], c_first_name=[$0], d_date=[$2], $f3=[$3]) HiveAggregate(group=[{0, 1, 2}], agg#0=[count()]) diff --git a/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query54.q.out b/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query54.q.out index cdeab44f60..af3bf59ba2 100644 --- a/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query54.q.out +++ b/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query54.q.out @@ -161,7 +161,7 @@ HiveSortLimit(sort0=[$0], sort1=[$1], dir0=[ASC], dir1=[ASC], fetch=[100]) HiveProject($f0=[+($3, 1)]) HiveFilter(condition=[AND(=($6, 1999), =($8, 3))]) HiveTableScan(table=[[default, date_dim]], table:alias=[date_dim]) - HiveProject(c_customer_sk=[$0], c_current_addr_sk=[$1], ca_address_sk=[$2], ca_county=[$3], ca_state=[$4], s_county=[$5], s_state=[$6]) + HiveProject($f0=[$0], $f1=[$1], ca_address_sk=[$2], ca_county=[$3], ca_state=[$4], s_county=[$5], s_state=[$6]) HiveJoin(condition=[=($1, $2)], joinType=[inner], algorithm=[none], cost=[not available]) HiveProject(c_customer_sk=[$0], c_current_addr_sk=[$1]) HiveAggregate(group=[{0, 1}]) diff --git a/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query56.q.out b/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query56.q.out index e1b2fd3d51..e94e9988b1 100644 --- a/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query56.q.out +++ b/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query56.q.out @@ -148,9 +148,9 @@ POSTHOOK: Input: default@web_sales POSTHOOK: Output: hdfs://### HDFS PATH ### CBO PLAN: HiveSortLimit(sort0=[$1], dir0=[ASC], fetch=[100]) - HiveProject(i_item_id=[$0], $f1=[$1]) + HiveProject($f0=[$0], $f1=[$1]) HiveAggregate(group=[{0}], agg#0=[sum($1)]) - HiveProject(i_item_id=[$0], $f1=[$1]) + HiveProject($f0=[$0], $f1=[$1]) HiveUnion(all=[true]) HiveProject(i_item_id=[$0], $f1=[$1]) HiveAggregate(group=[{1}], agg#0=[sum($7)]) diff --git a/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query6.q.out b/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query6.q.out index 00aafffb60..c22e0e98af 100644 --- a/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query6.q.out +++ b/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query6.q.out @@ -97,7 +97,7 @@ HiveSortLimit(sort0=[$1], dir0=[ASC], fetch=[100]) HiveAggregate(group=[{12}], agg#0=[sum($5)], agg#1=[count($5)]) HiveFilter(condition=[IS NOT NULL($12)]) HiveTableScan(table=[[default, item]], table:alias=[j]) - HiveProject(d_date_sk=[$0], d_month_seq=[$1], d_month_seq0=[$2]) + HiveProject(d_date_sk=[$0], d_month_seq=[$1], $f0=[$2]) HiveJoin(condition=[=($1, $2)], joinType=[inner], algorithm=[none], cost=[not available]) HiveProject(d_date_sk=[$0], d_month_seq=[$3]) HiveFilter(condition=[IS NOT NULL($3)]) diff --git a/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query60.q.out b/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query60.q.out index be97f9d182..51f2ad97c6 100644 --- a/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query60.q.out +++ b/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query60.q.out @@ -168,9 +168,9 @@ POSTHOOK: Input: default@web_sales POSTHOOK: Output: hdfs://### HDFS PATH ### CBO PLAN: HiveSortLimit(sort0=[$0], sort1=[$1], dir0=[ASC], dir1=[ASC], fetch=[100]) - HiveProject(i_item_id=[$0], $f1=[$1]) + HiveProject($f0=[$0], $f1=[$1]) HiveAggregate(group=[{0}], agg#0=[sum($1)]) - HiveProject(i_item_id=[$0], $f1=[$1]) + HiveProject($f0=[$0], $f1=[$1]) HiveUnion(all=[true]) HiveProject(i_item_id=[$0], $f1=[$1]) HiveAggregate(group=[{1}], agg#0=[sum($7)]) diff --git a/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query65.q.out b/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query65.q.out index 4e4bfcf1ba..6028a5c1d6 100644 --- a/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query65.q.out +++ b/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query65.q.out @@ -72,7 +72,7 @@ HiveSortLimit(sort0=[$0], sort1=[$1], dir0=[ASC], dir1=[ASC], fetch=[100]) HiveProject(s_store_sk=[$0], s_store_name=[$5]) HiveTableScan(table=[[default, store]], table:alias=[store]) HiveJoin(condition=[AND(=($3, $0), <=($2, $4))], joinType=[inner], algorithm=[none], cost=[not available]) - HiveProject(ss_store_sk=[$0], ss_item_sk=[$1], $f2=[$2]) + HiveProject($f0=[$0], $f1=[$1], $f2=[$2]) HiveFilter(condition=[IS NOT NULL($2)]) HiveProject(ss_store_sk=[$1], ss_item_sk=[$0], $f2=[$2]) HiveAggregate(group=[{1, 2}], agg#0=[sum($3)]) diff --git a/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query73.q.out b/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query73.q.out index 3fc0b5549d..1b02c361a6 100644 --- a/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query73.q.out +++ b/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query73.q.out @@ -70,7 +70,7 @@ HiveSortLimit(sort0=[$5], dir0=[DESC-nulls-last]) HiveJoin(condition=[=($6, $0)], joinType=[inner], algorithm=[none], cost=[not available]) HiveProject(c_customer_sk=[$0], c_salutation=[$7], c_first_name=[$8], c_last_name=[$9], c_preferred_cust_flag=[$10]) HiveTableScan(table=[[default, customer]], table:alias=[customer]) - HiveProject(ss_ticket_number=[$0], ss_customer_sk=[$1], $f2=[$2]) + HiveProject($f0=[$0], $f1=[$1], $f2=[$2]) HiveFilter(condition=[BETWEEN(false, $2, 1:BIGINT, 5:BIGINT)]) HiveProject(ss_ticket_number=[$1], ss_customer_sk=[$0], $f2=[$2]) HiveAggregate(group=[{1, 4}], agg#0=[count()]) diff --git a/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query78.q.out b/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query78.q.out index 9893ebc259..6e99d4f46a 100644 --- a/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query78.q.out +++ b/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query78.q.out @@ -165,7 +165,7 @@ HiveSortLimit(fetch=[100]) HiveTableScan(table=[[default, catalog_sales]], table:alias=[catalog_sales]) HiveProject(cr_item_sk=[$2], cr_order_number=[$16]) HiveTableScan(table=[[default, catalog_returns]], table:alias=[catalog_returns]) - HiveProject(ws_item_sk=[$0], ws_bill_customer_sk=[$1], $f2=[$2], $f3=[$3], $f4=[$4]) + HiveProject($f1=[$0], $f2=[$1], $f2_0=[$2], $f3=[$3], $f4=[$4]) HiveFilter(condition=[>($2, 0)]) HiveAggregate(group=[{2, 3}], agg#0=[sum($4)], agg#1=[sum($5)], agg#2=[sum($6)]) HiveJoin(condition=[=($1, $0)], joinType=[inner], algorithm=[none], cost=[not available]) diff --git a/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query81.q.out b/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query81.q.out index fd293e35e8..1568fdeed0 100644 --- a/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query81.q.out +++ b/ql/src/test/results/clientpositive/perf/tez/constraints/cbo_query81.q.out @@ -80,9 +80,9 @@ HiveProject(c_customer_id=[$0], c_salutation=[$1], c_first_name=[$2], c_last_nam HiveProject(ca_address_sk=[$0], ca_street_number=[$2], ca_street_name=[$3], ca_street_type=[$4], ca_suite_number=[$5], ca_city=[$6], ca_county=[$7], ca_zip=[$9], ca_country=[$10], ca_gmt_offset=[$11], ca_location_type=[$12]) HiveFilter(condition=[=($8, _UTF-16LE'IL')]) HiveTableScan(table=[[default, customer_address]], table:alias=[customer_address]) - HiveProject(cr_returning_customer_sk=[$0], ca_state=[$1], $f2=[$2], _o__c0=[$3], ctr_state=[$4]) + HiveProject($f0=[$0], $f1=[$1], $f2=[$2], _o__c0=[$3], ctr_state=[$4]) HiveJoin(condition=[AND(=($1, $4), >($2, $3))], joinType=[inner], algorithm=[none], cost=[not available]) - HiveProject(cr_returning_customer_sk=[$0], ca_state=[$1], $f2=[$2]) + HiveProject($f0=[$0], $f1=[$1], $f2=[$2]) HiveFilter(condition=[IS NOT NULL($2)]) HiveProject(cr_returning_customer_sk=[$1], ca_state=[$0], $f2=[$2]) HiveAggregate(group=[{1, 3}], agg#0=[sum($5)])