001package gudusoft.gsqlparser.stmt.snowflake; 002 003import gudusoft.gsqlparser.*; 004import gudusoft.gsqlparser.nodes.TDummy; 005import gudusoft.gsqlparser.nodes.TObjectName; 006import gudusoft.gsqlparser.nodes.TParseTreeVisitor; 007import gudusoft.gsqlparser.nodes.snowflake.TCreateStreamSqlNode; 008 009public class TCreateStreamStmt extends TCustomSqlStatement { 010 011 public enum ECreateOnObjectType {table, externalTable,view,stage}; 012 013 private ECreateOnObjectType createOnObjectType = ECreateOnObjectType.table; 014 015 public ECreateOnObjectType getCreateOnObjectType() { 016 return createOnObjectType; 017 } 018 019 private TObjectName streamName; 020 private TObjectName tableName; 021 022 public TObjectName getTableName() { 023 return tableName; 024 } 025 026 public void setStreamName(TObjectName streamName) { 027 this.streamName = streamName; 028 } 029 030 public TObjectName getStreamName() { 031 032 return streamName; 033 } 034 035 public TCreateStreamStmt(EDbVendor dbvendor) { 036 super(dbvendor); 037 sqlstatementtype = ESqlStatementType.sstCreateStream; 038 } 039 040 private int insert_only = TBaseType.BOOL_VALUE_NOT_SET; 041 private int append_only = TBaseType.BOOL_VALUE_NOT_SET; 042 043 public int getInsert_only() { 044 return insert_only; 045 } 046 047 public int getAppend_only() { 048 return append_only; 049 } 050 051 public int doParseStatement(TCustomSqlStatement psql) { 052 if (rootNode == null) return -1; 053 super.doParseStatement(psql); 054 TCreateStreamSqlNode node = (TCreateStreamSqlNode)rootNode; 055 createOnObjectType = node.getCreateOnObjectType(); 056 streamName = node.getStreamName(); 057 tableName = node.getTableName(); 058 this.append_only = node.getAppend_only(); 059 this.insert_only = node.getInsert_only(); 060 061// TSourceToken startToken = node.getStartToken(); 062// TSourceTokenList stList = startToken.container; 063// TSourceToken st = null; 064// boolean isReady = false; 065// for(int i=startToken.posinlist ;i<stList.size();i++){ 066// st = stList.get(i); 067// if (st.isnonsolidtoken()) continue; 068// if (st.tokencode == TBaseType.rrw_table){ 069// isReady = true; 070// continue; 071// } 072// if (isReady){ 073// //databaseName = new TNodeFactory().createObjectName(null,null,st); 074// tableName = TObjectName.createObjectName (this.dbvendor, EDbObjectType.table,st); 075// break; 076// } 077// } 078 079 return 0; 080 } 081 082 public void accept(TParseTreeVisitor v){ 083 v.preVisit(this); 084 v.postVisit(this); 085 } 086 087 public void acceptChildren(TParseTreeVisitor v){ 088 v.preVisit(this); 089 v.postVisit(this); 090 } 091}