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.TOceanbasePurgeSqlNode; 009 010/** 011 * OceanBase {@code PURGE} statement. 012 * 013 * <p>Supports: 014 * <ul> 015 * <li>{@code PURGE TABLE name}</li> 016 * <li>{@code PURGE DATABASE name}</li> 017 * <li>{@code PURGE RECYCLEBIN}</li> 018 * </ul> 019 * Tagged {@link ESqlStatementType#sstoceanbase_purge}. 020 * 021 * @since 4.0.1.4 022 */ 023public class TPurgeSqlStatement extends TCustomSqlStatement { 024 025 private TOceanbasePurgeSqlNode.EPurgeType purgeType; 026 private TObjectName objectName; 027 028 public TPurgeSqlStatement(EDbVendor dbvendor) { 029 super(dbvendor); 030 this.sqlstatementtype = ESqlStatementType.sstoceanbase_purge; 031 } 032 033 public TOceanbasePurgeSqlNode.EPurgeType getPurgeType() { 034 return purgeType; 035 } 036 037 public TObjectName getObjectName() { 038 return objectName; 039 } 040 041 @Override 042 public int doParseStatement(TCustomSqlStatement psql) { 043 if (rootNode == null) return -1; 044 super.doParseStatement(psql); 045 TOceanbasePurgeSqlNode node = (TOceanbasePurgeSqlNode) rootNode; 046 this.purgeType = node.getPurgeType(); 047 this.objectName = node.getObjectName(); 048 return 0; 049 } 050 051 @Override 052 public void accept(TParseTreeVisitor v) { 053 v.preVisit(this); 054 v.postVisit(this); 055 } 056 057 @Override 058 public void acceptChildren(TParseTreeVisitor v) { 059 v.preVisit(this); 060 v.postVisit(this); 061 } 062}