File tree Expand file tree Collapse file tree 3 files changed +27
-3
lines changed
Expand file tree Collapse file tree 3 files changed +27
-3
lines changed Original file line number Diff line number Diff line change @@ -246,7 +246,9 @@ def send(
246246 )
247247
248248 def transform (
249- self , expression : exp .Expression
249+ self ,
250+ expression : exp .Expression ,
251+ render_jinja : bool = True ,
250252 ) -> exp .Expression | t .List [exp .Expression ] | None :
251253 changed = False
252254
@@ -284,7 +286,7 @@ def evaluate_macros(
284286 return exp .to_identifier (text , quoted = node .quoted or None )
285287 if node .is_string :
286288 text = node .this
287- if has_jinja (text ):
289+ if render_jinja and has_jinja (text ):
288290 changed = True
289291 node .set ("this" , self .jinja_env .from_string (node .this ).render ())
290292 return node
Original file line number Diff line number Diff line change @@ -230,6 +230,10 @@ def _resolve_table(table: str | exp.Table) -> str:
230230 f"Could not render or parse jinja at '{ self ._path } '.\n { ex } "
231231 ) from ex
232232
233+ render_jinja = False
234+ else :
235+ render_jinja = True
236+
233237 macro_evaluator .locals .update (render_kwargs )
234238
235239 if variables :
@@ -247,7 +251,9 @@ def _resolve_table(table: str | exp.Table) -> str:
247251
248252 for expression in expressions :
249253 try :
250- transformed_expressions = ensure_list (macro_evaluator .transform (expression ))
254+ transformed_expressions = ensure_list (
255+ macro_evaluator .transform (expression , render_jinja = render_jinja )
256+ )
251257 except Exception as ex :
252258 raise_config_error (
253259 f"Failed to resolve macros for\n \n { expression .sql (dialect = self ._dialect , pretty = True )} \n \n { ex } \n " ,
@@ -278,6 +284,7 @@ def _resolve_table(table: str | exp.Table) -> str:
278284 # MacroEvaluator can resolve columns_to_types calls and provide true schemas.
279285 if should_cache and (not self .schema .empty or not macro_evaluator .columns_to_types_called ):
280286 self ._cache = resolved_expressions
287+
281288 return resolved_expressions
282289
283290 def update_cache (self , expression : t .Optional [exp .Expression ]) -> None :
Original file line number Diff line number Diff line change @@ -11543,3 +11543,18 @@ def test_text_diff_optimize_query():
1154311543 diff = model1 .text_diff (model2 )
1154411544 assert diff , "Expected diff to show optimize_query change"
1154511545 assert "+ optimize_query" in diff .lower ()
11546+
11547+
11548+ def test_raw_jinja_raw_tag ():
11549+ expressions = d .parse (
11550+ """
11551+ MODEL (name test);
11552+
11553+ JINJA_QUERY_BEGIN;
11554+ SELECT {% raw %} '{{ foo }}' {% endraw %} AS col;
11555+ JINJA_END;
11556+ """
11557+ )
11558+
11559+ model = load_sql_based_model (expressions )
11560+ assert model .render_query ().sql () == "SELECT '{{ foo }}' AS \" col\" "
You can’t perform that action at this time.
0 commit comments