001package gudusoft.gsqlparser.stmt; 002 003import gudusoft.gsqlparser.EDbVendor; 004import gudusoft.gsqlparser.ESqlStatementType; 005import gudusoft.gsqlparser.TCustomSqlStatement; 006import gudusoft.gsqlparser.nodes.*; 007 008/** 009 * ABORT LOAD TRANSACTION statement for StarRocks. 010 * 011 * Syntax: 012 * ABORT LOAD TRANSACTION [label_name] 013 * ABORT LOAD TRANSACTION [FOR db_name] 014 * 015 * Aborts the stream load transaction to roll back data changes. 016 * Note: ROLLBACK LOAD TRANSACTION is an alias for ABORT LOAD TRANSACTION. 017 */ 018public class TAbortLoadTransactionStmt extends TCustomSqlStatement { 019 020 // Transaction label (optional) 021 private TObjectName labelName; 022 023 // Database name (optional: FOR db_name) 024 private TObjectName databaseName; 025 026 // Whether this was specified using ROLLBACK instead of ABORT 027 private boolean isRollback; 028 029 public TAbortLoadTransactionStmt(EDbVendor dbvendor) { 030 super(dbvendor); 031 sqlstatementtype = ESqlStatementType.sststarrocksAbortLoadTransaction; 032 } 033 034 // Getters 035 public TObjectName getLabelName() { 036 return labelName; 037 } 038 039 public TObjectName getDatabaseName() { 040 return databaseName; 041 } 042 043 public boolean isRollback() { 044 return isRollback; 045 } 046 047 @Override 048 public int doParseStatement(TCustomSqlStatement psql) { 049 if (rootNode == null) return -1; 050 super.doParseStatement(psql); 051 052 TAbortLoadTransactionSqlNode node = (TAbortLoadTransactionSqlNode) rootNode; 053 054 this.labelName = node.getLabelName(); 055 this.databaseName = node.getDatabaseName(); 056 this.isRollback = node.isRollback(); 057 058 return 0; 059 } 060 061 @Override 062 public void accept(TParseTreeVisitor v) { 063 v.preVisit(this); 064 v.postVisit(this); 065 } 066 067 @Override 068 public void acceptChildren(TParseTreeVisitor v) { 069 v.preVisit(this); 070 v.postVisit(this); 071 } 072}