From 1af3a8f3c7bbbc291055c25ff0462477513b498d Mon Sep 17 00:00:00 2001 From: macbre Date: Sun, 4 May 2025 16:19:23 +0100 Subject: [PATCH] query_type: shorten the SQL query when logging the exception Resolves #543 --- sql_metadata/parser.py | 6 +++++- test/test_query_type.py | 15 ++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/sql_metadata/parser.py b/sql_metadata/parser.py index 5c61dca8..8e61fab9 100644 --- a/sql_metadata/parser.py +++ b/sql_metadata/parser.py @@ -122,7 +122,11 @@ def query_type(self) -> str: switch = tokens[index].normalized self._query_type = SUPPORTED_QUERY_TYPES.get(switch, "UNSUPPORTED") if self._query_type == "UNSUPPORTED": - self._logger.error("Not supported query type: %s", self._raw_query) + # do not log the full query + # https://github.com/macbre/sql-metadata/issues/543 + shorten_query = " ".join(self._raw_query.split(" ")[:3]) + + self._logger.error("Not supported query type: %s", shorten_query) raise ValueError("Not supported query type!") return self._query_type diff --git a/test/test_query_type.py b/test/test_query_type.py index 8e1a92e3..b9e3486f 100644 --- a/test/test_query_type.py +++ b/test/test_query_type.py @@ -48,10 +48,10 @@ def test_drop_table_query(): assert "DROP TABLE" == Parser(query.format(comment)).query_type -def test_unsupported_query(): +def test_unsupported_query(caplog): queries = [ - "FOO BAR", - "DO SOMETHING", + "FOO BAR LONG QUERY WITH MANY TOKENS", + "DO SOMETHING LONG QUERY", ] for query in queries: @@ -60,6 +60,15 @@ def test_unsupported_query(): assert "Not supported query type!" in str(ex.value) + # assert the SQL query is not logged + # https://docs.pytest.org/en/stable/how-to/logging.html#caplog-fixture + assert ( + f"Not supported query type: {query}" not in caplog.text + ), "The SQL query should not be logged" + assert ( + f"Not supported query type: {query[:8]}" in caplog.text + ), "The SQL query should be trimmed when logged" + def test_empty_query(): queries = ["", "/* empty query */"]