public HavingExec(TaskAttemptContext context, HavingNode plan, PhysicalExec child) { super(context, plan.getInSchema(), plan.getOutSchema(), child); this.qual = plan.getQual(); }
public HavingExec(TaskAttemptContext context, HavingNode plan, PhysicalExec child) { super(context, plan.getInSchema(), plan.getOutSchema(), child); this.qual = plan.getQual(); }
if (havingNode != null) { workingHavingNode = havingNode; aggrEvals.add(havingNode.getQual()); } else { workingHavingNode = plan.createNode(HavingNode.class);
if (havingNode != null) { workingHavingNode = havingNode; aggrEvals.add(havingNode.getQual()); } else { workingHavingNode = plan.createNode(HavingNode.class);
@Override public LogicalNode visitHaving(Context context, LogicalPlan plan, LogicalPlan.QueryBlock block, HavingNode 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.visitHaving(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 visitHaving(SerializeContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, HavingNode having, Stack<LogicalNode> stack) throws TajoException { super.visitHaving(context, plan, block, having, stack); int [] childIds = registerGetChildIds(context, having); PlanProto.FilterNode.Builder filterBuilder = PlanProto.FilterNode.newBuilder(); filterBuilder.setChildSeq(childIds[0]); filterBuilder.setQual(EvalNodeSerializer.serialize(having.getQual())); PlanProto.LogicalNode.Builder nodeBuilder = createNodeBuilder(context, having); nodeBuilder.setFilter(filterBuilder); context.treeBuilder.addNodes(nodeBuilder); return having; }
@Override public LogicalNode visitHaving(Context context, LogicalPlan plan, LogicalPlan.QueryBlock block, HavingNode 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.visitHaving(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 visitHaving(SerializeContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, HavingNode having, Stack<LogicalNode> stack) throws TajoException { super.visitHaving(context, plan, block, having, stack); int [] childIds = registerGetChildIds(context, having); PlanProto.FilterNode.Builder filterBuilder = PlanProto.FilterNode.newBuilder(); filterBuilder.setChildSeq(childIds[0]); filterBuilder.setQual(EvalNodeSerializer.serialize(having.getQual())); PlanProto.LogicalNode.Builder nodeBuilder = createNodeBuilder(context, having); nodeBuilder.setFilter(filterBuilder); context.treeBuilder.addNodes(nodeBuilder); return having; }