You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by su...@apache.org on 2015/10/26 07:25:29 UTC
hive git commit: HIVE-12189: The list in pushdownPreds of
ppd.ExprWalkerInfo should not be allowed to grow very large (Yongzhi Chen,
reviewed by Chao Sun)
Repository: hive
Updated Branches:
refs/heads/branch-1 af07b4171 -> 234972142
HIVE-12189: The list in pushdownPreds of ppd.ExprWalkerInfo should not be allowed to grow very large (Yongzhi Chen, reviewed by Chao Sun)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/23497214
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/23497214
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/23497214
Branch: refs/heads/branch-1
Commit: 2349721424a6ca014d4dae95d2c326c54a771fe6
Parents: af07b41
Author: Yongzhi Chen <yo...@hotmail.com>
Authored: Sun Oct 25 23:25:12 2015 -0700
Committer: Chao Sun <su...@apache.org>
Committed: Sun Oct 25 23:25:12 2015 -0700
----------------------------------------------------------------------
.../hadoop/hive/ql/ppd/ExprWalkerInfo.java | 23 ++++++++++++++++++--
1 file changed, 21 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/23497214/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 e4b768e..fca671c 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
@@ -149,7 +149,13 @@ public class ExprWalkerInfo implements NodeProcessorCtx {
}
public void addFinalCandidate(String alias, ExprNodeDesc expr) {
- getPushdownPreds(alias).add(expr);
+ List<ExprNodeDesc> predicates = getPushdownPreds(alias);
+ for (ExprNodeDesc curPred: predicates) {
+ if (curPred.isSame(expr)) {
+ return;
+ }
+ }
+ predicates.add(expr);
}
/**
@@ -159,7 +165,20 @@ public class ExprWalkerInfo implements NodeProcessorCtx {
* @param pushDowns
*/
public void addPushDowns(String alias, List<ExprNodeDesc> pushDowns) {
- getPushdownPreds(alias).addAll(pushDowns);
+ List<ExprNodeDesc> predicates = getPushdownPreds(alias);
+ boolean isNew;
+ for (ExprNodeDesc newPred: pushDowns) {
+ isNew = true;
+ for (ExprNodeDesc curPred: predicates) {
+ if (curPred.isSame(newPred)) {
+ isNew = false;
+ break;
+ }
+ }
+ if (isNew) {
+ predicates.add(newPred);
+ }
+ }
}
/**