You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by li...@apache.org on 2015/06/30 09:30:31 UTC
hive git commit: HIVE-11138: Query fails when there isn't a
comparator for an operator [Spark Branch] (Rui reviewed by Chengxiang &
Xuefu)
Repository: hive
Updated Branches:
refs/heads/spark e0a5f3fd1 -> 9604e08cd
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/9604e08c
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/9604e08c
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/9604e08c
Branch: refs/heads/spark
Commit: 9604e08cd71d5fe81bb2b9dcc18f1b8349d916db
Parents: e0a5f3f
Author: Rui Li <ru...@intel.com>
Authored: Tue Jun 30 15:29:43 2015 +0800
Committer: Rui Li <ru...@intel.com>
Committed: Tue Jun 30 15:30:14 2015 +0800
----------------------------------------------------------------------
.../ql/optimizer/OperatorComparatorFactory.java | 19 +++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/9604e08c/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) {