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.TOceanbaseAlterSystemSqlNode;
009import gudusoft.gsqlparser.nodes.oceanbase.TOceanbaseAlterSystemSqlNode.EAction;
010
011/**
012 * OceanBase {@code ALTER SYSTEM} statement (Phase 4 Batch 3 + 10).
013 *
014 * <p>Tagged {@link ESqlStatementType#sstoceanbase_alter_system}.
015 *
016 * @since 4.0.1.4
017 */
018public class TAlterSystemSqlStatement extends TCustomSqlStatement {
019
020    private EAction actionType;
021    private TObjectName settingName;
022    private TObjectName settingValue;
023    private TObjectName targetName;
024    private String subVerb;
025
026    public TAlterSystemSqlStatement(EDbVendor dbvendor) {
027        super(dbvendor);
028        this.sqlstatementtype = ESqlStatementType.sstoceanbase_alter_system;
029    }
030
031    public EAction getActionType() {
032        return actionType;
033    }
034
035    public TObjectName getSettingName() {
036        return settingName;
037    }
038
039    public TObjectName getSettingValue() {
040        return settingValue;
041    }
042
043    public TObjectName getTargetName() {
044        return targetName;
045    }
046
047    public String getSubVerb() {
048        return subVerb;
049    }
050
051    @Override
052    public int doParseStatement(TCustomSqlStatement psql) {
053        if (rootNode == null) return -1;
054        super.doParseStatement(psql);
055        TOceanbaseAlterSystemSqlNode node =
056                (TOceanbaseAlterSystemSqlNode) rootNode;
057        this.actionType = node.getActionType();
058        this.settingName = node.getSettingName();
059        this.settingValue = node.getSettingValue();
060        this.targetName = node.getTargetName();
061        this.subVerb = node.getSubVerb();
062        return 0;
063    }
064
065    @Override
066    public void accept(TParseTreeVisitor v) {
067        v.preVisit(this);
068        v.postVisit(this);
069    }
070
071    @Override
072    public void acceptChildren(TParseTreeVisitor v) {
073        v.preVisit(this);
074        v.postVisit(this);
075    }
076}