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.TOceanbaseDropOutlineSqlNode;
009
010/**
011 * OceanBase {@code DROP OUTLINE} statement (Phase 4 Batch 8).
012 *
013 * <p>Tagged {@link ESqlStatementType#sstoracledropoutline} (reused per
014 * ADR-8).
015 *
016 * @since 4.0.1.4
017 */
018public class TDropOutlineSqlStatement extends TCustomSqlStatement {
019
020    private TObjectName outlineName;
021
022    public TDropOutlineSqlStatement(EDbVendor dbvendor) {
023        super(dbvendor);
024        this.sqlstatementtype = ESqlStatementType.sstoracledropoutline;
025    }
026
027    public TObjectName getOutlineName() {
028        return outlineName;
029    }
030
031    @Override
032    public int doParseStatement(TCustomSqlStatement psql) {
033        if (rootNode == null) return -1;
034        super.doParseStatement(psql);
035        TOceanbaseDropOutlineSqlNode node =
036                (TOceanbaseDropOutlineSqlNode) rootNode;
037        this.outlineName = node.getOutlineName();
038        return 0;
039    }
040
041    @Override
042    public void accept(TParseTreeVisitor v) {
043        v.preVisit(this);
044        v.postVisit(this);
045    }
046
047    @Override
048    public void acceptChildren(TParseTreeVisitor v) {
049        v.preVisit(this);
050        v.postVisit(this);
051    }
052}