001package gudusoft.gsqlparser.stmt;
002
003import gudusoft.gsqlparser.EDbVendor;
004import gudusoft.gsqlparser.ESqlStatementType;
005import gudusoft.gsqlparser.TCustomSqlStatement;
006import gudusoft.gsqlparser.TSourceToken;
007import gudusoft.gsqlparser.nodes.TObjectName;
008import gudusoft.gsqlparser.nodes.TParseTreeVisitor;
009import gudusoft.gsqlparser.nodes.TShowFunctionsSqlNode;
010
011/**
012 * StarRocks SHOW [FULL] [BUILTIN] FUNCTIONS [IN|FROM db] [LIKE 'pattern'] statement.
013 * Also supports SHOW GLOBAL FUNCTIONS [IN|FROM db] [LIKE 'pattern'].
014 */
015public class TStarrocksShowFunctionsStmt extends TCustomSqlStatement {
016
017    public TStarrocksShowFunctionsStmt(EDbVendor dbvendor) {
018        super(dbvendor);
019        sqlstatementtype = ESqlStatementType.sststarrocksShowFunctions;
020    }
021
022    private boolean showFull = false;
023    private boolean showBuiltin = false;
024    private boolean showGlobal = false;
025    private TObjectName databaseName = null;
026    private TSourceToken likePattern = null;
027
028    public boolean isShowFull() {
029        return showFull;
030    }
031
032    public boolean isShowBuiltin() {
033        return showBuiltin;
034    }
035
036    public boolean isShowGlobal() {
037        return showGlobal;
038    }
039
040    public TObjectName getDatabaseName() {
041        return databaseName;
042    }
043
044    public TSourceToken getLikePattern() {
045        return likePattern;
046    }
047
048    public int doParseStatement(TCustomSqlStatement psql) {
049        if (rootNode == null) return -1;
050        super.doParseStatement(psql);
051        if (rootNode instanceof TShowFunctionsSqlNode) {
052            TShowFunctionsSqlNode sqlNode = (TShowFunctionsSqlNode) rootNode;
053            this.showFull = sqlNode.isShowFull();
054            this.showBuiltin = sqlNode.isShowBuiltin();
055            this.showGlobal = sqlNode.isShowGlobal();
056            this.databaseName = sqlNode.getDatabaseName();
057            this.likePattern = sqlNode.getLikePattern();
058        }
059        return 0;
060    }
061
062    public void accept(TParseTreeVisitor v) {
063        v.preVisit(this);
064        v.postVisit(this);
065    }
066
067    public void acceptChildren(TParseTreeVisitor v) {
068        v.preVisit(this);
069        v.postVisit(this);
070    }
071}