Skip to content

Commit e0f2c43

Browse files
committed
Fix: Don't log SQL in the engine adapter if the statement contains values
1 parent 31a9b5e commit e0f2c43

2 files changed

Lines changed: 24 additions & 2 deletions

File tree

sqlmesh/core/engine_adapter/base.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2126,10 +2126,13 @@ def execute(
21262126
else e
21272127
),
21282128
)
2129-
self._log_sql(sql)
2129+
contains_values = isinstance(e, exp.Insert) and e.find(exp.Values) is not None
2130+
self._log_sql(sql, contains_values=contains_values)
21302131
self._execute(sql, **kwargs)
21312132

2132-
def _log_sql(self, sql: str) -> None:
2133+
def _log_sql(self, sql: str, contains_values: bool = False) -> None:
2134+
if contains_values:
2135+
sql = "<Redacted because SQL contains values>"
21332136
logger.log(self._execute_log_level, "Executing SQL: %s", sql)
21342137

21352138
def _execute(self, sql: str, **kwargs: t.Any) -> None:

tests/core/engine_adapter/test_base.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3071,3 +3071,22 @@ def test_insert_overwrite_by_partition_query_insert_overwrite_strategy(
30713071
assert sql_calls == [
30723072
'INSERT OVERWRITE TABLE "test_schema"."test_table" ("a", "ds", "b") SELECT "a", "ds", "b" FROM "tbl"'
30733073
]
3074+
3075+
3076+
def test_log_sql(make_mocked_engine_adapter: t.Callable, mocker: MockerFixture):
3077+
adapter = make_mocked_engine_adapter(EngineAdapter)
3078+
3079+
mock_logger = mocker.patch("sqlmesh.core.engine_adapter.base.logger")
3080+
3081+
df = pd.DataFrame({"id": [1, 2, 3], "value": ["test1", "test2", "test3"]})
3082+
3083+
adapter.execute(parse_one("SELECT 1"))
3084+
adapter.execute(parse_one("INSERT INTO test SELECT * FROM source"))
3085+
adapter.execute(parse_one("INSERT INTO test (id, value) VALUES (1, 'test')"))
3086+
adapter.insert_append("test", df)
3087+
3088+
assert mock_logger.log.call_count == 4
3089+
assert mock_logger.log.call_args_list[0][0][2] == "SELECT 1"
3090+
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>"

0 commit comments

Comments
 (0)