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 * INSERT statement.
013 */
014public final class DmlInsert extends RelNode {
015    private final String targetTable;
016    private final List<String> targetColumns;
017    private final RelNode source;
018
019    public DmlInsert(String targetTable, List<String> targetColumns, RelNode source, SourceAnchor anchor) {
020        super(RelNodeKind.DML_INSERT, anchor);
021        this.targetTable = targetTable;
022        this.targetColumns = targetColumns != null ? Collections.unmodifiableList(targetColumns) : Collections.<String>emptyList();
023        this.source = source;
024    }
025
026    public String getTargetTable() { return targetTable; }
027    public List<String> getTargetColumns() { return targetColumns; }
028    public RelNode getSource() { return source; }
029
030    @Override
031    public List<RelNode> getInputs() {
032        return source != null ? Collections.singletonList(source) : Collections.<RelNode>emptyList();
033    }
034
035    @Override
036    public <R> R accept(RelNodeVisitor<R> visitor) { return visitor.visitDmlInsert(this); }
037}