You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by xu...@apache.org on 2015/08/02 05:35:16 UTC
[4/5] hive git commit: HIVE-11138: Query fails when there isn't a
comparator for an operator [Spark Branch] (Rui reviewed by Chengxiang &
Xuefu)
HIVE-11138: Query fails when there isn't a comparator for an operator [Spark Branch] (Rui reviewed by Chengxiang & Xuefu)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/1df842e8
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/1df842e8
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/1df842e8
Branch: refs/heads/branch-1
Commit: 1df842e8392d5000cbd5afcfb4d35c9a5de5c7c7
Parents: 850e42c
Author: Rui Li <ru...@intel.com>
Authored: Tue Jun 30 15:29:43 2015 +0800
Committer: xzhang <xz...@xzdt>
Committed: Sat Aug 1 20:26:09 2015 -0700
----------------------------------------------------------------------
.../ql/optimizer/OperatorComparatorFactory.java | 19 +++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/1df842e8/ql/src/java/org/apache/hadoop/hive/ql/optimizer/OperatorComparatorFactory.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/OperatorComparatorFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/OperatorComparatorFactory.java
index c6a43d9..d93bd72 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/OperatorComparatorFactory.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/OperatorComparatorFactory.java
@@ -23,6 +23,8 @@ import java.util.Map;
import com.google.common.base.Preconditions;
import com.google.common.collect.Maps;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.hive.ql.exec.CollectOperator;
import org.apache.hadoop.hive.ql.exec.CommonMergeJoinOperator;
import org.apache.hadoop.hive.ql.exec.DemuxOperator;
@@ -72,6 +74,7 @@ import org.apache.hadoop.hive.ql.plan.UDTFDesc;
public class OperatorComparatorFactory {
private static final Map<Class<?>, OperatorComparator> comparatorMapping = Maps.newHashMap();
+ private static final Log LOG = LogFactory.getLog(OperatorComparatorFactory.class);
static {
comparatorMapping.put(TableScanOperator.class, new TableScanOperatorComparator());
@@ -103,13 +106,15 @@ public class OperatorComparatorFactory {
comparatorMapping.put(ListSinkOperator.class, new AlwaysTrueOperatorComparator());
comparatorMapping.put(CollectOperator.class, new AlwaysTrueOperatorComparator());
// do not support PTFOperator comparing now.
- comparatorMapping.put(PTFOperator.class, new AlwaysFalseOperatorComparator());
+ comparatorMapping.put(PTFOperator.class, AlwaysFalseOperatorComparator.getInstance());
}
public static OperatorComparator getOperatorComparator(Class<? extends Operator> operatorClass) {
OperatorComparator operatorComparator = comparatorMapping.get(operatorClass);
if (operatorComparator == null) {
- throw new RuntimeException("No OperatorComparator is registered for " + operatorClass.getName() + "yet.");
+ LOG.warn("No OperatorComparator is registered for " + operatorClass.getName() +
+ ". Default to always false comparator.");
+ return AlwaysFalseOperatorComparator.getInstance();
}
return operatorComparator;
@@ -130,6 +135,16 @@ public class OperatorComparatorFactory {
}
static class AlwaysFalseOperatorComparator implements OperatorComparator<Operator<?>> {
+ // the outer class is responsible for maintaining the comparator singleton
+ private AlwaysFalseOperatorComparator() {
+ }
+
+ private static final AlwaysFalseOperatorComparator instance =
+ new AlwaysFalseOperatorComparator();
+
+ public static AlwaysFalseOperatorComparator getInstance() {
+ return instance;
+ }
@Override
public boolean equals(Operator<?> op1, Operator<?> op2) {