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