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 ROUTINE LOAD statement for StarRocks.
010 *
011 * Syntax:
012 * SHOW [ALL] ROUTINE LOAD [ FOR [db_name.]job_name | FROM db_name ]
013 * [ WHERE [ STATE = { "NEED_SCHEDULE" | "RUNNING" | "PAUSED" | "UNSTABLE" | "STOPPED" | "CANCELLED" } ] ]
014 * [ ORDER BY field_name [ ASC | DESC ] ]
015 * [ LIMIT { [offset, ] limit | limit OFFSET offset } ]
016 */
017public class TShowRoutineLoadStmt extends TCustomSqlStatement {
018
019    private boolean showAll;
020    private TObjectName jobName;       // For: FOR [db_name.]job_name
021    private TObjectName databaseName;  // For: FROM db_name
022    private TExpression filterExpression;
023    private TOrderBy orderBy;
024    private TLimitClause limitClause;
025
026    public TShowRoutineLoadStmt(EDbVendor dbvendor) {
027        super(dbvendor);
028        sqlstatementtype = ESqlStatementType.sststarrocksShowRoutineLoad;
029    }
030
031    public boolean isShowAll() {
032        return showAll;
033    }
034
035    public TObjectName getJobName() {
036        return jobName;
037    }
038
039    public TObjectName getDatabaseName() {
040        return databaseName;
041    }
042
043    public TExpression getFilterExpression() {
044        return filterExpression;
045    }
046
047    public TOrderBy getOrderBy() {
048        return orderBy;
049    }
050
051    public TLimitClause getLimitClause() {
052        return limitClause;
053    }
054
055    @Override
056    public int doParseStatement(TCustomSqlStatement psql) {
057        if (rootNode == null) return -1;
058        super.doParseStatement(psql);
059
060        TShowRoutineLoadSqlNode node = (TShowRoutineLoadSqlNode) rootNode;
061
062        this.showAll = node.isShowAll();
063        this.jobName = node.getJobName();
064        this.databaseName = node.getDatabaseName();
065        this.filterExpression = node.getWhereClause();
066        this.orderBy = node.getOrderBy();
067        this.limitClause = node.getLimitClause();
068
069        return 0;
070    }
071
072    @Override
073    public void accept(TParseTreeVisitor v) {
074        v.preVisit(this);
075        v.postVisit(this);
076    }
077
078    @Override
079    public void acceptChildren(TParseTreeVisitor v) {
080        v.preVisit(this);
081        v.postVisit(this);
082    }
083}