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/09/09 09:08:33 UTC
[03/50] [abbrv] hive git commit: HIVE-11638: ExprNodeDesc hashMap
accidentally degrades into O(N) instead of O(1) (Gopal V,
reviewed by Jesus Camacho Rodriguez)
HIVE-11638: ExprNodeDesc hashMap accidentally degrades into O(N) instead of O(1) (Gopal V, reviewed by Jesus Camacho Rodriguez)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/037fb02a
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/037fb02a
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/037fb02a
Branch: refs/heads/beeline-cli
Commit: 037fb02a8edc1266d0beb02eee1fb90737fc1ef7
Parents: bb7153f
Author: Gopal V <go...@apache.org>
Authored: Thu Aug 27 02:27:35 2015 +0200
Committer: Jesus Camacho Rodriguez <jc...@apache.org>
Committed: Thu Aug 27 02:27:35 2015 +0200
----------------------------------------------------------------------
.../java/org/apache/hadoop/hive/ql/parse/LeadLagInfo.java | 4 ++--
.../java/org/apache/hadoop/hive/ql/plan/ExprNodeDesc.java | 8 ++++++++
.../java/org/apache/hadoop/hive/ql/ppd/ExprWalkerInfo.java | 9 +++++----
3 files changed, 15 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/037fb02a/ql/src/java/org/apache/hadoop/hive/ql/parse/LeadLagInfo.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/LeadLagInfo.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/LeadLagInfo.java
index 366b74b..6a81170 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/LeadLagInfo.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/LeadLagInfo.java
@@ -19,7 +19,7 @@
package org.apache.hadoop.hive.ql.parse;
import java.util.ArrayList;
-import java.util.HashMap;
+import java.util.IdentityHashMap;
import java.util.List;
import java.util.Map;
@@ -53,7 +53,7 @@ public class LeadLagInfo {
public void addLLFuncExprForTopExpr(ExprNodeDesc topExpr, ExprNodeGenericFuncDesc llFuncExpr) {
addLeadLagExpr(llFuncExpr);
mapTopExprToLLFunExprs = mapTopExprToLLFunExprs == null ?
- new HashMap<ExprNodeDesc, List<ExprNodeGenericFuncDesc>>() : mapTopExprToLLFunExprs;
+ new IdentityHashMap<ExprNodeDesc, List<ExprNodeGenericFuncDesc>>() : mapTopExprToLLFunExprs;
List<ExprNodeGenericFuncDesc> funcList = mapTopExprToLLFunExprs.get(topExpr);
if (funcList == null) {
funcList = new ArrayList<ExprNodeGenericFuncDesc>();
http://git-wip-us.apache.org/repos/asf/hive/blob/037fb02a/ql/src/java/org/apache/hadoop/hive/ql/plan/ExprNodeDesc.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/ExprNodeDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/ExprNodeDesc.java
index 15267b9..328bd86 100755
--- a/ql/src/java/org/apache/hadoop/hive/ql/plan/ExprNodeDesc.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/ExprNodeDesc.java
@@ -60,6 +60,14 @@ public abstract class ExprNodeDesc implements Serializable, Node {
return typeInfo.hashCode();
}
+ @Override
+ public final boolean equals(Object o) {
+ // prevent equals from being overridden in sub-classes
+ // always use ExprNodeDescEqualityWrapper
+ // if you need any other equality than Object.equals()
+ return (o == this);
+ }
+
public TypeInfo getTypeInfo() {
return typeInfo;
}
http://git-wip-us.apache.org/repos/asf/hive/blob/037fb02a/ql/src/java/org/apache/hadoop/hive/ql/ppd/ExprWalkerInfo.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ppd/ExprWalkerInfo.java b/ql/src/java/org/apache/hadoop/hive/ql/ppd/ExprWalkerInfo.java
index 33ad3e8..f23facf 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ppd/ExprWalkerInfo.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ppd/ExprWalkerInfo.java
@@ -19,6 +19,7 @@ package org.apache.hadoop.hive.ql.ppd;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.IdentityHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
@@ -98,17 +99,17 @@ public class ExprWalkerInfo implements NodeProcessorCtx {
public ExprWalkerInfo() {
pushdownPreds = new HashMap<String, List<ExprNodeDesc>>();
nonFinalPreds = new HashMap<String, List<ExprNodeDesc>>();
- exprInfoMap = new HashMap<ExprNodeDesc, ExprInfo>();
- newToOldExprMap = new HashMap<ExprNodeDesc, ExprNodeDesc>();
+ exprInfoMap = new IdentityHashMap<ExprNodeDesc, ExprInfo>();
+ newToOldExprMap = new IdentityHashMap<ExprNodeDesc, ExprNodeDesc>();
}
public ExprWalkerInfo(Operator<? extends OperatorDesc> op) {
this.op = op;
pushdownPreds = new HashMap<String, List<ExprNodeDesc>>();
- exprInfoMap = new HashMap<ExprNodeDesc, ExprInfo>();
+ exprInfoMap = new IdentityHashMap<ExprNodeDesc, ExprInfo>();
nonFinalPreds = new HashMap<String, List<ExprNodeDesc>>();
- newToOldExprMap = new HashMap<ExprNodeDesc, ExprNodeDesc>();
+ newToOldExprMap = new IdentityHashMap<ExprNodeDesc, ExprNodeDesc>();
}
/**