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.TOceanbaseAlterTenantSqlNode; 009import gudusoft.gsqlparser.nodes.oceanbase.TOceanbaseAlterTenantSqlNode.EAction; 010import gudusoft.gsqlparser.nodes.oceanbase.TOceanbaseTenantOption; 011 012import java.util.ArrayList; 013 014/** 015 * OceanBase {@code ALTER TENANT} statement (Phase 4 Batch 1). 016 * 017 * <p>{@link #getActionType()} selects one of the five documented 018 * {@code ALTER TENANT} forms: 019 * {@code SET} options list, {@code ADD PRIMARY_ZONE}, 020 * {@code RENAME TO}, {@code LOCK}, and {@code UNLOCK}. Downstream code can 021 * switch on the action type and read just the relevant fields 022 * ({@link #getTenantOptions()}, {@link #getNewTenantName()}, 023 * {@link #getPrimaryZoneValue()}). 024 * 025 * <p>Tagged {@link ESqlStatementType#sstoceanbase_alter_tenant}. 026 * 027 * @since 4.0.1.4 028 */ 029public class TAlterTenantSqlStatement extends TCustomSqlStatement { 030 031 private TObjectName tenantName; 032 private EAction actionType; 033 private TObjectName newTenantName; 034 private TObjectName primaryZoneValue; 035 private ArrayList<TOceanbaseTenantOption> tenantOptions 036 = new ArrayList<TOceanbaseTenantOption>(); 037 038 public TAlterTenantSqlStatement(EDbVendor dbvendor) { 039 super(dbvendor); 040 this.sqlstatementtype = ESqlStatementType.sstoceanbase_alter_tenant; 041 } 042 043 public TObjectName getTenantName() { 044 return tenantName; 045 } 046 047 public EAction getActionType() { 048 return actionType; 049 } 050 051 public TObjectName getNewTenantName() { 052 return newTenantName; 053 } 054 055 public TObjectName getPrimaryZoneValue() { 056 return primaryZoneValue; 057 } 058 059 public ArrayList<TOceanbaseTenantOption> getTenantOptions() { 060 return tenantOptions; 061 } 062 063 @Override 064 public int doParseStatement(TCustomSqlStatement psql) { 065 if (rootNode == null) return -1; 066 super.doParseStatement(psql); 067 TOceanbaseAlterTenantSqlNode node = (TOceanbaseAlterTenantSqlNode) rootNode; 068 this.tenantName = node.getTenantName(); 069 this.actionType = node.getActionType(); 070 this.newTenantName = node.getNewTenantName(); 071 this.primaryZoneValue = node.getPrimaryZoneValue(); 072 this.tenantOptions = node.getTenantOptions(); 073 return 0; 074 } 075 076 @Override 077 public void accept(TParseTreeVisitor v) { 078 v.preVisit(this); 079 v.postVisit(this); 080 } 081 082 @Override 083 public void acceptChildren(TParseTreeVisitor v) { 084 v.preVisit(this); 085 v.postVisit(this); 086 } 087}