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.TOceanbaseAlterResourceUnitSqlNode;
009import gudusoft.gsqlparser.nodes.oceanbase.TOceanbaseResourceOption;
010
011import java.util.ArrayList;
012
013/**
014 * OceanBase {@code ALTER RESOURCE UNIT} statement (Phase 4 Batch 2).
015 *
016 * <p>Tagged {@link ESqlStatementType#sstoceanbase_alter_resource_unit}.
017 *
018 * @since 4.0.1.4
019 */
020public class TAlterResourceUnitSqlStatement extends TCustomSqlStatement {
021
022    private TObjectName unitName;
023    private ArrayList<TOceanbaseResourceOption> resourceOptions
024            = new ArrayList<TOceanbaseResourceOption>();
025
026    public TAlterResourceUnitSqlStatement(EDbVendor dbvendor) {
027        super(dbvendor);
028        this.sqlstatementtype = ESqlStatementType.sstoceanbase_alter_resource_unit;
029    }
030
031    public TObjectName getUnitName() {
032        return unitName;
033    }
034
035    public ArrayList<TOceanbaseResourceOption> getResourceOptions() {
036        return resourceOptions;
037    }
038
039    @Override
040    public int doParseStatement(TCustomSqlStatement psql) {
041        if (rootNode == null) return -1;
042        super.doParseStatement(psql);
043        TOceanbaseAlterResourceUnitSqlNode node =
044                (TOceanbaseAlterResourceUnitSqlNode) rootNode;
045        this.unitName = node.getUnitName();
046        this.resourceOptions = node.getResourceOptions();
047        return 0;
048    }
049
050    @Override
051    public void accept(TParseTreeVisitor v) {
052        v.preVisit(this);
053        v.postVisit(this);
054    }
055
056    @Override
057    public void acceptChildren(TParseTreeVisitor v) {
058        v.preVisit(this);
059        v.postVisit(this);
060    }
061}