@@ -82,6 +82,7 @@ pub enum Statement<T: AstInfo> {
8282 AlterNetworkPolicy ( AlterNetworkPolicyStatement < T > ) ,
8383 AlterRole ( AlterRoleStatement < T > ) ,
8484 AlterTableAddColumn ( AlterTableAddColumnStatement < T > ) ,
85+ AlterMaterializedViewApplyReplacement ( AlterMaterializedViewApplyReplacementStatement ) ,
8586 Discard ( DiscardStatement ) ,
8687 DropObjects ( DropObjectsStatement ) ,
8788 DropOwned ( DropOwnedStatement < T > ) ,
@@ -160,6 +161,7 @@ impl<T: AstInfo> AstDisplay for Statement<T> {
160161 Statement :: AlterConnection ( stmt) => f. write_node ( stmt) ,
161162 Statement :: AlterRole ( stmt) => f. write_node ( stmt) ,
162163 Statement :: AlterTableAddColumn ( stmt) => f. write_node ( stmt) ,
164+ Statement :: AlterMaterializedViewApplyReplacement ( stmt) => f. write_node ( stmt) ,
163165 Statement :: Discard ( stmt) => f. write_node ( stmt) ,
164166 Statement :: DropObjects ( stmt) => f. write_node ( stmt) ,
165167 Statement :: DropOwned ( stmt) => f. write_node ( stmt) ,
@@ -241,6 +243,9 @@ pub fn statement_kind_label_value(kind: StatementKind) -> &'static str {
241243 StatementKind :: AlterOwner => "alter_owner" ,
242244 StatementKind :: AlterConnection => "alter_connection" ,
243245 StatementKind :: AlterTableAddColumn => "alter_table" ,
246+ StatementKind :: AlterMaterializedViewApplyReplacement => {
247+ "alter_materialized_view_apply_replacement"
248+ }
244249 StatementKind :: Discard => "discard" ,
245250 StatementKind :: DropObjects => "drop_objects" ,
246251 StatementKind :: DropOwned => "drop_owned" ,
@@ -1382,6 +1387,7 @@ pub struct CreateMaterializedViewStatement<T: AstInfo> {
13821387 pub if_exists : IfExistsBehavior ,
13831388 pub name : UnresolvedItemName ,
13841389 pub columns : Vec < Ident > ,
1390+ pub replacing : Option < T :: ItemName > ,
13851391 pub in_cluster : Option < T :: ClusterName > ,
13861392 pub query : Query < T > ,
13871393 pub as_of : Option < u64 > ,
@@ -1410,6 +1416,11 @@ impl<T: AstInfo> AstDisplay for CreateMaterializedViewStatement<T> {
14101416 f. write_str ( ")" ) ;
14111417 }
14121418
1419+ if let Some ( target) = & self . replacing {
1420+ f. write_str ( " REPLACING " ) ;
1421+ f. write_node ( target) ;
1422+ }
1423+
14131424 if let Some ( cluster) = & self . in_cluster {
14141425 f. write_str ( " IN CLUSTER " ) ;
14151426 f. write_node ( cluster) ;
@@ -3199,6 +3210,32 @@ impl<T: AstInfo> AstDisplay for AlterTableAddColumnStatement<T> {
31993210
32003211impl_display_t ! ( AlterTableAddColumnStatement ) ;
32013212
3213+ /// `ALTER MATERIALIZED VIEW ... APPLY REPLACEMENT ...`
3214+ #[ derive( Debug , Clone , PartialEq , Eq , Hash ) ]
3215+ pub struct AlterMaterializedViewApplyReplacementStatement {
3216+ pub if_exists : bool ,
3217+ pub name : UnresolvedItemName ,
3218+ pub replacement_name : UnresolvedItemName ,
3219+ }
3220+
3221+ impl AstDisplay for AlterMaterializedViewApplyReplacementStatement {
3222+ fn fmt < W > ( & self , f : & mut AstFormatter < W > )
3223+ where
3224+ W : fmt:: Write ,
3225+ {
3226+ f. write_str ( "ALTER MATERIALIZED VIEW " ) ;
3227+ if self . if_exists {
3228+ f. write_str ( "IF EXISTS " ) ;
3229+ }
3230+ f. write_node ( & self . name ) ;
3231+
3232+ f. write_str ( " APPLY REPLACEMENT " ) ;
3233+ f. write_node ( & self . replacement_name ) ;
3234+ }
3235+ }
3236+
3237+ impl_display ! ( AlterMaterializedViewApplyReplacementStatement ) ;
3238+
32023239#[ derive( Debug , Clone , PartialEq , Eq , Hash ) ]
32033240pub struct DiscardStatement {
32043241 pub target : DiscardTarget ,
0 commit comments