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.TOceanbaseDropTenantSqlNode; 009 010/** 011 * OceanBase {@code DROP TENANT} statement (Phase 4 Batch 1). 012 * 013 * <p>Supports {@code DROP TENANT [IF EXISTS] name [FORCE|PURGE]}. 014 * Tagged {@link ESqlStatementType#sstoceanbase_drop_tenant}. 015 * 016 * @since 4.0.1.4 017 */ 018public class TDropTenantSqlStatement extends TCustomSqlStatement { 019 020 private TObjectName tenantName; 021 private boolean force; 022 private boolean purge; 023 024 public TDropTenantSqlStatement(EDbVendor dbvendor) { 025 super(dbvendor); 026 this.sqlstatementtype = ESqlStatementType.sstoceanbase_drop_tenant; 027 } 028 029 public TObjectName getTenantName() { 030 return tenantName; 031 } 032 033 public boolean isForce() { 034 return force; 035 } 036 037 public boolean isPurge() { 038 return purge; 039 } 040 041 @Override 042 public int doParseStatement(TCustomSqlStatement psql) { 043 if (rootNode == null) return -1; 044 super.doParseStatement(psql); 045 TOceanbaseDropTenantSqlNode node = (TOceanbaseDropTenantSqlNode) rootNode; 046 this.tenantName = node.getTenantName(); 047 this.force = node.isForce(); 048 this.purge = node.isPurge(); 049 return 0; 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 v.postVisit(this); 062 } 063}