@Override public LogicalNode visitFilter(Object context, LogicalPlan plan, LogicalPlan.QueryBlock block, SelectionNode selNode, Stack<LogicalNode> stack) throws TajoException { selNode.setQual(evalRewriter.visit(null, selNode.getQual(), new Stack<EvalNode>())); return null; }
@Override public LogicalNode visitFilter(Object context, LogicalPlan plan, LogicalPlan.QueryBlock block, SelectionNode selNode, Stack<LogicalNode> stack) throws TajoException { selNode.setQual(evalRewriter.visit(null, selNode.getQual(), new Stack<>())); return null; }
@Override public PlanString getPlanString() { PlanString planStr = new PlanString(this); planStr.addExplan("Search Cond: " + getQual()); return planStr; }
public SelectionExec(TaskAttemptContext context, SelectionNode plan, PhysicalExec child) { super(context, plan.getInSchema(), plan.getOutSchema(), child); this.qual = plan.getQual(); }
public SelectionExec(TaskAttemptContext context, SelectionNode plan, PhysicalExec child) { super(context, plan.getInSchema(), plan.getOutSchema(), child); this.qual = plan.getQual(); }
@Override public PlanString getPlanString() { PlanString planStr = new PlanString(this); planStr.addExplan("Search Cond: " + getQual()); return planStr; }
public void visitFilter(SQLBuilderContext ctx, SelectionNode filter, Stack<LogicalNode> stack) { visit(ctx, filter.getChild(), stack); ctx.sb.append("WHERE " + sqlExprGen.generate(filter.getQual())); }
public void visitFilter(SQLBuilderContext ctx, SelectionNode filter, Stack<LogicalNode> stack) { visit(ctx, filter.getChild(), stack); ctx.sb.append("WHERE " + sqlExprGen.generate(filter.getQual())); }
@Override public LogicalNode visitFilter(JoinGraphContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, SelectionNode node, Stack<LogicalNode> stack) throws TajoException { // all join predicate candidates must be collected before building the join tree except non-equality conditions // TODO: non-equality conditions should also be considered as join conditions after TAJO-1554 List<EvalNode> candidateJoinQuals = new ArrayList<>(); for (EvalNode eachEval : AlgebraicUtil.toConjunctiveNormalFormArray(node.getQual())) { if (EvalTreeUtil.isJoinQual(eachEval, false)) { candidateJoinQuals.add(eachEval); } } context.addCandidateJoinFilters(candidateJoinQuals); super.visitFilter(context, plan, block, node, stack); return node; }
@Override public LogicalNode visitFilter(Context context, LogicalPlan plan, LogicalPlan.QueryBlock block, SelectionNode node, Stack<LogicalNode> stack) throws TajoException { visit(context, plan, block, node.getChild(), stack); ExprsVerifier.verify(context.state, node, node.getQual()); return node; }
@Override public boolean isEligible(LogicalPlanRewriteRuleContext context) { for (LogicalNode eachNode : PlannerUtil.findAllNodes(context.getPlan().getRootNode(), NodeType.SELECTION)) { SelectionNode selectionNode = (SelectionNode) eachNode; if (!extractInSubquery(selectionNode.getQual()).isEmpty()) { return true; } } return false; }
@Override public boolean isEligible(LogicalPlanRewriteRuleContext context) { for (LogicalNode eachNode : PlannerUtil.findAllNodes(context.getPlan().getRootNode(), NodeType.SELECTION)) { SelectionNode selectionNode = (SelectionNode) eachNode; if (!extractInSubquery(selectionNode.getQual()).isEmpty()) { return true; } } return false; }
@Override public LogicalNode visitFilter(Context context, LogicalPlan plan, LogicalPlan.QueryBlock block, SelectionNode node, Stack<LogicalNode> stack) throws TajoException { visit(context, plan, block, node.getChild(), stack); ExprsVerifier.verify(context.state, node, node.getQual()); return node; }
@Override public LogicalNode visitFilter(PlanShapeFixerContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, SelectionNode node, Stack<LogicalNode> stack) throws TajoException { super.visitFilter(context, plan, block, node, stack); if (node.hasQual()) { node.setQual(sortQual(node.getQual())); } return null; }
@Override public LogicalNode visitFilter(PlanShapeFixerContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, SelectionNode node, Stack<LogicalNode> stack) throws TajoException { super.visitFilter(context, plan, block, node, stack); if (node.hasQual()) { node.setQual(sortQual(node.getQual())); } return null; }
@Override public LogicalNode visitFilter(JoinGraphContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, SelectionNode node, Stack<LogicalNode> stack) throws TajoException { // all join predicate candidates must be collected before building the join tree except non-equality conditions // TODO: non-equality conditions should also be considered as join conditions after TAJO-1554 List<EvalNode> candidateJoinQuals = TUtil.newList(); for (EvalNode eachEval : AlgebraicUtil.toConjunctiveNormalFormArray(node.getQual())) { if (EvalTreeUtil.isJoinQual(eachEval, false)) { candidateJoinQuals.add(eachEval); } } context.addCandidateJoinFilters(candidateJoinQuals); super.visitFilter(context, plan, block, node, stack); return node; }
public LogicalNode visitFilter(Context context, LogicalPlan plan, LogicalPlan.QueryBlock block, SelectionNode node, Stack<LogicalNode> stack) throws TajoException { Context newContext = new Context(context); String referenceName = newContext.targetListMgr.add(node.getQual()); newContext.addNecessaryReferences(node.getQual()); LogicalNode child = super.visitFilter(newContext, plan, block, node, stack); node.setInSchema(child.getOutSchema()); node.setOutSchema(child.getOutSchema()); Target target = context.targetListMgr.getTarget(referenceName); if (newContext.targetListMgr.isEvaluated(referenceName)) { node.setQual(new FieldEval(target.getNamedColumn())); } else { node.setQual(target.getEvalTree()); newContext.targetListMgr.markAsEvaluated(target); } return node; }
public LogicalNode visitFilter(Context context, LogicalPlan plan, LogicalPlan.QueryBlock block, SelectionNode node, Stack<LogicalNode> stack) throws TajoException { Context newContext = new Context(context); String referenceName = newContext.targetListMgr.add(node.getQual()); newContext.addNecessaryReferences(node.getQual()); LogicalNode child = super.visitFilter(newContext, plan, block, node, stack); node.setInSchema(child.getOutSchema()); node.setOutSchema(child.getOutSchema()); Target target = context.targetListMgr.getTarget(referenceName); if (newContext.targetListMgr.isEvaluated(referenceName)) { node.setQual(new FieldEval(target.getNamedColumn())); } else { node.setQual(target.getEvalTree()); newContext.targetListMgr.markAsEvaluated(target); } return node; }
@Override public LogicalNode visitFilter(SerializeContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, SelectionNode filter, Stack<LogicalNode> stack) throws TajoException { super.visitFilter(context, plan, block, filter, stack); int [] childIds = registerGetChildIds(context, filter); PlanProto.FilterNode.Builder filterBuilder = PlanProto.FilterNode.newBuilder(); filterBuilder.setChildSeq(childIds[0]); filterBuilder.setQual(EvalNodeSerializer.serialize(filter.getQual())); PlanProto.LogicalNode.Builder nodeBuilder = createNodeBuilder(context, filter); nodeBuilder.setFilter(filterBuilder); context.treeBuilder.addNodes(nodeBuilder); return filter; }
@Override public LogicalNode visitFilter(SerializeContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, SelectionNode filter, Stack<LogicalNode> stack) throws TajoException { super.visitFilter(context, plan, block, filter, stack); int [] childIds = registerGetChildIds(context, filter); PlanProto.FilterNode.Builder filterBuilder = PlanProto.FilterNode.newBuilder(); filterBuilder.setChildSeq(childIds[0]); filterBuilder.setQual(EvalNodeSerializer.serialize(filter.getQual())); PlanProto.LogicalNode.Builder nodeBuilder = createNodeBuilder(context, filter); nodeBuilder.setFilter(filterBuilder); context.treeBuilder.addNodes(nodeBuilder); return filter; }