Repository: hive
Updated Branches:
  refs/heads/master 5421c2288 -> 305c2f6ef


HIVE-12165: wrong result when hive.optimize.sampling.orderby=true with some 
aggregate functions (Aihua Xu, reviewed by Yongzhi Chen)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/305c2f6e
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/305c2f6e
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/305c2f6e

Branch: refs/heads/master
Commit: 305c2f6ef0eb552d43a4f6c3bcb0e0284be78529
Parents: 5421c22
Author: Aihua Xu <aihu...@apache.org>
Authored: Wed Feb 17 17:24:03 2016 -0500
Committer: Aihua Xu <aihu...@apache.org>
Committed: Mon Feb 22 10:19:13 2016 -0500

----------------------------------------------------------------------
 .../hadoop/hive/ql/optimizer/physical/SamplingOptimizer.java    | 5 +++++
 1 file changed, 5 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/305c2f6e/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/SamplingOptimizer.java
----------------------------------------------------------------------
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/SamplingOptimizer.java
 
b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/SamplingOptimizer.java
index 2e1d15c..2def168 100644
--- 
a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/SamplingOptimizer.java
+++ 
b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/SamplingOptimizer.java
@@ -20,6 +20,7 @@
 
 package org.apache.hadoop.hive.ql.optimizer.physical;
 
+import org.apache.hadoop.hive.ql.exec.GroupByOperator;
 import org.apache.hadoop.hive.ql.exec.Operator;
 import org.apache.hadoop.hive.ql.exec.OperatorUtils;
 import org.apache.hadoop.hive.ql.exec.ReduceSinkOperator;
@@ -50,6 +51,10 @@ public class SamplingOptimizer implements 
PhysicalPlanResolver {
           || reduceWork.getReducer() == null) {
         continue;
       }
+      // GROUPBY operator in reducer may not be processed in parallel. Skip 
optimizing.
+      if (OperatorUtils.findSingleOperator(reduceWork.getReducer(), 
GroupByOperator.class) != null) {
+        continue;
+      }
       Operator<?> operator = 
mapWork.getAliasToWork().values().iterator().next();
       if (!(operator instanceof TableScanOperator)) {
         continue;

Reply via email to