001package gudusoft.gsqlparser.nodes.oceanbase; 002 003import gudusoft.gsqlparser.nodes.TConstant; 004import gudusoft.gsqlparser.nodes.TParseTreeNode; 005import gudusoft.gsqlparser.nodes.TParseTreeVisitor; 006 007/** 008 * AST node for OceanBase MySQL-mode {@code XA} transaction statements. 009 * 010 * <p>Supports: 011 * <ul> 012 * <li>{@code XA START 'xid' [JOIN | RESUME]}</li> 013 * <li>{@code XA END 'xid' [SUSPEND [FOR MIGRATE]]}</li> 014 * <li>{@code XA PREPARE 'xid'}</li> 015 * <li>{@code XA COMMIT 'xid' [ONE PHASE]}</li> 016 * <li>{@code XA ROLLBACK 'xid'}</li> 017 * <li>{@code XA RECOVER [CONVERT XID]}</li> 018 * </ul> 019 * 020 * @since 4.0.1.4 021 */ 022public class TOceanbaseXaSqlNode extends TParseTreeNode { 023 024 public enum EXaType { START, END, PREPARE, COMMIT, ROLLBACK, RECOVER } 025 026 private EXaType xaType; 027 private TConstant xid; 028 029 public EXaType getXaType() { 030 return xaType; 031 } 032 033 public void setXaType(EXaType xaType) { 034 this.xaType = xaType; 035 } 036 037 public TConstant getXid() { 038 return xid; 039 } 040 041 public void setXid(TConstant xid) { 042 this.xid = xid; 043 } 044 045 @Override 046 public void accept(TParseTreeVisitor v) { 047 v.preVisit(this); 048 v.postVisit(this); 049 } 050 051 @Override 052 public void acceptChildren(TParseTreeVisitor v) { 053 v.preVisit(this); 054 if (xid != null) { 055 xid.acceptChildren(v); 056 } 057 v.postVisit(this); 058 } 059}