Skip to content

Commit a366d29

Browse files
committed
fix-template-processing
1 parent ca18233 commit a366d29

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

superset/jinja_context.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -696,6 +696,8 @@ def process_template(self, sql: str, **kwargs: Any) -> str:
696696
>>> process_template(sql)
697697
"SELECT '2017-01-01T00:00:00'"
698698
"""
699+
from jinja2 import UndefinedError
700+
699701
try:
700702
template = self.env.from_string(sql)
701703
except (
@@ -767,6 +769,8 @@ def process_template(self, sql: str, **kwargs: Any) -> str:
767769
raise SupersetTemplateException(
768770
"Infinite recursion detected in template"
769771
) from ex
772+
except UndefinedError:
773+
return sql
770774
except Exception as ex:
771775
if "undefined" in str(ex).lower():
772776
return sql

superset/sqllab/query_render.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,11 @@ def _validate(
7676
if is_feature_enabled("ENABLE_TEMPLATE_PROCESSING"):
7777
original_sql = execution_context.query.sql.strip().strip(";")
7878
if rendered_query == original_sql:
79-
return
79+
import re
80+
81+
function_pattern = r"\{\{\s*(ref|source|var|env_var)\s*\("
82+
if re.search(function_pattern, original_sql, re.IGNORECASE):
83+
return
8084

8185
syntax_tree = sql_template_processor.env.parse(rendered_query)
8286
undefined_parameters = find_undeclared_variables(syntax_tree)

0 commit comments

Comments
 (0)