001package gudusoft.gsqlparser.ir.logical.rel; 002 003import gudusoft.gsqlparser.ir.common.SourceAnchor; 004import gudusoft.gsqlparser.ir.logical.RelNode; 005import gudusoft.gsqlparser.ir.logical.RelNodeKind; 006import gudusoft.gsqlparser.ir.logical.RelNodeVisitor; 007 008import java.util.Collections; 009import java.util.List; 010 011/** 012 * UNION / INTERSECT / EXCEPT set operation. 013 */ 014public final class SetOp extends RelNode { 015 016 public enum OpType { 017 UNION, UNION_ALL, INTERSECT, INTERSECT_ALL, EXCEPT, EXCEPT_ALL 018 } 019 020 private final List<RelNode> inputs; 021 private final OpType opType; 022 023 public SetOp(List<RelNode> inputs, OpType opType, SourceAnchor anchor) { 024 super(RelNodeKind.SET_OP, anchor); 025 this.inputs = inputs != null ? Collections.unmodifiableList(inputs) : Collections.<RelNode>emptyList(); 026 this.opType = opType; 027 } 028 029 public OpType getOpType() { return opType; } 030 031 @Override 032 public List<RelNode> getInputs() { return inputs; } 033 034 @Override 035 public <R> R accept(RelNodeVisitor<R> visitor) { return visitor.visitSetOp(this); } 036}