fix(cache): ensure SQL is sanitized before cache key generation (#35419)

This commit is contained in:
Beto Dealmeida
2025-10-02 13:25:54 -04:00
committed by GitHub
parent 6ad8d29fcd
commit 62dc5c0306
6 changed files with 158 additions and 9 deletions

View File

@@ -1482,6 +1482,15 @@ def sanitize_clause(clause: str, engine: str) -> str:
Make sure the SQL clause is valid.
"""
try:
return SQLStatement(clause, engine).format()
statement = SQLStatement(clause, engine)
dialect = SQLGLOT_DIALECTS.get(engine)
from sqlglot.dialects.dialect import Dialect
return Dialect.get_or_raise(dialect).generate(
statement._parsed, # pylint: disable=protected-access
copy=True,
comments=False,
pretty=False,
)
except SupersetParseError as ex:
raise QueryClauseValidationException(f"Invalid SQL clause: {clause}") from ex