Skip to content

Commit 79548fe

Browse files
committed
Address comments
1 parent e0f2c43 commit 79548fe

2 files changed

Lines changed: 36 additions & 9 deletions

File tree

sqlmesh/core/engine_adapter/base.py

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2126,14 +2126,30 @@ def execute(
21262126
else e
21272127
),
21282128
)
2129-
contains_values = isinstance(e, exp.Insert) and e.find(exp.Values) is not None
2130-
self._log_sql(sql, contains_values=contains_values)
2129+
self._log_sql(
2130+
sql,
2131+
expression=e if isinstance(e, exp.Expression) else None,
2132+
quote_identifiers=quote_identifiers,
2133+
)
21312134
self._execute(sql, **kwargs)
21322135

2133-
def _log_sql(self, sql: str, contains_values: bool = False) -> None:
2134-
if contains_values:
2135-
sql = "<Redacted because SQL contains values>"
2136-
logger.log(self._execute_log_level, "Executing SQL: %s", sql)
2136+
def _log_sql(
2137+
self,
2138+
sql: str,
2139+
expression: t.Optional[exp.Expression] = None,
2140+
quote_identifiers: bool = True,
2141+
) -> None:
2142+
if not logger.isEnabledFor(self._execute_log_level):
2143+
return
2144+
2145+
sql_to_log = sql
2146+
if expression is not None and not isinstance(expression, exp.Query):
2147+
values = expression.find(exp.Values)
2148+
if values:
2149+
values.set("expressions", [exp.to_identifier("<REDACTED VALUES>")])
2150+
sql_to_log = self._to_sql(expression, quote=quote_identifiers)
2151+
2152+
logger.log(self._execute_log_level, "Executing SQL: %s", sql_to_log)
21372153

21382154
def _execute(self, sql: str, **kwargs: t.Any) -> None:
21392155
self.cursor.execute(sql, **kwargs)

tests/core/engine_adapter/test_base.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3084,9 +3084,20 @@ def test_log_sql(make_mocked_engine_adapter: t.Callable, mocker: MockerFixture):
30843084
adapter.execute(parse_one("INSERT INTO test SELECT * FROM source"))
30853085
adapter.execute(parse_one("INSERT INTO test (id, value) VALUES (1, 'test')"))
30863086
adapter.insert_append("test", df)
3087+
adapter.replace_query("test", df)
30873088

3088-
assert mock_logger.log.call_count == 4
3089+
assert mock_logger.log.call_count == 5
30893090
assert mock_logger.log.call_args_list[0][0][2] == "SELECT 1"
30903091
assert mock_logger.log.call_args_list[1][0][2] == 'INSERT INTO "test" SELECT * FROM "source"'
3091-
assert mock_logger.log.call_args_list[2][0][2] == "<Redacted because SQL contains values>"
3092-
assert mock_logger.log.call_args_list[3][0][2] == "<Redacted because SQL contains values>"
3092+
assert (
3093+
mock_logger.log.call_args_list[2][0][2]
3094+
== 'INSERT INTO "test" ("id", "value") VALUES "<REDACTED VALUES>"'
3095+
)
3096+
assert (
3097+
mock_logger.log.call_args_list[3][0][2]
3098+
== 'INSERT INTO "test" ("id", "value") SELECT CAST("id" AS BIGINT) AS "id", CAST("value" AS TEXT) AS "value" FROM (VALUES "<REDACTED VALUES>") AS "t"("id", "value")'
3099+
)
3100+
assert (
3101+
mock_logger.log.call_args_list[4][0][2]
3102+
== 'CREATE OR REPLACE TABLE "test" AS SELECT CAST("id" AS BIGINT) AS "id", CAST("value" AS TEXT) AS "value" FROM (SELECT CAST("id" AS BIGINT) AS "id", CAST("value" AS TEXT) AS "value" FROM (VALUES "<REDACTED VALUES>") AS "t"("id", "value")) AS "_subquery"'
3103+
)

0 commit comments

Comments
 (0)