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}