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.TOceanbaseAlterResourcePoolSqlNode; 009import gudusoft.gsqlparser.nodes.oceanbase.TOceanbaseAlterResourcePoolSqlNode.EAction; 010import gudusoft.gsqlparser.nodes.oceanbase.TOceanbaseResourceOption; 011 012import java.util.ArrayList; 013 014/** 015 * OceanBase {@code ALTER RESOURCE POOL} statement (Phase 4 Batch 2). 016 * 017 * <p>{@link #getActionType()} distinguishes the two documented forms: 018 * {@link EAction#UPDATE_OPTIONS} for plain option updates 019 * ({@code ALTER RESOURCE POOL p UNIT_NUM = 4}) and {@link EAction#SPLIT} 020 * for {@code ALTER RESOURCE POOL p SPLIT INTO (p1,p2) ON ('z1','z2')}. 021 * 022 * <p>Tagged {@link ESqlStatementType#sstoceanbase_alter_resource_pool}. 023 * 024 * @since 4.0.1.4 025 */ 026public class TAlterResourcePoolSqlStatement extends TCustomSqlStatement { 027 028 private TObjectName poolName; 029 private EAction actionType; 030 private ArrayList<TOceanbaseResourceOption> resourceOptions 031 = new ArrayList<TOceanbaseResourceOption>(); 032 private ArrayList<TObjectName> splitPoolNames 033 = new ArrayList<TObjectName>(); 034 private ArrayList<TObjectName> splitZoneValues 035 = new ArrayList<TObjectName>(); 036 037 public TAlterResourcePoolSqlStatement(EDbVendor dbvendor) { 038 super(dbvendor); 039 this.sqlstatementtype = ESqlStatementType.sstoceanbase_alter_resource_pool; 040 } 041 042 public TObjectName getPoolName() { 043 return poolName; 044 } 045 046 public EAction getActionType() { 047 return actionType; 048 } 049 050 public ArrayList<TOceanbaseResourceOption> getResourceOptions() { 051 return resourceOptions; 052 } 053 054 public ArrayList<TObjectName> getSplitPoolNames() { 055 return splitPoolNames; 056 } 057 058 public ArrayList<TObjectName> getSplitZoneValues() { 059 return splitZoneValues; 060 } 061 062 @Override 063 public int doParseStatement(TCustomSqlStatement psql) { 064 if (rootNode == null) return -1; 065 super.doParseStatement(psql); 066 TOceanbaseAlterResourcePoolSqlNode node = 067 (TOceanbaseAlterResourcePoolSqlNode) rootNode; 068 this.poolName = node.getPoolName(); 069 this.actionType = node.getActionType(); 070 this.resourceOptions = node.getResourceOptions(); 071 this.splitPoolNames = node.getSplitPoolNames(); 072 this.splitZoneValues = node.getSplitZoneValues(); 073 return 0; 074 } 075 076 @Override 077 public void accept(TParseTreeVisitor v) { 078 v.preVisit(this); 079 v.postVisit(this); 080 } 081 082 @Override 083 public void acceptChildren(TParseTreeVisitor v) { 084 v.preVisit(this); 085 v.postVisit(this); 086 } 087}