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}