001package gudusoft.gsqlparser.stmt.snowflake; 002 003 004import gudusoft.gsqlparser.EDbVendor; 005import gudusoft.gsqlparser.ESqlClause; 006import gudusoft.gsqlparser.ESqlStatementType; 007import gudusoft.gsqlparser.ETableKind; 008import gudusoft.gsqlparser.TCustomSqlStatement; 009import gudusoft.gsqlparser.nodes.TCreateTableOption; 010import gudusoft.gsqlparser.nodes.TDummy; 011import gudusoft.gsqlparser.nodes.TObjectName; 012import gudusoft.gsqlparser.nodes.TParseTreeVisitor; 013import gudusoft.gsqlparser.nodes.snowflake.TCreateStageSqlNode; 014 015import java.util.ArrayList; 016 017/** 018 * Snowflake create stage 019 */ 020public class TCreateStageStmt extends TCustomSqlStatement { 021 022 private String fileFormatName = null; 023 private String fileFormatType = null; 024 025 public void setFileFormatName(String fileFormatName) { 026 this.fileFormatName = fileFormatName; 027 } 028 029 public void setFileFormatType(String fileFormatType) { 030 this.fileFormatType = fileFormatType; 031 } 032 033 public String getFileFormatName() { 034 return fileFormatName; 035 } 036 037 public String getFileFormatType() { 038 return fileFormatType; 039 } 040 041 public void setExternalStageURL(String externalStageURL) { 042 this.externalStageURL = externalStageURL; 043 } 044 045 private String externalStageURL = null; 046 047 public String getExternalStageURL() { 048 return externalStageURL; 049 } 050 051 private TObjectName stageName; 052 053 public void setStageName(TObjectName stageName) { 054 this.stageName = stageName; 055 } 056 057 public TObjectName getStageName() { 058 return stageName; 059 } 060 061 public String getStageNameOnly() { 062 return stageName.getObjectString(); 063 } 064 065 private TObjectName nameSpace; 066 067 public TObjectName getNameSpace() { 068 return nameSpace; 069 } 070 071 /** 072 * Get the stage kind (TEMPORARY, TEMP, or unknown for permanent stages) 073 * @return The stage kind 074 */ 075 public ETableKind getStageKind() { 076 if (rootNode == null) return ETableKind.etkBase; 077 TCreateStageSqlNode node = (TCreateStageSqlNode)rootNode; 078 return node.getStageKind(); 079 } 080 081 /** 082 * Check if this is a temporary stage (TEMPORARY or TEMP keyword was used) 083 * @return true if the stage is temporary, false otherwise 084 */ 085 public boolean isTemporary() { 086 ETableKind kind = getStageKind(); 087 return kind == ETableKind.etkTemporary || kind == ETableKind.etkTemp; 088 } 089 090 public TCreateStageStmt(EDbVendor dbvendor) { 091 super(dbvendor); 092 sqlstatementtype = ESqlStatementType.sstCreateStage; 093 } 094 095 public int doParseStatement(TCustomSqlStatement psql) { 096 if (rootNode == null) return -1; 097 super.doParseStatement(psql); 098 TCreateStageSqlNode node = (TCreateStageSqlNode)rootNode; 099 stageName = node.getStageName(); 100 nameSpace = node.getNameSpace(); 101// if (node.st1 != null){ 102// externalStageURL = node.st1.toString(); 103// } 104 105 ArrayList<TCreateTableOption> tableOptions = node.getTableOptions(); 106 if (tableOptions != null){ 107 for(int i=0;i<tableOptions.size();i++){ 108 tableOptions.get(i).doParse(this, ESqlClause.unknown); 109 } 110 } 111 112 return 0; 113 } 114 115 public void accept(TParseTreeVisitor v){ 116 v.preVisit(this); 117 v.postVisit(this); 118 } 119 120 public void acceptChildren(TParseTreeVisitor v){ 121 v.preVisit(this); 122 v.postVisit(this); 123 } 124}