@Override public LogicalNode visitIntersect(PlanContext context, Stack<Expr> stack, SetOperation setOperation) throws TajoException { return buildSetPlan(context, stack, setOperation); }
@Override public LogicalNode visitExcept(PlanContext context, Stack<Expr> stack, SetOperation setOperation) throws TajoException { return buildSetPlan(context, stack, setOperation); }
@Override public LogicalNode visitIntersect(PlanContext context, Stack<Expr> stack, SetOperation setOperation) throws TajoException { return buildSetPlan(context, stack, setOperation); }
@Override public LogicalNode visitExcept(PlanContext context, Stack<Expr> stack, SetOperation setOperation) throws TajoException { return buildSetPlan(context, stack, setOperation); }
@Override public LogicalNode visitUnion(PlanContext context, Stack<Expr> stack, SetOperation setOperation) throws TajoException { UnionNode unionNode = (UnionNode)buildSetPlan(context, stack, setOperation); LogicalNode resultingNode = unionNode; /** * if the given node is Union (Distinct), it adds group by node * change * from * union * * to * projection * | * group by * | * table subquery * | * union */ if (unionNode.isDistinct()) { return insertProjectionGroupbyBeforeSetOperation(context, unionNode); } return resultingNode; }
@Override public LogicalNode visitUnion(PlanContext context, Stack<Expr> stack, SetOperation setOperation) throws TajoException { UnionNode unionNode = (UnionNode)buildSetPlan(context, stack, setOperation); LogicalNode resultingNode = unionNode; /** * if the given node is Union (Distinct), it adds group by node * change * from * union * * to * projection * | * group by * | * table subquery * | * union */ if (unionNode.isDistinct()) { return insertProjectionGroupbyBeforeSetOperation(context, unionNode); } return resultingNode; }