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 * ORDER BY + LIMIT/OFFSET. 011 */ 012public final class Sort extends RelNode { 013 private final RelNode input; 014 private final List<RexNode> orderBy; 015 private final RexNode limit; 016 private final RexNode offset; 017 018 public Sort(RelNode input, List<RexNode> orderBy, RexNode limit, RexNode offset, SourceAnchor anchor) { 019 super(RelNodeKind.SORT, anchor); 020 this.input = input; 021 this.orderBy = orderBy != null ? Collections.unmodifiableList(orderBy) : Collections.<RexNode>emptyList(); 022 this.limit = limit; 023 this.offset = offset; 024 } 025 026 public RelNode getInput() { return input; } 027 public List<RexNode> getOrderBy() { return orderBy; } 028 public RexNode getLimit() { return limit; } 029 public RexNode getOffset() { return offset; } 030 031 @Override 032 public List<RelNode> getInputs() { return Collections.singletonList(input); } 033 034 @Override 035 public <R> R accept(RelNodeVisitor<R> visitor) { return visitor.visitSort(this); } 036}