001package gudusoft.gsqlparser.stmt.vertica;
002
003
004import gudusoft.gsqlparser.EDbVendor;
005import gudusoft.gsqlparser.ESqlStatementType;
006import gudusoft.gsqlparser.TCustomSqlStatement;
007import gudusoft.gsqlparser.nodes.TParseTreeVisitor;
008import gudusoft.gsqlparser.nodes.TStatementSqlNode;
009import gudusoft.gsqlparser.stmt.*;
010
011public class TProfileStmt extends TCustomSqlStatement {
012
013    private TCustomSqlStatement statement;
014
015    public TCustomSqlStatement getStatement() {
016        return statement;
017    }
018
019    public TProfileStmt(EDbVendor dbvendor) {
020        super(dbvendor);
021        sqlstatementtype = ESqlStatementType.sstProfile;
022    }
023
024    public int doParseStatement(TCustomSqlStatement psql) {
025        if (rootNode == null) return -1;
026        super.doParseStatement(psql);
027        switch (rootNode.getNodeType()){
028            case TStatementSqlNode.select:
029                statement = new TSelectSqlStatement(dbvendor);
030                break;
031            case TStatementSqlNode.delete:
032                statement = new TDeleteSqlStatement(dbvendor);
033                break;
034            case TStatementSqlNode.insert:
035                statement = new TInsertSqlStatement(dbvendor);
036                break;
037            case TStatementSqlNode.update:
038                statement = new TUpdateSqlStatement(dbvendor);
039                break;
040            case TStatementSqlNode.createtable:
041                statement = new TCreateTableSqlStatement(dbvendor);
042                break;
043            case TStatementSqlNode.CreateIndexSqlNode:
044                statement = new TCreateIndexSqlStatement(dbvendor);
045                break;
046            default:
047                break;
048        }
049        statement.rootNode = rootNode;
050        statement.doParseStatement(this);
051
052        return 0;
053    }
054
055    public void accept(TParseTreeVisitor v){
056        v.preVisit(this);
057        v.postVisit(this);
058    }
059
060    public void acceptChildren(TParseTreeVisitor v){
061        v.preVisit(this);
062        statement.accept(v);
063        v.postVisit(this);
064    }
065
066    public void setStatement(TCustomSqlStatement statement) {
067        this.statement = statement;
068    }
069}