001package gudusoft.gsqlparser.ir.logical.rel; 002 003import gudusoft.gsqlparser.ir.common.SourceAnchor; 004import gudusoft.gsqlparser.ir.logical.*; 005 006import java.util.Collections; 007import java.util.List; 008 009/** 010 * SELECT columns/expressions projection. 011 */ 012public final class Project extends RelNode { 013 private final RelNode input; 014 private final List<RexNode> expressions; 015 private final List<String> aliases; 016 017 public Project(RelNode input, List<RexNode> expressions, List<String> aliases, SourceAnchor anchor) { 018 super(RelNodeKind.PROJECT, anchor); 019 this.input = input; 020 this.expressions = expressions != null ? Collections.unmodifiableList(expressions) : Collections.<RexNode>emptyList(); 021 this.aliases = aliases != null ? Collections.unmodifiableList(aliases) : Collections.<String>emptyList(); 022 } 023 024 public RelNode getInput() { return input; } 025 public List<RexNode> getExpressions() { return expressions; } 026 public List<String> getAliases() { return aliases; } 027 028 @Override 029 public List<RelNode> getInputs() { return Collections.singletonList(input); } 030 031 @Override 032 public <R> R accept(RelNodeVisitor<R> visitor) { return visitor.visitProject(this); } 033}