001package gudusoft.gsqlparser.nodes.oceanbase; 002 003import gudusoft.gsqlparser.EDbObjectType; 004import gudusoft.gsqlparser.nodes.TConstant; 005import gudusoft.gsqlparser.nodes.TObjectName; 006import gudusoft.gsqlparser.nodes.TParseTreeNode; 007import gudusoft.gsqlparser.nodes.TParseTreeVisitor; 008 009/** 010 * AST node for OceanBase system-tenant {@code SHOW} statements 011 * (Phase 4 — OceanBase documented syntax gaps). 012 * 013 * <p>One node represents the family of OB-only SHOW variants that are not 014 * covered by the inherited MySQL grammar: 015 * <ul> 016 * <li>{@code SHOW TENANT [LIKE 'pattern']}</li> 017 * <li>{@code SHOW CREATE TENANT tenant_name}</li> 018 * <li>{@code SHOW RESOURCE POOL}</li> 019 * </ul> 020 * 021 * <p>The {@link #getShowType()} discriminator identifies which variant 022 * was parsed. {@link #getTenantName()} is populated only for 023 * {@code SHOW CREATE TENANT}; {@link #getLikePattern()} is populated only 024 * for {@code SHOW TENANT LIKE 'pattern'}. 025 * 026 * @since 4.0.1.4 027 */ 028public class TOceanbaseShowTenantSqlNode extends TParseTreeNode { 029 030 /** 031 * Discriminator for the concrete SHOW variant represented by this 032 * node. The value is set in the grammar action and is never 033 * {@code null} after a successful parse. 034 */ 035 public enum EShowType { 036 /** {@code SHOW TENANT [LIKE 'pattern']}. */ 037 tenant, 038 /** {@code SHOW CREATE TENANT tenant_name}. */ 039 createTenant, 040 /** {@code SHOW RESOURCE POOL}. */ 041 resourcePool, 042 /** {@code SHOW TENANTS}. */ 043 tenants, 044 /** {@code SHOW TENANT STATUS}. */ 045 tenantStatus, 046 /** {@code SHOW RECYCLEBIN}. */ 047 recyclebin, 048 /** {@code SHOW TABLEGROUPS}. */ 049 tablegroups, 050 /** {@code SHOW PARAMETERS [LIKE 'pattern' [TENANT = 'name']]}. */ 051 parameters 052 } 053 054 private EShowType showType; 055 private TObjectName tenantName; 056 private TConstant likePattern; 057 058 public EShowType getShowType() { 059 return showType; 060 } 061 062 public void setShowType(EShowType showType) { 063 this.showType = showType; 064 } 065 066 public TObjectName getTenantName() { 067 return tenantName; 068 } 069 070 public void setTenantName(TObjectName tenantName) { 071 this.tenantName = tenantName; 072 if (tenantName != null) { 073 tenantName.setDbObjectType(EDbObjectType.database); 074 } 075 } 076 077 public TConstant getLikePattern() { 078 return likePattern; 079 } 080 081 public void setLikePattern(TConstant likePattern) { 082 this.likePattern = likePattern; 083 } 084 085 @Override 086 public void accept(TParseTreeVisitor v) { 087 v.preVisit(this); 088 v.postVisit(this); 089 } 090 091 @Override 092 public void acceptChildren(TParseTreeVisitor v) { 093 v.preVisit(this); 094 if (tenantName != null) { 095 tenantName.acceptChildren(v); 096 } 097 v.postVisit(this); 098 } 099}