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}