/** * @param nd * @param ewi */ protected void logExpr(Node nd, ExprWalkerInfo ewi) { if (!LOG.isDebugEnabled()) { return; } for (Entry<String, List<ExprNodeDesc>> e : ewi.getFinalCandidates().entrySet()) { StringBuilder sb = new StringBuilder("Pushdown predicates of ").append(nd.getName()) .append(" for alias ").append(e.getKey()).append(": "); boolean isFirst = true; for (ExprNodeDesc n : e.getValue()) { if (!isFirst) { sb.append("; "); } isFirst = false; sb.append(n.getExprString()); } LOG.debug(sb.toString()); } }
protected static Object createFilter(Operator op, ExprWalkerInfo pushDownPreds, OpWalkerInfo owi) throws SemanticException { if (pushDownPreds != null && pushDownPreds.hasAnyCandidates()) { return createFilter(op, pushDownPreds.getFinalCandidates(), owi); } return null; }
/** * Merges the specified pushdown predicates with the current class. * * @param ewi * ExpressionWalkerInfo */ public void merge(ExprWalkerInfo ewi) { if (ewi == null) { return; } for (Entry<String, List<ExprNodeDesc>> e : ewi.getFinalCandidates() .entrySet()) { List<ExprNodeDesc> predList = pushdownPreds.get(e.getKey()); if (predList != null) { predList.addAll(e.getValue()); } else { pushdownPreds.put(e.getKey(), e.getValue()); } } for (Entry<String, List<ExprNodeDesc>> e : ewi.getNonFinalCandidates() .entrySet()) { List<ExprNodeDesc> predList = nonFinalPreds.get(e.getKey()); if (predList != null) { predList.addAll(e.getValue()); } else { nonFinalPreds.put(e.getKey(), e.getValue()); } } newToOldExprMap.putAll(ewi.getNewToOldExprMap()); }
/** * @param nd * @param ewi */ protected void logExpr(Node nd, ExprWalkerInfo ewi) { if (!LOG.isDebugEnabled()) return; for (Entry<String, List<ExprNodeDesc>> e : ewi.getFinalCandidates().entrySet()) { StringBuilder sb = new StringBuilder("Pushdown predicates of ").append(nd.getName()) .append(" for alias ").append(e.getKey()).append(": "); boolean isFirst = true; for (ExprNodeDesc n : e.getValue()) { if (!isFirst) { sb.append("; "); } isFirst = false; sb.append(n.getExprString()); } LOG.debug(sb.toString()); } }
/** * Merges the specified pushdown predicates with the current class. * * @param ewi * ExpressionWalkerInfo */ public void merge(ExprWalkerInfo ewi) { if (ewi == null) { return; } for (Entry<String, List<ExprNodeDesc>> e : ewi.getFinalCandidates() .entrySet()) { List<ExprNodeDesc> predList = pushdownPreds.get(e.getKey()); if (predList != null) { predList.addAll(e.getValue()); } else { pushdownPreds.put(e.getKey(), e.getValue()); } } for (Entry<String, List<ExprNodeDesc>> e : ewi.getNonFinalCandidates() .entrySet()) { List<ExprNodeDesc> predList = nonFinalPreds.get(e.getKey()); if (predList != null) { predList.addAll(e.getValue()); } else { nonFinalPreds.put(e.getKey(), e.getValue()); } } newToOldExprMap.putAll(ewi.getNewToOldExprMap()); }
protected static Object createFilter(Operator op, ExprWalkerInfo pushDownPreds, OpWalkerInfo owi) { if (pushDownPreds != null && pushDownPreds.hasAnyCandidates()) { return createFilter(op, pushDownPreds.getFinalCandidates(), owi); } return null; }
@Override public Object process(Node nd, Stack<Node> stack, NodeProcessorCtx procCtx, Object... nodeOutputs) throws SemanticException { super.process(nd, stack, procCtx, nodeOutputs); OpWalkerInfo owi = (OpWalkerInfo) procCtx; ExprWalkerInfo prunedPred = owi.getPrunedPreds((Operator<? extends OperatorDesc>) nd); if (prunedPred == null || !prunedPred.hasAnyCandidates()) { return null; } Map<String, List<ExprNodeDesc>> candidates = prunedPred.getFinalCandidates(); createFilter((Operator)nd, prunedPred, owi); candidates.clear(); return null; }
protected ExprWalkerInfo mergeChildrenPred(Node nd, OpWalkerInfo owi, Set<String> excludedAliases, boolean ignoreAliases) throws SemanticException { if (nd.getChildren() == null) { return null; } Operator<? extends OperatorDesc> op = (Operator<? extends OperatorDesc>)nd; ExprWalkerInfo ewi = new ExprWalkerInfo(); for (Operator<? extends OperatorDesc> child : op.getChildOperators()) { ExprWalkerInfo childPreds = owi.getPrunedPreds(child); if (childPreds == null) { continue; } for (Entry<String, List<ExprNodeDesc>> e : childPreds .getFinalCandidates().entrySet()) { if (ignoreAliases || excludedAliases == null || !excludedAliases.contains(e.getKey()) || e.getKey() == null) { ewi.addPushDowns(e.getKey(), e.getValue()); logExpr(nd, ewi); } } } return ewi; } }
for (Entry<String, List<ExprNodeDesc>> entry : prunePreds.getFinalCandidates().entrySet()) { String key = entry.getKey(); List<ExprNodeDesc> value = entry.getValue(); prunePreds.getFinalCandidates().get(alias)) { prunePreds.getFinalCandidates().remove(alias);
@Override public Object process(Node nd, Stack<Node> stack, NodeProcessorCtx procCtx, Object... nodeOutputs) throws SemanticException { super.process(nd, stack, procCtx, nodeOutputs); OpWalkerInfo owi = (OpWalkerInfo) procCtx; ExprWalkerInfo prunedPred = owi.getPrunedPreds((Operator<? extends OperatorDesc>) nd); if (prunedPred == null || !prunedPred.hasAnyCandidates()) { return null; } Map<String, List<ExprNodeDesc>> candidates = prunedPred.getFinalCandidates(); createFilter((Operator)nd, prunedPred, owi); candidates.clear(); return null; }
protected ExprWalkerInfo mergeChildrenPred(Node nd, OpWalkerInfo owi, Set<String> excludedAliases, boolean ignoreAliases) throws SemanticException { if (nd.getChildren() == null) { return null; } Operator<? extends OperatorDesc> op = (Operator<? extends OperatorDesc>)nd; ExprWalkerInfo ewi = new ExprWalkerInfo(); for (Operator<? extends OperatorDesc> child : op.getChildOperators()) { ExprWalkerInfo childPreds = owi.getPrunedPreds(child); if (childPreds == null) { continue; } for (Entry<String, List<ExprNodeDesc>> e : childPreds .getFinalCandidates().entrySet()) { if (ignoreAliases || excludedAliases == null || !excludedAliases.contains(e.getKey()) || e.getKey() == null) { ewi.addPushDowns(e.getKey(), e.getValue()); logExpr(nd, ewi); } } } return ewi; } }
.getFinalCandidates().entrySet()) { if (aliases == null || e.getKey() == null || aliases.contains(e.getKey())) {
for (Entry<String, List<ExprNodeDesc>> entry : prunePreds.getFinalCandidates().entrySet()) { String key = entry.getKey(); List<ExprNodeDesc> value = entry.getValue(); prunePreds.getFinalCandidates().get(alias)) { prunePreds.getFinalCandidates().remove(alias);
.getFinalCandidates().entrySet()) { if (aliases == null || e.getKey() == null || aliases.contains(e.getKey())) {
return; Map<String, List<ExprNodeDesc>> oldFilters = joinPreds.getFinalCandidates(); Map<String, List<ExprNodeDesc>> newFilters = new HashMap<String, List<ExprNodeDesc>>();
return; Map<String, List<ExprNodeDesc>> oldFilters = joinPreds.getFinalCandidates(); Map<String, List<ExprNodeDesc>> newFilters = new HashMap<String, List<ExprNodeDesc>>();
Iterator<List<ExprNodeDesc>> iterator = childInfo.getFinalCandidates().values().iterator(); while (iterator.hasNext()) { for (ExprNodeDesc pred : iterator.next()) {
Iterator<List<ExprNodeDesc>> iterator = childInfo.getFinalCandidates().values().iterator(); while (iterator.hasNext()) { for (ExprNodeDesc pred : iterator.next()) {
protected static Object createFilter(Operator op, ExprWalkerInfo pushDownPreds, OpWalkerInfo owi) { if (pushDownPreds != null && pushDownPreds.hasAnyCandidates()) { return createFilter(op, pushDownPreds.getFinalCandidates(), owi); } return null; }
/** * @param nd * @param ewi */ protected void logExpr(Node nd, ExprWalkerInfo ewi) { for (Entry<String, List<ExprNodeDesc>> e : ewi.getFinalCandidates() .entrySet()) { LOG.info("Pushdown Predicates of " + nd.getName() + " For Alias : " + e.getKey()); for (ExprNodeDesc n : e.getValue()) { LOG.info("\t" + n.getExprString()); } } }