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 008/** 009 * AST node for OceanBase {@code PURGE} statements. 010 * 011 * <p>Supports: 012 * <ul> 013 * <li>{@code PURGE TABLE name}</li> 014 * <li>{@code PURGE DATABASE name}</li> 015 * <li>{@code PURGE RECYCLEBIN}</li> 016 * </ul> 017 * 018 * @since 4.0.1.4 019 */ 020public class TOceanbasePurgeSqlNode extends TParseTreeNode { 021 022 public enum EPurgeType { TABLE, DATABASE, RECYCLEBIN, INDEX, TENANT } 023 024 private EPurgeType purgeType; 025 private TObjectName objectName; 026 027 public EPurgeType getPurgeType() { 028 return purgeType; 029 } 030 031 public void setPurgeType(EPurgeType purgeType) { 032 this.purgeType = purgeType; 033 } 034 035 public TObjectName getObjectName() { 036 return objectName; 037 } 038 039 public void setObjectName(TObjectName objectName) { 040 this.objectName = objectName; 041 if (objectName != null) { 042 objectName.setDbObjectType( 043 purgeType == EPurgeType.DATABASE 044 ? EDbObjectType.database 045 : EDbObjectType.table); 046 } 047 } 048 049 @Override 050 public void init(Object arg1) { 051 setObjectName((TObjectName) arg1); 052 } 053 054 @Override 055 public void accept(TParseTreeVisitor v) { 056 v.preVisit(this); 057 v.postVisit(this); 058 } 059 060 @Override 061 public void acceptChildren(TParseTreeVisitor v) { 062 v.preVisit(this); 063 if (objectName != null) { 064 objectName.acceptChildren(v); 065 } 066 v.postVisit(this); 067 } 068}