001package gudusoft.gsqlparser.ir.logical.rel; 002 003import gudusoft.gsqlparser.ir.common.SourceAnchor; 004import gudusoft.gsqlparser.ir.logical.*; 005 006import java.util.Arrays; 007import java.util.List; 008 009/** 010 * JOIN operation. 011 */ 012public final class Join extends RelNode { 013 014 public enum JoinType { 015 INNER, LEFT, RIGHT, FULL, CROSS, NATURAL, SEMI, ANTI 016 } 017 018 private final RelNode left; 019 private final RelNode right; 020 private final JoinType joinType; 021 private final RexNode condition; 022 023 public Join(RelNode left, RelNode right, JoinType joinType, RexNode condition, SourceAnchor anchor) { 024 super(RelNodeKind.JOIN, anchor); 025 this.left = left; 026 this.right = right; 027 this.joinType = joinType; 028 this.condition = condition; 029 } 030 031 public RelNode getLeft() { return left; } 032 public RelNode getRight() { return right; } 033 public JoinType getJoinType() { return joinType; } 034 public RexNode getCondition() { return condition; } 035 036 @Override 037 public List<RelNode> getInputs() { return Arrays.asList(left, right); } 038 039 @Override 040 public <R> R accept(RelNodeVisitor<R> visitor) { return visitor.visitJoin(this); } 041}