diff --git a/datadog_checks_base/datadog_checks/base/utils/db/sql.py b/datadog_checks_base/datadog_checks/base/utils/db/sql.py index 089b814920cb3..165f3063d0a8e 100644 --- a/datadog_checks_base/datadog_checks/base/utils/db/sql.py +++ b/datadog_checks_base/datadog_checks/base/utils/db/sql.py @@ -6,6 +6,7 @@ import mmh3 +from datadog_checks.base import ensure_bytes from datadog_checks.base.utils.serialization import json, sort_keys_kwargs # Unicode character "Arabic Decimal Separator" (U+066B) is a character which looks like an ascii @@ -22,7 +23,7 @@ def compute_sql_signature(normalized_query): return None # Note: please be cautious when changing this function as some features rely on this # hash matching the APM resource hash generated on our backend. - return format(mmh3.hash64(normalized_query, signed=False)[0], 'x') + return format(mmh3.hash64(ensure_bytes(normalized_query), signed=False)[0], 'x') def normalize_query_tag(query): diff --git a/datadog_checks_base/tests/base/utils/db/test_db_sql.py b/datadog_checks_base/tests/base/utils/db/test_db_sql.py index 566818ddd3199..d103a3f935e52 100644 --- a/datadog_checks_base/tests/base/utils/db/test_db_sql.py +++ b/datadog_checks_base/tests/base/utils/db/test_db_sql.py @@ -16,6 +16,7 @@ def test_compute_sql_signature(self): when changes are made to the hashing algorithm. Changes to the hash can have product impact since the backend expects consistency with the APM resource hash. """ + assert '6db2e4f3905c3b5b' == compute_sql_signature('select * from dÒgs') assert '11b755a835280e8e' == compute_sql_signature('select * from dogs') assert 'd2a193f97126ad67' == compute_sql_signature('update dogs set name = ? where id = ?')