public void addJoinCriteriaList(List<? extends Criteria> joinCriteria) { if (joinCriteria == null || joinCriteria.isEmpty()) { return; } for (Criteria crit : joinCriteria) { criteriaNodes.add(RelationalPlanner.createSelectNode(crit, false)); } }
public void addJoinCriteriaList(List<? extends Criteria> joinCriteria) { if (joinCriteria == null || joinCriteria.isEmpty()) { return; } for (Criteria crit : joinCriteria) { criteriaNodes.add(RelationalPlanner.createSelectNode(crit, false)); } }
public void addJoinCriteriaList(List<? extends Criteria> joinCriteria) { if (joinCriteria == null || joinCriteria.isEmpty()) { return; } for (Criteria crit : joinCriteria) { criteriaNodes.add(RelationalPlanner.createSelectNode(crit, false)); } }
static PlanNode createDependentSetNode(String id, List<DependentSetCriteria.AttributeComparison> expressions) { DependentSetCriteria crit = createDependentSetCriteria(id, expressions); return RelationalPlanner.createSelectNode(crit, false); }
static PlanNode createDependentSetNode(String id, List<DependentSetCriteria.AttributeComparison> expressions) { DependentSetCriteria crit = createDependentSetCriteria(id, expressions); return RelationalPlanner.createSelectNode(crit, false); }
static PlanNode createDependentSetNode(String id, List<DependentSetCriteria.AttributeComparison> expressions) { DependentSetCriteria crit = createDependentSetCriteria(id, expressions); PlanNode selectNode = RelationalPlanner.createSelectNode(crit, false); selectNode.setProperty(NodeConstants.Info.IS_DEPENDENT_SET, Boolean.TRUE); return selectNode; }
/** * Attach all criteria above the join nodes. The optimizer will push these * criteria down to the appropriate source. * @param plan Existing plan, which joins all source groups * @param criteria Criteria from query * @return Updated tree */ private static PlanNode attachCriteria(PlanNode plan, Criteria criteria, boolean isHaving) { List<Criteria> crits = Criteria.separateCriteriaByAnd(criteria); for (Criteria crit : crits) { PlanNode critNode = createSelectNode(crit, isHaving); attachLast(critNode, plan); plan = critNode; } return plan; }
/** * Attach all criteria above the join nodes. The optimizer will push these * criteria down to the appropriate source. * @param plan Existing plan, which joins all source groups * @param criteria Criteria from query * @return Updated tree */ private static PlanNode attachCriteria(PlanNode plan, Criteria criteria, boolean isHaving) { List<Criteria> crits = Criteria.separateCriteriaByAnd(criteria); for (Criteria crit : crits) { PlanNode critNode = createSelectNode(crit, isHaving); attachLast(critNode, plan); plan = critNode; } return plan; }
/** * Attach all criteria above the join nodes. The optimizer will push these * criteria down to the appropriate source. * @param plan Existing plan, which joins all source groups * @param criteria Criteria from query * @return Updated tree */ private static PlanNode attachCriteria(PlanNode plan, Criteria criteria, boolean isHaving) { List<Criteria> crits = Criteria.separateCriteriaByAnd(criteria); for (Criteria crit : crits) { PlanNode critNode = createSelectNode(crit, isHaving); attachLast(critNode, plan); plan = critNode; } return plan; }
private void handleDuplicate(PlanNode joinNode, boolean isLeft, List independentExpressions, List dependentExpressions) { Map<Expression, Integer> seen = new HashMap<Expression, Integer>(); for (int i = 0; i < dependentExpressions.size(); i++) { Expression ex = (Expression) dependentExpressions.get(i); Integer index = seen.get(ex); if (index == null) { seen.put(ex, i); } else { Expression e1 = (Expression)independentExpressions.get(i); Expression e2 = (Expression)independentExpressions.get(index); CompareCriteria cc = new CompareCriteria(e1, CompareCriteria.EQ, e2); PlanNode impliedCriteria = RelationalPlanner.createSelectNode(cc, false); if (isLeft) { joinNode.getLastChild().addAsParent(impliedCriteria); } else { joinNode.getFirstChild().addAsParent(impliedCriteria); } independentExpressions.remove(i); dependentExpressions.remove(i); i--; } } }
private void handleDuplicate(PlanNode joinNode, boolean isLeft, List independentExpressions, List dependentExpressions) { Map<Expression, Integer> seen = new HashMap<Expression, Integer>(); for (int i = 0; i < dependentExpressions.size(); i++) { Expression ex = (Expression) dependentExpressions.get(i); Integer index = seen.get(ex); if (index == null) { seen.put(ex, i); } else { Expression e1 = (Expression)independentExpressions.get(i); Expression e2 = (Expression)independentExpressions.get(index); CompareCriteria cc = new CompareCriteria(e1, CompareCriteria.EQ, e2); PlanNode impliedCriteria = RelationalPlanner.createSelectNode(cc, false); if (isLeft) { joinNode.getLastChild().addAsParent(impliedCriteria); } else { joinNode.getFirstChild().addAsParent(impliedCriteria); } independentExpressions.remove(i); dependentExpressions.remove(i); i--; } } }
private void handleDuplicate(PlanNode joinNode, boolean isLeft, List independentExpressions, List dependentExpressions) { Map<Expression, Integer> seen = new HashMap<Expression, Integer>(); for (int i = 0; i < dependentExpressions.size(); i++) { Expression ex = (Expression) dependentExpressions.get(i); Integer index = seen.get(ex); if (index == null) { seen.put(ex, i); } else { Expression e1 = (Expression)independentExpressions.get(i); Expression e2 = (Expression)independentExpressions.get(index); CompareCriteria cc = new CompareCriteria(e1, CompareCriteria.EQ, e2); PlanNode impliedCriteria = RelationalPlanner.createSelectNode(cc, false); if (isLeft) { joinNode.getLastChild().addAsParent(impliedCriteria); } else { joinNode.getFirstChild().addAsParent(impliedCriteria); } independentExpressions.remove(i); dependentExpressions.remove(i); i--; } } }
void helpTestEstimateCost(String critString, float childCost, float expectedResult, QueryMetadataInterface metadata) throws Exception { Criteria crit = helpGetCriteria(critString, metadata); PlanNode select = RelationalPlanner.createSelectNode(crit, false); float resultCost = NewCalculateCostUtil.recursiveEstimateCostOfCriteria(childCost, select, crit, metadata); assertEquals((int)expectedResult, (int)resultCost); }
PlanNode newCritNode = RelationalPlanner.createSelectNode(tgtCrit, false); if (pushed) { newCritNode = RelationalPlanner.createSelectNode(tgtCrit, false); IsNullCriteria inc = new IsNullCriteria(es); inc.setNegated(true); PlanNode notNullCrit = RelationalPlanner.createSelectNode(inc, false); notNullCrit.setProperty(NodeConstants.Info.IS_TEMPORARY, true); innerJoinNodes[i].addAsParent(notNullCrit);
LinkedList<PlanNode> targets = new LinkedList<PlanNode>(); LinkedList<PlanNode> critNodes = new LinkedList<PlanNode>(); critNodes.add(RelationalPlanner.createSelectNode(new DependentSetCriteria(depExpr, null), false)); LinkedList<PlanNode> initialTargets = new LinkedList<PlanNode>(); initialTargets.add(dependentNode);
PlanNode newCritNode = RelationalPlanner.createSelectNode(tgtCrit, false); if (pushed) { newCritNode = RelationalPlanner.createSelectNode(tgtCrit, false); IsNullCriteria inc = new IsNullCriteria(es); inc.setNegated(true); PlanNode notNullCrit = RelationalPlanner.createSelectNode(inc, false); notNullCrit.setProperty(NodeConstants.Info.IS_TEMPORARY, true); innerJoinNodes[i].addAsParent(notNullCrit);
PlanNode newCritNode = RelationalPlanner.createSelectNode(tgtCrit, false); if (pushed) { newCritNode = RelationalPlanner.createSelectNode(tgtCrit, false); IsNullCriteria inc = new IsNullCriteria(es); inc.setNegated(true); PlanNode notNullCrit = RelationalPlanner.createSelectNode(inc, false); notNullCrit.setProperty(NodeConstants.Info.IS_TEMPORARY, true); innerJoinNodes[i].addAsParent(notNullCrit);
PlanNode critNode = RelationalPlanner.createSelectNode(crit, false); if (parent == null) { parent = critNode;
PlanNode critNode = RelationalPlanner.createSelectNode(crit, false); if (parent == null) { parent = critNode;
PlanNode postFilter = RelationalPlanner.createSelectNode(CompoundCriteria.combineCriteria(toFilter), false); ElementCollectorVisitor.getElements(toFilter, select); postFilter.setProperty(Info.OUTPUT_COLS, new ArrayList<Expression>(query.getSelect().getProjectedSymbols()));