001package gudusoft.gsqlparser.stmt;
002
003
004import gudusoft.gsqlparser.EAlterViewOption;
005import gudusoft.gsqlparser.EDbVendor;
006import gudusoft.gsqlparser.ESqlStatementType;
007import gudusoft.gsqlparser.TCustomSqlStatement;
008import gudusoft.gsqlparser.nodes.TAlterViewSqlNode;
009import gudusoft.gsqlparser.nodes.TDummy;
010import gudusoft.gsqlparser.nodes.TObjectName;
011import gudusoft.gsqlparser.nodes.TParseTreeVisitor;
012
013/**
014 * SQL alter materialized view statement
015 *<br> {@link #getMaterializedViewName} returns the materialized view name
016 *
017 * @custom.relatedDB Oracle, Snowflake
018 */
019public class TAlterMaterializedViewStmt extends TCustomSqlStatement {
020
021    private TObjectName materializedViewName;
022
023    public TAlterMaterializedViewStmt(EDbVendor dbvendor) {
024        super(dbvendor);
025        sqlstatementtype = ESqlStatementType.sstAlterMaterializedView;
026    }
027
028
029    /**
030     * Materialized view name
031     *
032     * @return materialized view name
033     */
034    public TObjectName getMaterializedViewName() {
035        return materializedViewName;
036    }
037
038    private EAlterViewOption alterViewOption;
039
040    public EAlterViewOption getAlterViewOption() {
041        return alterViewOption;
042    }
043
044    private String comment;
045
046    public String getComment() {
047        return comment;
048    }
049
050    public int doParseStatement(TCustomSqlStatement psql) {
051        if (rootNode == null) return -1;
052        super.doParseStatement(psql);
053        if (rootNode instanceof TDummy){ // 兼容尚没有用 TAlterViewSqlNode 的代码
054            TDummy node = (TDummy)(rootNode);
055            materializedViewName = (TObjectName)node.node1;
056            return 0;
057        }
058
059        TAlterViewSqlNode node = (TAlterViewSqlNode)rootNode;
060        alterViewOption  = node.getAlterViewOption();
061        materializedViewName = node.getViewName();
062        this.comment = node.getComment();
063        this.newViewName = node.getNewViewName();
064
065        return 0;
066    }
067
068    private TObjectName newViewName;
069
070    public TObjectName getNewViewName() {
071        return newViewName;
072    }
073
074    public void accept(TParseTreeVisitor v){
075        v.preVisit(this);
076        v.postVisit(this);
077    }
078
079    public void acceptChildren(TParseTreeVisitor v){
080        v.preVisit(this);
081        v.postVisit(this);
082    }
083}