001package gudusoft.gsqlparser.stmt;
002
003import gudusoft.gsqlparser.EDbVendor;
004import gudusoft.gsqlparser.ESqlStatementType;
005import gudusoft.gsqlparser.TCustomSqlStatement;
006import gudusoft.gsqlparser.nodes.*;
007
008/**
009 * SHOW EXPORT statement for StarRocks.
010 *
011 * Syntax:
012 * SHOW EXPORT[ FROM <db_name> ]
013 * [WHERE
014 *     [ QUERYID = <query_id> ]
015 *     [ STATE = { "PENDING" | "EXPORTING" | "FINISHED" | "CANCELLED" } ]
016 * ]
017 * [ ORDER BY <field_name> [ ASC | DESC ] [, ... ] ]
018 * [ LIMIT <count> ]
019 *
020 * This statement queries the execution information of export jobs.
021 */
022public class TStarrocksShowExportStmt extends TCustomSqlStatement {
023
024    // FROM database (optional)
025    private TObjectName databaseName;
026
027    // WHERE condition (optional)
028    private TExpression whereCondition;
029
030    // ORDER BY clause (optional)
031    private TOrderByItemList orderByClause;
032
033    // LIMIT clause (optional)
034    private TLimitClause limitClause;
035
036    public TStarrocksShowExportStmt(EDbVendor dbvendor) {
037        super(dbvendor);
038        sqlstatementtype = ESqlStatementType.sststarrocksShowExport;
039    }
040
041    // Getters
042    public TObjectName getDatabaseName() {
043        return databaseName;
044    }
045
046    public TExpression getWhereCondition() {
047        return whereCondition;
048    }
049
050    public TOrderByItemList getOrderByClause() {
051        return orderByClause;
052    }
053
054    public TLimitClause getLimitClause() {
055        return limitClause;
056    }
057
058    @Override
059    public int doParseStatement(TCustomSqlStatement psql) {
060        if (rootNode == null) return -1;
061        super.doParseStatement(psql);
062
063        TShowExportSqlNode node = (TShowExportSqlNode) rootNode;
064
065        this.databaseName = node.getDatabaseName();
066        this.whereCondition = node.getWhereCondition();
067        this.orderByClause = node.getOrderByClause();
068        this.limitClause = node.getLimitClause();
069
070        return 0;
071    }
072
073    @Override
074    public void accept(TParseTreeVisitor v) {
075        v.preVisit(this);
076        v.postVisit(this);
077    }
078
079    @Override
080    public void acceptChildren(TParseTreeVisitor v) {
081        v.preVisit(this);
082        v.postVisit(this);
083    }
084}