001package gudusoft.gsqlparser.nodes.oceanbase; 002 003import gudusoft.gsqlparser.EDbObjectType; 004import gudusoft.gsqlparser.nodes.TObjectName; 005import gudusoft.gsqlparser.nodes.TObjectNameList; 006import gudusoft.gsqlparser.nodes.TParseTreeNode; 007import gudusoft.gsqlparser.nodes.TParseTreeVisitor; 008import gudusoft.gsqlparser.nodes.TPartitionDefinition; 009 010import java.util.ArrayList; 011 012/** 013 * AST node for OceanBase {@code ALTER TABLEGROUP} (Phase 4 Batch 6). 014 * 015 * <p>Grammar shapes: 016 * <ul> 017 * <li>{@code ALTER TABLEGROUP name SET option_list}</li> 018 * <li>{@code ALTER TABLEGROUP name ADD TABLE table_list}</li> 019 * <li>{@code ALTER TABLEGROUP name ADD PARTITION (def, ...)}</li> 020 * <li>{@code ALTER TABLEGROUP name DROP PARTITION name_list}</li> 021 * <li>{@code ALTER TABLEGROUP name TRUNCATE PARTITION name_list}</li> 022 * </ul> 023 * 024 * @since 4.0.1.4 025 */ 026public class TOceanbaseAlterTablegroupSqlNode extends TParseTreeNode { 027 028 public enum EAction { 029 SET_OPTIONS, 030 ADD_TABLE, 031 ADD_PARTITION, 032 DROP_PARTITION, 033 TRUNCATE_PARTITION 034 } 035 036 private EAction action = EAction.SET_OPTIONS; 037 private TObjectName tablegroupName; 038 private ArrayList<TOceanbaseTablegroupOption> tablegroupOptions 039 = new ArrayList<TOceanbaseTablegroupOption>(); 040 private TObjectNameList addTableList; 041 private ArrayList<TPartitionDefinition> addPartitionDefinitions; 042 private TObjectNameList partitionNameList; 043 044 public EAction getAction() { 045 return action; 046 } 047 048 public void setAction(EAction action) { 049 this.action = action; 050 } 051 052 public TObjectName getTablegroupName() { 053 return tablegroupName; 054 } 055 056 public void setTablegroupName(TObjectName tablegroupName) { 057 this.tablegroupName = tablegroupName; 058 if (tablegroupName != null) { 059 tablegroupName.setDbObjectType(EDbObjectType.database); 060 } 061 } 062 063 public ArrayList<TOceanbaseTablegroupOption> getTablegroupOptions() { 064 return tablegroupOptions; 065 } 066 067 public void addTablegroupOption(TOceanbaseTablegroupOption option) { 068 if (option != null) { 069 this.tablegroupOptions.add(option); 070 } 071 } 072 073 public TObjectNameList getAddTableList() { 074 return addTableList; 075 } 076 077 public void setAddTableList(TObjectNameList addTableList) { 078 this.addTableList = addTableList; 079 } 080 081 public ArrayList<TPartitionDefinition> getAddPartitionDefinitions() { 082 return addPartitionDefinitions; 083 } 084 085 public void setAddPartitionDefinitions(ArrayList<TPartitionDefinition> addPartitionDefinitions) { 086 this.addPartitionDefinitions = addPartitionDefinitions; 087 } 088 089 public TObjectNameList getPartitionNameList() { 090 return partitionNameList; 091 } 092 093 public void setPartitionNameList(TObjectNameList partitionNameList) { 094 this.partitionNameList = partitionNameList; 095 } 096 097 @Override 098 public void init(Object arg1) { 099 setTablegroupName((TObjectName) arg1); 100 } 101 102 @Override 103 public void accept(TParseTreeVisitor v) { 104 v.preVisit(this); 105 v.postVisit(this); 106 } 107 108 @Override 109 public void acceptChildren(TParseTreeVisitor v) { 110 v.preVisit(this); 111 if (tablegroupName != null) { 112 tablegroupName.acceptChildren(v); 113 } 114 for (TOceanbaseTablegroupOption opt : tablegroupOptions) { 115 if (opt != null) opt.acceptChildren(v); 116 } 117 if (addTableList != null) { 118 addTableList.acceptChildren(v); 119 } 120 if (addPartitionDefinitions != null) { 121 for (TPartitionDefinition def : addPartitionDefinitions) { 122 if (def != null) def.acceptChildren(v); 123 } 124 } 125 if (partitionNameList != null) { 126 partitionNameList.acceptChildren(v); 127 } 128 v.postVisit(this); 129 } 130}