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.TOceanbaseAlterOutlineSqlNode; 009import gudusoft.gsqlparser.nodes.oceanbase.TOceanbaseAlterOutlineSqlNode.EAction; 010 011/** 012 * OceanBase {@code ALTER OUTLINE} statement (Phase 4 Batch 8). 013 * 014 * <p>Tagged {@link ESqlStatementType#sstoraclealteroutline} (reused per 015 * ADR-8). 016 * 017 * @since 4.0.1.4 018 */ 019public class TAlterOutlineSqlStatement extends TCustomSqlStatement { 020 021 private TObjectName outlineName; 022 private EAction actionType; 023 024 public TAlterOutlineSqlStatement(EDbVendor dbvendor) { 025 super(dbvendor); 026 this.sqlstatementtype = ESqlStatementType.sstoraclealteroutline; 027 } 028 029 public TObjectName getOutlineName() { 030 return outlineName; 031 } 032 033 public EAction getActionType() { 034 return actionType; 035 } 036 037 public boolean isEnable() { 038 return actionType == EAction.ENABLE; 039 } 040 041 public boolean isDisable() { 042 return actionType == EAction.DISABLE; 043 } 044 045 @Override 046 public int doParseStatement(TCustomSqlStatement psql) { 047 if (rootNode == null) return -1; 048 super.doParseStatement(psql); 049 TOceanbaseAlterOutlineSqlNode node = 050 (TOceanbaseAlterOutlineSqlNode) rootNode; 051 this.outlineName = node.getOutlineName(); 052 this.actionType = node.getActionType(); 053 return 0; 054 } 055 056 @Override 057 public void accept(TParseTreeVisitor v) { 058 v.preVisit(this); 059 v.postVisit(this); 060 } 061 062 @Override 063 public void acceptChildren(TParseTreeVisitor v) { 064 v.preVisit(this); 065 v.postVisit(this); 066 } 067}