001package gudusoft.gsqlparser.stmt.redshift;
002
003import gudusoft.gsqlparser.EDbVendor;
004import gudusoft.gsqlparser.ESqlStatementType;
005import gudusoft.gsqlparser.TCustomSqlStatement;
006import gudusoft.gsqlparser.nodes.TDummy;
007import gudusoft.gsqlparser.nodes.TObjectName;
008import gudusoft.gsqlparser.nodes.TParseTreeVisitor;
009import gudusoft.gsqlparser.nodes.TSelectSqlNode;
010import gudusoft.gsqlparser.stmt.TSelectSqlStatement;
011
012
013public class TRedshiftDeclare extends TCustomSqlStatement {
014
015    private TObjectName cursorName;
016    private TSelectSqlStatement subquery = null;
017
018    public TRedshiftDeclare(EDbVendor dbvendor) {
019        super(dbvendor);
020        sqlstatementtype = ESqlStatementType.sstredshiftDeclare;
021    }
022
023    public TObjectName getCursorName() {
024        return cursorName;
025    }
026
027    public TSelectSqlStatement getSubquery() {
028        return subquery;
029    }
030
031    public int doParseStatement(TCustomSqlStatement psql) {
032        if (rootNode == null) return -1;
033        super.doParseStatement(psql);
034        TDummy dummy = (TDummy)rootNode;
035        cursorName = (TObjectName)dummy.node1;
036
037        subquery = new TSelectSqlStatement(this.dbvendor);
038        subquery.rootNode = dummy.node2;
039        subquery.doParseStatement(this);
040
041        return 0;
042    }
043
044    public void accept(TParseTreeVisitor v){
045        v.preVisit(this);
046
047        v.postVisit(this);
048    }
049    public void acceptChildren(TParseTreeVisitor v){
050        v.preVisit(this);
051        subquery.accept(v);
052        v.postVisit(this);
053    }
054
055    public void setCursorName(TObjectName cursorName) {
056        this.cursorName = cursorName;
057    }
058
059    public void setSubquery(TSelectSqlStatement subquery) {
060        this.subquery = subquery;
061    }
062}