001package gudusoft.gsqlparser.stmt.oceanbase; 002 003import gudusoft.gsqlparser.EDbVendor; 004import gudusoft.gsqlparser.ESqlStatementType; 005import gudusoft.gsqlparser.TCustomSqlStatement; 006import gudusoft.gsqlparser.nodes.TConstant; 007import gudusoft.gsqlparser.nodes.TParseTreeVisitor; 008import gudusoft.gsqlparser.nodes.oceanbase.TOceanbaseXaSqlNode; 009 010/** 011 * OceanBase MySQL-mode {@code XA} transaction statement 012 * (XA START/END/PREPARE/COMMIT/ROLLBACK/RECOVER). 013 * 014 * <p>Tagged {@link ESqlStatementType#sstoceanbase_xa}. 015 * 016 * @since 4.0.1.4 017 */ 018public class TXaSqlStatement extends TCustomSqlStatement { 019 020 private TOceanbaseXaSqlNode.EXaType xaType; 021 private TConstant xid; 022 023 public TXaSqlStatement(EDbVendor dbvendor) { 024 super(dbvendor); 025 this.sqlstatementtype = ESqlStatementType.sstoceanbase_xa; 026 } 027 028 public TOceanbaseXaSqlNode.EXaType getXaType() { 029 return xaType; 030 } 031 032 public TConstant getXid() { 033 return xid; 034 } 035 036 @Override 037 public int doParseStatement(TCustomSqlStatement psql) { 038 if (rootNode == null) return -1; 039 super.doParseStatement(psql); 040 TOceanbaseXaSqlNode node = (TOceanbaseXaSqlNode) rootNode; 041 this.xaType = node.getXaType(); 042 this.xid = node.getXid(); 043 return 0; 044 } 045 046 @Override 047 public void accept(TParseTreeVisitor v) { 048 v.preVisit(this); 049 v.postVisit(this); 050 } 051 052 @Override 053 public void acceptChildren(TParseTreeVisitor v) { 054 v.preVisit(this); 055 v.postVisit(this); 056 } 057}