001package gudusoft.gsqlparser.nodes.oceanbase; 002 003import gudusoft.gsqlparser.EDbObjectType; 004import gudusoft.gsqlparser.nodes.TObjectName; 005import gudusoft.gsqlparser.nodes.TParseTreeNode; 006import gudusoft.gsqlparser.nodes.TParseTreeVisitor; 007 008import java.util.ArrayList; 009 010/** 011 * AST node for OceanBase {@code CREATE RESOURCE UNIT} (Phase 4 Batch 2). 012 * 013 * <p>Grammar shape: 014 * {@code CREATE RESOURCE UNIT name [MIN_CPU = n, MAX_CPU = n, 015 * MEMORY_SIZE = 'xG', LOG_DISK_SIZE = 'xG', MIN_IOPS = n, MAX_IOPS = n, 016 * IOPS_WEIGHT = n, MAX_SESSION_NUM = n]}. 017 * 018 * @since 4.0.1.4 019 */ 020public class TOceanbaseCreateResourceUnitSqlNode extends TParseTreeNode { 021 022 private TObjectName unitName; 023 private ArrayList<TOceanbaseResourceOption> resourceOptions 024 = new ArrayList<TOceanbaseResourceOption>(); 025 026 public TObjectName getUnitName() { 027 return unitName; 028 } 029 030 public void setUnitName(TObjectName unitName) { 031 this.unitName = unitName; 032 if (unitName != null) { 033 unitName.setDbObjectType(EDbObjectType.database); 034 } 035 } 036 037 public ArrayList<TOceanbaseResourceOption> getResourceOptions() { 038 return resourceOptions; 039 } 040 041 public void addResourceOption(TOceanbaseResourceOption option) { 042 if (option != null) { 043 this.resourceOptions.add(option); 044 } 045 } 046 047 @Override 048 public void init(Object arg1) { 049 setUnitName((TObjectName) arg1); 050 } 051 052 @Override 053 public void accept(TParseTreeVisitor v) { 054 v.preVisit(this); 055 v.postVisit(this); 056 } 057 058 @Override 059 public void acceptChildren(TParseTreeVisitor v) { 060 v.preVisit(this); 061 if (unitName != null) { 062 unitName.acceptChildren(v); 063 } 064 if (resourceOptions != null) { 065 for (TOceanbaseResourceOption opt : resourceOptions) { 066 if (opt != null) { 067 opt.acceptChildren(v); 068 } 069 } 070 } 071 v.postVisit(this); 072 } 073}