001package gudusoft.gsqlparser.stmt.dameng;
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;
009
010/**
011 * Dameng REFRESH MATERIALIZED VIEW statement.
012 *
013 * Syntax (per https://eco.dameng.com/document/dm/zh-cn/pm/materialized-view.html):
014 * <pre>
015 *   REFRESH MATERIALIZED VIEW [&lt;schema&gt;.]&lt;mv&gt;
016 *     [ FAST | COMPLETE [&lt;full_refresh_mode&gt;] | FORCE [&lt;full_refresh_mode&gt;] ];
017 * </pre>
018 *
019 * Kept independent from the PostgreSQL/Oracle equivalents per the Dameng
020 * "always-independent" rule so future Dameng-specific behavior can be added
021 * without affecting other dialects.
022 */
023public class TDamengRefreshMaterializedViewStmt extends TCustomSqlStatement {
024
025    private TObjectName viewName;
026
027    public TDamengRefreshMaterializedViewStmt(EDbVendor dbvendor) {
028        super(dbvendor);
029        sqlstatementtype = ESqlStatementType.sstdamengrefreshmaterializedview;
030    }
031
032    public TObjectName getViewName() {
033        return viewName;
034    }
035
036    @Override
037    public int doParseStatement(TCustomSqlStatement psql) {
038        if (rootNode == null) return -1;
039        super.doParseStatement(psql);
040        TDummy sqlNode = (TDummy) rootNode;
041        viewName = (TObjectName) sqlNode.node1;
042        return 0;
043    }
044
045    @Override
046    public void accept(TParseTreeVisitor v) {
047        v.preVisit(this);
048        v.postVisit(this);
049    }
050
051    @Override
052    public void acceptChildren(TParseTreeVisitor v) {
053        v.preVisit(this);
054        v.postVisit(this);
055    }
056}