001package gudusoft.gsqlparser.stmt.redshift;
002
003import gudusoft.gsqlparser.EDbVendor;
004import gudusoft.gsqlparser.ESqlStatementType;
005import gudusoft.gsqlparser.TCustomSqlStatement;
006import gudusoft.gsqlparser.nodes.*;
007import gudusoft.gsqlparser.stmt.*;
008
009
010public class TRedshiftPrepare extends TCustomSqlStatement {
011
012    private TTypeNameList datatypeList;
013    private TObjectName planName;
014    private  TCustomSqlStatement statement;
015
016    public TRedshiftPrepare(EDbVendor dbvendor) {
017        super(dbvendor);
018        sqlstatementtype = ESqlStatementType.sstredshiftPrepare;
019    }
020
021    public int doParseStatement(TCustomSqlStatement psql) {
022        if (rootNode == null) return -1;
023        super.doParseStatement(psql);
024        TDummy dummy = (TDummy)rootNode;
025
026        planName = (TObjectName)dummy.node1;
027        if (dummy.node3 != null){
028            datatypeList = (TTypeNameList)dummy.node3;
029        }
030        switch (dummy.node2.getNodeType()){
031            case TStatementSqlNode.select:
032                statement = new TSelectSqlStatement(dbvendor);
033                break;
034            case TStatementSqlNode.delete:
035                statement = new TDeleteSqlStatement(dbvendor);
036                break;
037            case TStatementSqlNode.insert:
038                statement = new TInsertSqlStatement(dbvendor);
039                break;
040            case TStatementSqlNode.update:
041                statement = new TUpdateSqlStatement(dbvendor);
042                break;
043            default:
044                break;
045        }
046        statement.rootNode = dummy.node2;
047        statement.doParseStatement(this);
048
049
050        return 0;
051    }
052
053    public TTypeNameList getDatatypeList() {
054        return datatypeList;
055    }
056
057    public TObjectName getPlanName() {
058        return planName;
059    }
060
061    public TCustomSqlStatement getStatement() {
062        return statement;
063    }
064
065    public void accept(TParseTreeVisitor v){
066        v.preVisit(this);
067
068        v.postVisit(this);
069    }
070    public void acceptChildren(TParseTreeVisitor v){
071        v.preVisit(this);
072        statement.accept(v);
073        v.postVisit(this);
074    }
075
076    public void setDatatypeList(TTypeNameList datatypeList) {
077        this.datatypeList = datatypeList;
078    }
079
080    public void setPlanName(TObjectName planName) {
081        this.planName = planName;
082    }
083
084    public void setStatement(TCustomSqlStatement statement) {
085        this.statement = statement;
086    }
087}