diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/index/RewriteQueryUsingAggregateIndexCtx.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/index/RewriteQueryUsingAggregateIndexCtx.java index fe686d9..f727bc8 100644 --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/index/RewriteQueryUsingAggregateIndexCtx.java +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/index/RewriteQueryUsingAggregateIndexCtx.java @@ -24,18 +24,17 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import java.util.Set; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.fs.Path; import org.apache.hadoop.hive.ql.exec.ColumnInfo; import org.apache.hadoop.hive.ql.exec.FunctionRegistry; +import org.apache.hadoop.hive.ql.exec.GroupByOperator; import org.apache.hadoop.hive.ql.exec.Operator; import org.apache.hadoop.hive.ql.exec.RowSchema; -import org.apache.hadoop.hive.ql.exec.TableScanOperator; import org.apache.hadoop.hive.ql.exec.SelectOperator; -import org.apache.hadoop.hive.ql.exec.GroupByOperator; +import org.apache.hadoop.hive.ql.exec.TableScanOperator; import org.apache.hadoop.hive.ql.lib.NodeProcessorCtx; import org.apache.hadoop.hive.ql.metadata.Hive; import org.apache.hadoop.hive.ql.metadata.HiveException; @@ -298,8 +297,7 @@ private void replaceGroupByOperatorProcess(GroupByOperator operator, int index) rewriteQueryCtx.getParseContext().getConf(), selReplacementCommand); // we get our new GroupByOperator here - Map> newGbyOpMap = newDAGContext.getGroupOpToInputTables(); - GroupByOperator newGbyOperator = newGbyOpMap.keySet().iterator().next(); + GroupByOperator newGbyOperator = newDAGContext.getGroupOps().iterator().next(); GroupByDesc oldConf = operator.getConf(); // we need this information to set the correct colList, outputColumnNames diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/ParseContext.java ql/src/java/org/apache/hadoop/hive/ql/parse/ParseContext.java index 8215c26..d170ee5 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/ParseContext.java +++ ql/src/java/org/apache/hadoop/hive/ql/parse/ParseContext.java @@ -43,7 +43,6 @@ import org.apache.hadoop.hive.ql.exec.Task; import org.apache.hadoop.hive.ql.hooks.LineageInfo; import org.apache.hadoop.hive.ql.hooks.ReadEntity; -import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.ql.metadata.Table; import org.apache.hadoop.hive.ql.optimizer.ppr.PartitionPruner; import org.apache.hadoop.hive.ql.optimizer.unionproc.UnionProcContext; @@ -93,7 +92,7 @@ private List> listMapJoinOpsNoReducer; // list of map join // operators with no // reducer - private Map> groupOpToInputTables; + private Set groupOps; private Map prunedPartitions; private Map viewAliasToInput; @@ -173,7 +172,7 @@ public ParseContext( List loadTableWork, List loadFileWork, Context ctx, HashMap idToTableNameMap, int destTableId, UnionProcContext uCtx, List> listMapJoinOpsNoReducer, - Map> groupOpToInputTables, + Set groupOps, Map prunedPartitions, HashMap opToSamplePruner, GlobalLimitCtx globalLimitCtx, @@ -203,7 +202,7 @@ public ParseContext( this.destTableId = destTableId; this.uCtx = uCtx; this.listMapJoinOpsNoReducer = listMapJoinOpsNoReducer; - this.groupOpToInputTables = groupOpToInputTables; + this.groupOps = groupOps; this.prunedPartitions = prunedPartitions; this.opToSamplePruner = opToSamplePruner; this.nameToSplitSample = nameToSplitSample; @@ -523,18 +522,18 @@ public void setOpToSamplePruner( } /** - * @return the groupOpToInputTables + * @return the groupOps */ - public Map> getGroupOpToInputTables() { - return groupOpToInputTables; + public Set getGroupOps() { + return groupOps; } /** - * @param groupOpToInputTables + * @param groupOps */ - public void setGroupOpToInputTables( - Map> groupOpToInputTables) { - this.groupOpToInputTables = groupOpToInputTables; + public void setGroupOps( + Set groupOps) { + this.groupOps = groupOps; } /** diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index 971910a..1a13da1 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -386,7 +386,6 @@ public void initParseCtx(ParseContext pctx) { uCtx = pctx.getUCtx(); listMapJoinOpsNoReducer = pctx.getListMapJoinOpsNoReducer(); qb = pctx.getQB(); - groupOpToInputTables = pctx.getGroupOpToInputTables(); prunedPartitions = pctx.getPrunedPartitions(); fetchTask = pctx.getFetchTask(); setLineageInfo(pctx.getLineageInfo()); @@ -397,7 +396,8 @@ public ParseContext getParseContext() { topSelOps, opParseCtx, joinContext, smbMapJoinContext, topToTable, topToTableProps, fsopToTable, loadTableWork, loadFileWork, ctx, idToTableNameMap, destTableId, uCtx, - listMapJoinOpsNoReducer, groupOpToInputTables, prunedPartitions, + listMapJoinOpsNoReducer, new HashSet(groupOpToInputTables.keySet()), + prunedPartitions, opToSamplePruner, globalLimitCtx, nameToSplitSample, inputs, rootTasks, opToPartToSkewedPruner, viewAliasToInput, reduceSinkOperatorsAddedByEnforceBucketingSorting, @@ -9967,7 +9967,8 @@ void analyzeInternal(ASTNode ast, PlannerContext plannerCtx) throws SemanticExce ParseContext pCtx = new ParseContext(conf, qb, plannerCtx.child, opToPartPruner, opToPartList, topOps, topSelOps, opParseCtx, joinContext, smbMapJoinContext, topToTable, topToTableProps, fsopToTable, loadTableWork, loadFileWork, ctx, idToTableNameMap, destTableId, uCtx, - listMapJoinOpsNoReducer, groupOpToInputTables, prunedPartitions, opToSamplePruner, + listMapJoinOpsNoReducer, new HashSet(groupOpToInputTables.keySet()), + prunedPartitions, opToSamplePruner, globalLimitCtx, nameToSplitSample, inputs, rootTasks, opToPartToSkewedPruner, viewAliasToInput, reduceSinkOperatorsAddedByEnforceBucketingSorting, queryProperties); diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/TaskCompiler.java ql/src/java/org/apache/hadoop/hive/ql/parse/TaskCompiler.java index 23fbbe1..bd1c281 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/TaskCompiler.java +++ ql/src/java/org/apache/hadoop/hive/ql/parse/TaskCompiler.java @@ -391,7 +391,7 @@ public ParseContext getParseContext(ParseContext pCtx, List aggregators; private ArrayList outputColumnNames; + private Set inputTables; private float groupByMemoryUsage; private float memoryThreshold; transient private boolean isDistinct; @@ -297,4 +299,12 @@ public void setDistinct(boolean isDistinct) { this.isDistinct = isDistinct; } + public Set getInputTables() { + return inputTables; + } + + public void setInputTables(Set inputTables) { + this.inputTables = inputTables; + } + }