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 * Leaf node: table or view reference. 013 */ 014public final class TableScan extends RelNode { 015 private final String tableName; 016 private final List<String> columns; 017 018 public TableScan(String tableName, List<String> columns, SourceAnchor anchor) { 019 super(RelNodeKind.TABLE_SCAN, anchor); 020 this.tableName = tableName; 021 this.columns = columns != null ? Collections.unmodifiableList(columns) : Collections.<String>emptyList(); 022 } 023 024 public String getTableName() { return tableName; } 025 public List<String> getColumns() { return columns; } 026 027 @Override 028 public List<RelNode> getInputs() { return Collections.emptyList(); } 029 030 @Override 031 public <R> R accept(RelNodeVisitor<R> visitor) { return visitor.visitTableScan(this); } 032 033 @Override 034 public String toString() { return "TableScan{" + tableName + "}"; } 035}