001package gudusoft.gsqlparser.stmt.oceanbase;
002
003import gudusoft.gsqlparser.EDbVendor;
004import gudusoft.gsqlparser.ESqlStatementType;
005import gudusoft.gsqlparser.TCustomSqlStatement;
006import gudusoft.gsqlparser.nodes.TObjectName;
007import gudusoft.gsqlparser.nodes.TParseTreeVisitor;
008import gudusoft.gsqlparser.nodes.oceanbase.TOceanbaseDropDblinkSqlNode;
009
010/**
011 * OceanBase {@code DROP DBLINK} statement (US-005 Round 3).
012 *
013 * <p>Tagged {@link ESqlStatementType#sstoceanbase_drop_dblink}.
014 *
015 * @since 4.0.1.4
016 */
017public class TDropDblinkSqlStatement extends TCustomSqlStatement {
018
019    private TObjectName dblinkName;
020    private boolean ifExists;
021
022    public TDropDblinkSqlStatement(EDbVendor dbvendor) {
023        super(dbvendor);
024        this.sqlstatementtype = ESqlStatementType.sstoceanbase_drop_dblink;
025    }
026
027    public TObjectName getDblinkName() {
028        return dblinkName;
029    }
030
031    public boolean isIfExists() {
032        return ifExists;
033    }
034
035    @Override
036    public int doParseStatement(TCustomSqlStatement psql) {
037        if (rootNode == null) return -1;
038        super.doParseStatement(psql);
039        TOceanbaseDropDblinkSqlNode node = (TOceanbaseDropDblinkSqlNode) rootNode;
040        this.dblinkName = node.getDblinkName();
041        this.ifExists = node.isIfExists();
042        return 0;
043    }
044
045    @Override
046    public void accept(TParseTreeVisitor v) {
047        v.preVisit(this);
048        v.postVisit(this);
049    }
050
051    @Override
052    public void acceptChildren(TParseTreeVisitor v) {
053        v.preVisit(this);
054        v.postVisit(this);
055    }
056}