public PlanNode execute(PlanNode plan, QueryMetadataInterface metadata, CapabilitiesFinder capFinder, RuleStack rules, AnalysisRecord analysisRecord, CommandContext context) throws QueryMetadataException, TeiidComponentException { for (PlanNode joinNode : NodeEditor.findAllNodes(plan, NodeConstants.Types.JOIN, NodeConstants.Types.ACCESS)) { chooseJoinStrategy(joinNode, metadata); } return plan; }
filterOptionalCriteria(crits, true); separateCriteria(leftGroups, rightGroups, leftExpressions, rightExpressions, crits, nonEquiJoinCriteria); if (!leftExpressions.isEmpty()) { joinNode.setProperty(NodeConstants.Info.LEFT_EXPRESSIONS, createExpressionSymbols(leftExpressions)); joinNode.setProperty(NodeConstants.Info.RIGHT_EXPRESSIONS, createExpressionSymbols(rightExpressions));
private Float getDepJoinCost(QueryMetadataInterface metadata, CapabilitiesFinder capFinder, CommandContext context, PlanNode indNode, List<PlanNode> applicableCriteria, PlanNode depNode) throws QueryMetadataException, TeiidComponentException, QueryPlannerException { if (depNode.hasBooleanProperty(Info.MAKE_NOT_DEP)) { return null; } float indCost = indNode.getCardinality(); if (indCost == NewCalculateCostUtil.UNKNOWN_VALUE) { return null; } List<Criteria> crits = new ArrayList<Criteria>(applicableCriteria.size()); for (PlanNode planNode : applicableCriteria) { crits.add((Criteria) planNode.getProperty(NodeConstants.Info.SELECT_CRITERIA)); } List<Expression> leftExpressions = new LinkedList<Expression>(); List<Expression> rightExpressions = new LinkedList<Expression>(); RuleChooseJoinStrategy.separateCriteria(indNode.getGroups(), depNode.getGroups(), leftExpressions, rightExpressions, crits, new LinkedList<Criteria>()); if (leftExpressions.isEmpty()) { return null; } return NewCalculateCostUtil.computeCostForDepJoin(indNode, depNode, leftExpressions, rightExpressions, metadata, capFinder, context).expectedCardinality; }
RuleChooseJoinStrategy.separateCriteria(leftGroups, rightGroups, plannedResult.leftExpressions, plannedResult.rightExpressions, Criteria.separateCriteriaByAnd(plannedResult.additionalCritieria), plannedResult.nonEquiJoinCriteria); plannedResult.leftExpressions = RuleChooseJoinStrategy.createExpressionSymbols(plannedResult.leftExpressions); plannedResult.rightExpressions = RuleChooseJoinStrategy.createExpressionSymbols(plannedResult.rightExpressions);
singleRow = true; query = new Query(); ((Query)query).setSelect(new Select(RuleChooseJoinStrategy.createExpressionSymbols(insert.getValues())));
RuleChooseJoinStrategy.filterOptionalCriteria(joinCriteria, false); Set<GroupSymbol> groups = GroupsUsedByElementsVisitor.getGroups(joinCriteria); if (groups.containsAll(left.getFirstChild().getGroups())
private Float getDepJoinCost(QueryMetadataInterface metadata, CapabilitiesFinder capFinder, CommandContext context, PlanNode indNode, List<PlanNode> applicableCriteria, PlanNode depNode) throws QueryMetadataException, TeiidComponentException, QueryPlannerException { if (depNode.hasBooleanProperty(Info.MAKE_NOT_DEP)) { return null; } float indCost = indNode.getCardinality(); if (indCost == NewCalculateCostUtil.UNKNOWN_VALUE) { return null; } List<Criteria> crits = new ArrayList<Criteria>(applicableCriteria.size()); for (PlanNode planNode : applicableCriteria) { crits.add((Criteria) planNode.getProperty(NodeConstants.Info.SELECT_CRITERIA)); } List<Expression> leftExpressions = new LinkedList<Expression>(); List<Expression> rightExpressions = new LinkedList<Expression>(); RuleChooseJoinStrategy.separateCriteria(indNode.getGroups(), depNode.getGroups(), leftExpressions, rightExpressions, crits, new LinkedList<Criteria>()); if (leftExpressions.isEmpty()) { return null; } return NewCalculateCostUtil.computeCostForDepJoin(indNode, depNode, leftExpressions, rightExpressions, metadata, capFinder, context).expectedCardinality; }
RuleChooseJoinStrategy.separateCriteria(leftGroups, rightGroups, plannedResult.leftExpressions, plannedResult.rightExpressions, Criteria.separateCriteriaByAnd(plannedResult.additionalCritieria), plannedResult.nonEquiJoinCriteria); plannedResult.leftExpressions = RuleChooseJoinStrategy.createExpressionSymbols(plannedResult.leftExpressions); plannedResult.rightExpressions = RuleChooseJoinStrategy.createExpressionSymbols(plannedResult.rightExpressions);
singleRow = true; query = new Query(); ((Query)query).setSelect(new Select(RuleChooseJoinStrategy.createExpressionSymbols(insert.getValues())));
RuleChooseJoinStrategy.filterOptionalCriteria(joinCriteria, false); Set<GroupSymbol> groups = GroupsUsedByElementsVisitor.getGroups(joinCriteria); if (groups.containsAll(left.getFirstChild().getGroups())
private Float getDepJoinCost(QueryMetadataInterface metadata, CapabilitiesFinder capFinder, CommandContext context, PlanNode indNode, List<PlanNode> applicableCriteria, PlanNode depNode) throws QueryMetadataException, TeiidComponentException, QueryPlannerException { if (depNode.hasBooleanProperty(Info.MAKE_NOT_DEP)) { return null; } float indCost = indNode.getCardinality(); if (indCost == NewCalculateCostUtil.UNKNOWN_VALUE) { return null; } List<Criteria> crits = new ArrayList<Criteria>(applicableCriteria.size()); for (PlanNode planNode : applicableCriteria) { crits.add((Criteria) planNode.getProperty(NodeConstants.Info.SELECT_CRITERIA)); } List<Expression> leftExpressions = new LinkedList<Expression>(); List<Expression> rightExpressions = new LinkedList<Expression>(); RuleChooseJoinStrategy.separateCriteria(indNode.getGroups(), depNode.getGroups(), leftExpressions, rightExpressions, crits, new LinkedList<Criteria>()); if (leftExpressions.isEmpty()) { return null; } return NewCalculateCostUtil.computeCostForDepJoin(indNode, depNode, leftExpressions, rightExpressions, metadata, capFinder, context).expectedCardinality; }
filterOptionalCriteria(crits, true); separateCriteria(leftGroups, rightGroups, leftExpressions, rightExpressions, crits, nonEquiJoinCriteria); if (!leftExpressions.isEmpty()) { joinNode.setProperty(NodeConstants.Info.LEFT_EXPRESSIONS, createExpressionSymbols(leftExpressions)); joinNode.setProperty(NodeConstants.Info.RIGHT_EXPRESSIONS, createExpressionSymbols(rightExpressions));
public PlanNode execute(PlanNode plan, QueryMetadataInterface metadata, CapabilitiesFinder capFinder, RuleStack rules, AnalysisRecord analysisRecord, CommandContext context) throws QueryMetadataException, TeiidComponentException { for (PlanNode joinNode : NodeEditor.findAllNodes(plan, NodeConstants.Types.JOIN, NodeConstants.Types.ACCESS)) { chooseJoinStrategy(joinNode, metadata); } return plan; }
RuleChooseJoinStrategy.separateCriteria(leftGroups, rightGroups, plannedResult.leftExpressions, plannedResult.rightExpressions, Criteria.separateCriteriaByAnd(plannedResult.additionalCritieria), plannedResult.nonEquiJoinCriteria); plannedResult.leftExpressions = RuleChooseJoinStrategy.createExpressionSymbols(plannedResult.leftExpressions); plannedResult.rightExpressions = RuleChooseJoinStrategy.createExpressionSymbols(plannedResult.rightExpressions);
singleRow = true; query = new Query(); ((Query)query).setSelect(new Select(RuleChooseJoinStrategy.createExpressionSymbols(insert.getValues())));
crits = new ArrayList<Criteria>(); } else { RuleChooseJoinStrategy.filterOptionalCriteria(crits, false); if (crits.isEmpty() && joinType == JoinType.JOIN_INNER) { joinType = JoinType.JOIN_CROSS;
RuleChooseJoinStrategy.separateCriteria(leftGroups, rightGroups, leftExpressions, rightExpressions, cc.getCriteria(), nonEquiJoinCriteria);
filterOptionalCriteria(crits, true); separateCriteria(leftGroups, rightGroups, leftExpressions, rightExpressions, crits, nonEquiJoinCriteria); if (!leftExpressions.isEmpty()) { joinNode.setProperty(NodeConstants.Info.LEFT_EXPRESSIONS, createExpressionSymbols(leftExpressions)); joinNode.setProperty(NodeConstants.Info.RIGHT_EXPRESSIONS, createExpressionSymbols(rightExpressions));
public PlanNode execute(PlanNode plan, QueryMetadataInterface metadata, CapabilitiesFinder capFinder, RuleStack rules, AnalysisRecord analysisRecord, CommandContext context) throws QueryMetadataException, TeiidComponentException { for (PlanNode joinNode : NodeEditor.findAllNodes(plan, NodeConstants.Types.JOIN, NodeConstants.Types.ACCESS)) { chooseJoinStrategy(joinNode, metadata); } return plan; }
exprs.add(SymbolMap.getExpression(ex)); orderBy = new OrderBy(RuleChooseJoinStrategy.createExpressionSymbols(new ArrayList<Expression>(exprs)));