@@ -644,6 +644,16 @@ def _props_sql(self: Generator, expressions: t.List[exp.Expression]) -> str:
644644 return "\n " .join (props )
645645
646646
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+
647657def _sqlmesh_ddl_sql (self : Generator , expression : Model | Audit | Metric , name : str ) -> str :
648658 return "\n " .join ([f"{ name } (" , _props_sql (self , expression .expressions ), ")" ])
649659
@@ -1004,6 +1014,7 @@ def extend_sqlglot() -> None:
10041014 JinjaQuery : lambda self , e : f"{ JINJA_QUERY_BEGIN } ;\n { e .name } \n { JINJA_END } ;" ,
10051015 JinjaStatement : lambda self ,
10061016 e : f"{ JINJA_STATEMENT_BEGIN } ;\n { e .name } \n { JINJA_END } ;" ,
1017+ VirtualUpdateStatement : lambda self , e : _on_virtual_update_sql (self , e ),
10071018 MacroDef : lambda self , e : f"@DEF({ self .sql (e .this )} , { self .sql (e .expression )} )" ,
10081019 MacroFunc : _macro_func_sql ,
10091020 MacroStrReplace : lambda self , e : f"@{ self .sql (e .this )} " ,
0 commit comments