001package gudusoft.gsqlparser.stmt; 002 003import gudusoft.gsqlparser.*; 004import gudusoft.gsqlparser.nodes.TDummy; 005 006import gudusoft.gsqlparser.nodes.TParseTreeVisitor; 007import gudusoft.gsqlparser.nodes.TObjectName; 008 009public class TUseDatabase extends TCustomSqlStatement { 010 public TUseDatabase(EDbVendor dbvendor){ 011 super(dbvendor); 012 sqlstatementtype = ESqlStatementType.sstUseDatabase ; 013 } 014 015 void buildsql() { 016 } 017 018 void clear() { 019 } 020 021 String getasprettytext() { 022 return ""; 023 } 024 025 void iterate(TVisitorAbs pvisitor) { 026 } 027 028 private TObjectName schemaName = null; 029 030 public TObjectName getSchemaName() { 031 return schemaName; 032 } 033 034 private TObjectName databaseName = null; 035 036 public TObjectName getDatabaseName() { 037 return databaseName; 038 } 039 040 private boolean isSchema = false; 041 042 public boolean isSchema() { 043 return isSchema; 044 } 045 046 public int doParseStatement(TCustomSqlStatement psql) { 047 if (rootNode == null) return -1; 048 TDummy dummySqlNode = (TDummy)rootNode; 049 050 super.doParseStatement(psql); 051 switch (dbvendor){ 052 case dbvdatabricks: 053 switch(dummySqlNode.objectType){ 054 case catalog: 055 this.databaseName = (TObjectName)dummySqlNode.node1; 056 this.databaseName.setDbObjectType(EDbObjectType.database); 057 if (getSqlEnv() != null) { 058 getSqlEnv().setDefaultCatalogName(this.databaseName.toString()); 059 } 060 break; 061 case schema: 062 case database: 063 this.schemaName = (TObjectName)dummySqlNode.node1; 064 this.schemaName.setDbObjectType(EDbObjectType.schema); 065 if (getSqlEnv() != null) { 066 getSqlEnv().setDefaultSchemaName(this.schemaName.toString()); 067 } 068 break; 069 } 070 break; 071 default: 072 this.databaseName = (TObjectName)dummySqlNode.node1; 073 // databaseName can be null for statements without an object name, 074 // e.g. Flink "USE MODULES hive, core" 075 if (this.databaseName == null) break; 076 this.databaseName.setDbObjectType(EDbObjectType.database); 077 // this.databaseName.setObjectType(TObjectName.ttobjDatabaseName); 078 if (dummySqlNode.objectType == EDbObjectType.schema){ 079 isSchema = true; 080 } 081 082 if (getSqlEnv() != null) { 083 getSqlEnv().setDefaultCatalogName(this.databaseName.toString()); 084 } 085 break; 086 } 087 return 0; 088 } 089 090 public void accept(TParseTreeVisitor v){ 091 v.preVisit(this); 092 v.postVisit(this); 093 } 094 095 public void acceptChildren(TParseTreeVisitor v){ 096 v.preVisit(this); 097 v.postVisit(this); 098 } 099 100 public void setDatabaseName(TObjectName databaseName) { 101 this.databaseName = databaseName; 102 } 103}