@@ -644,6 +644,16 @@ def _props_sql(self: Generator, expressions: t.List[exp.Expression]) -> str:
644
644
return "\n " .join (props )
645
645
646
646
647
+ def _on_virtual_update_sql (self : Generator , expressions : t .List [exp .Expression ]) -> str :
648
+ statements = "\n " .join (
649
+ self .sql (expression )
650
+ if isinstance (expression , JinjaStatement )
651
+ else f"{ self .sql (expression )} ;"
652
+ for expression in expressions
653
+ )
654
+ return f"{ ON_VIRTUAL_UPDATE_BEGIN } ;\n { statements } \n { ON_VIRTUAL_UPDATE_END } ;"
655
+
656
+
647
657
def _sqlmesh_ddl_sql (self : Generator , expression : Model | Audit | Metric , name : str ) -> str :
648
658
return "\n " .join ([f"{ name } (" , _props_sql (self , expression .expressions ), ")" ])
649
659
@@ -1004,6 +1014,7 @@ def extend_sqlglot() -> None:
1004
1014
JinjaQuery : lambda self , e : f"{ JINJA_QUERY_BEGIN } ;\n { e .name } \n { JINJA_END } ;" ,
1005
1015
JinjaStatement : lambda self ,
1006
1016
e : f"{ JINJA_STATEMENT_BEGIN } ;\n { e .name } \n { JINJA_END } ;" ,
1017
+ VirtualUpdateStatement : lambda self , e : _on_virtual_update_sql (self , e ),
1007
1018
MacroDef : lambda self , e : f"@DEF({ self .sql (e .this )} , { self .sql (e .expression )} )" ,
1008
1019
MacroFunc : _macro_func_sql ,
1009
1020
MacroStrReplace : lambda self , e : f"@{ self .sql (e .this )} " ,
0 commit comments