001package gudusoft.gsqlparser.stmt;
002
003import gudusoft.gsqlparser.EDbVendor;
004import gudusoft.gsqlparser.ESqlStatementType;
005import gudusoft.gsqlparser.TCustomSqlStatement;
006import gudusoft.gsqlparser.nodes.*;
007
008/**
009 * CANCEL EXPORT statement for StarRocks.
010 *
011 * Syntax:
012 * CANCEL EXPORT [FROM db_name] WHERE QUERYID = "query_id"
013 *
014 * This statement cancels a data export job that is not in CANCELLED or FINISHED state.
015 * The cancellation is asynchronous - verify using SHOW EXPORT.
016 */
017public class TStarrocksCancelExportStmt extends TCustomSqlStatement {
018
019    // FROM database (optional)
020    private TObjectName databaseName;
021
022    // WHERE condition (required - contains QUERYID)
023    private TExpression whereCondition;
024
025    public TStarrocksCancelExportStmt(EDbVendor dbvendor) {
026        super(dbvendor);
027        sqlstatementtype = ESqlStatementType.sststarrocksCancelExport;
028    }
029
030    // Getters
031    public TObjectName getDatabaseName() {
032        return databaseName;
033    }
034
035    public TExpression getWhereCondition() {
036        return whereCondition;
037    }
038
039    @Override
040    public int doParseStatement(TCustomSqlStatement psql) {
041        if (rootNode == null) return -1;
042        super.doParseStatement(psql);
043
044        TCancelExportSqlNode node = (TCancelExportSqlNode) rootNode;
045
046        this.databaseName = node.getDatabaseName();
047        this.whereCondition = node.getWhereCondition();
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}