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}