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 [<schema>.]<mv> 016 * [ FAST | COMPLETE [<full_refresh_mode>] | FORCE [<full_refresh_mode>] ]; 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}