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}