001package gudusoft.gsqlparser.stmt; 002 003 004import gudusoft.gsqlparser.*; 005import gudusoft.gsqlparser.nodes.TDescribeSqlNode; 006import gudusoft.gsqlparser.nodes.TObjectName; 007import gudusoft.gsqlparser.nodes.TParseTreeVisitor; 008 009public class TDescribeStmt extends TCustomSqlStatement { 010 011 private TObjectName dbObjectName; 012 private EDbObjectType dbObjectType; 013 014 public TObjectName getDbObjectName() { 015 return dbObjectName; 016 } 017 018 public EDbObjectType getDbObjectType() { 019 return dbObjectType; 020 } 021 022 public TObjectName getColumnName() { 023 return describeSqlNode.getColumnName(); 024 } 025 026 public TSourceToken getDescToken() { 027 return describeSqlNode.getDescToken(); 028 } 029 030 public TObjectName getTableName() { 031 return describeSqlNode.getTableName(); 032 } 033 034 /** 035 * Whether the statement asks for the metadata as JSON 036 * ({@code DESCRIBE TABLE EXTENDED t AS JSON}, Databricks / Spark). 037 * 038 * @return {@code true} when an {@code AS JSON} clause is present 039 */ 040 public boolean isAsJson() { 041 return (describeSqlNode != null) && (describeSqlNode.getAsJsonToken() != null); 042 } 043 044 public TDescribeStmt(EDbVendor dbvendor) { 045 super(dbvendor); 046 sqlstatementtype = ESqlStatementType.sstdescribe; 047 } 048 049 TDescribeSqlNode describeSqlNode; 050 051 public int doParseStatement(TCustomSqlStatement psql) { 052 if (rootNode == null) return -1; 053 super.doParseStatement(psql); 054 describeSqlNode = (TDescribeSqlNode)rootNode; 055 dbObjectName = describeSqlNode.getDbObjectName(); 056 dbObjectType = describeSqlNode.getDbObjectType(); 057 058 return 0; 059 } 060 061 public void accept(TParseTreeVisitor v){ 062 v.preVisit(this); 063 v.postVisit(this); 064 } 065 066 public void acceptChildren(TParseTreeVisitor v){ 067 v.preVisit(this); 068 v.postVisit(this); 069 } 070 071}