001package gudusoft.gsqlparser.stmt;
002
003import gudusoft.gsqlparser.EDbVendor;
004import gudusoft.gsqlparser.ESqlStatementType;
005import gudusoft.gsqlparser.TCustomSqlStatement;
006import gudusoft.gsqlparser.nodes.*;
007
008/**
009 * COMMIT LOAD TRANSACTION statement for StarRocks.
010 *
011 * Syntax:
012 * COMMIT LOAD TRANSACTION [label_name]
013 * COMMIT LOAD TRANSACTION [FOR db_name]
014 *
015 * Commits the stream load transaction making data changes persistent.
016 */
017public class TCommitLoadTransactionStmt extends TCustomSqlStatement {
018
019    // Transaction label (optional)
020    private TObjectName labelName;
021
022    // Database name (optional: FOR db_name)
023    private TObjectName databaseName;
024
025    public TCommitLoadTransactionStmt(EDbVendor dbvendor) {
026        super(dbvendor);
027        sqlstatementtype = ESqlStatementType.sststarrocksCommitLoadTransaction;
028    }
029
030    // Getters
031    public TObjectName getLabelName() {
032        return labelName;
033    }
034
035    public TObjectName getDatabaseName() {
036        return databaseName;
037    }
038
039    @Override
040    public int doParseStatement(TCustomSqlStatement psql) {
041        if (rootNode == null) return -1;
042        super.doParseStatement(psql);
043
044        TCommitLoadTransactionSqlNode node = (TCommitLoadTransactionSqlNode) rootNode;
045
046        this.labelName = node.getLabelName();
047        this.databaseName = node.getDatabaseName();
048
049        return 0;
050    }
051
052    @Override
053    public void accept(TParseTreeVisitor v) {
054        v.preVisit(this);
055        v.postVisit(this);
056    }
057
058    @Override
059    public void acceptChildren(TParseTreeVisitor v) {
060        v.preVisit(this);
061        v.postVisit(this);
062    }
063}