Skip to content

Commit cc7332d

Browse files
committed
Merge branch 'fix/1477' of https://github.com/aryabharat/opentelemetry-python-contrib into fix/1477
2 parents ba3b51a + e90eefe commit cc7332d

File tree

5 files changed

+10
-17
lines changed
  • instrumentation
    • opentelemetry-instrumentation-dbapi/src/opentelemetry/instrumentation/dbapi
    • opentelemetry-instrumentation-django/src/opentelemetry/instrumentation/django/middleware
    • opentelemetry-instrumentation-sqlalchemy/src/opentelemetry/instrumentation/sqlalchemy
  • opentelemetry-instrumentation

5 files changed

+10
-17
lines changed

instrumentation/opentelemetry-instrumentation-dbapi/src/opentelemetry/instrumentation/dbapi/__init__.py

+3
Original file line numberDiff line numberDiff line change
@@ -488,6 +488,9 @@ def _update_args_with_added_sql_comment(self, args, cursor) -> tuple:
488488
args_list = list(args)
489489
self._capture_mysql_version(cursor)
490490
commenter_data = self._get_commenter_data()
491+
# Convert sql statement to string, handling psycopg2.sql.Composable object
492+
if hasattr(args_list[0], "as_string"):
493+
args_list[0] = args_list[0].as_string(cursor.connection)
491494
statement = _add_sql_comment(args_list[0], **commenter_data)
492495
args_list[0] = statement
493496
args = tuple(args_list)

instrumentation/opentelemetry-instrumentation-django/src/opentelemetry/instrumentation/django/middleware/sqlcommenter_middleware.py

+4
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,10 @@ def __call__(self, execute: Type[T], sql, params, many, context) -> T:
8080
db_driver = context["connection"].settings_dict.get("ENGINE", "")
8181
resolver_match = self.request.resolver_match
8282

83+
# Convert sql statement to string, handling psycopg2.sql.Composable object
84+
if hasattr(sql, "as_string"):
85+
sql = sql.as_string(context["connection"])
86+
8387
sql = _add_sql_comment(
8488
sql,
8589
# Information about the controller.

instrumentation/opentelemetry-instrumentation-sqlalchemy/src/opentelemetry/instrumentation/sqlalchemy/engine.py

+3
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,9 @@ def _before_cur_exec(
274274
commenter_data = self._get_commenter_data(conn)
275275

276276
if self.enable_attribute_commenter:
277+
# Convert sql statement to string, handling psycopg2.sql.Composable object
278+
if hasattr(statement, "as_string"):
279+
statement = statement.as_string(conn)
277280
# sqlcomment is added to executed query and db.statement span attribute
278281
statement = _add_sql_comment(
279282
statement, **commenter_data

opentelemetry-instrumentation/src/opentelemetry/instrumentation/sqlcommenter_utils.py

-2
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@ def _add_sql_comment(sql, **meta) -> str:
2222
"""
2323
meta.update(**_add_framework_tags())
2424
comment = _generate_sql_comment(**meta)
25-
# converting to str to handle any type errors
26-
sql = str(sql)
2725
sql = sql.rstrip()
2826
if sql[-1] == ";":
2927
sql = sql[:-1] + comment + ";"

opentelemetry-instrumentation/tests/test_utils.py

-15
Original file line numberDiff line numberDiff line change
@@ -208,21 +208,6 @@ def test_add_sql_comments_without_comments(self):
208208

209209
self.assertEqual(commented_sql_without_semicolon, "Select 1")
210210

211-
def test_psycopg2_sql_composable(self):
212-
"""Test handling of psycopg2.sql.Composable input"""
213-
# Mock psycopg2.sql.Composable object
214-
class MockComposable:
215-
def __str__(self):
216-
return "SELECT * FROM table_name"
217-
218-
sql_query = MockComposable()
219-
comments = {"trace_id": "abc123"}
220-
221-
result = _add_sql_comment(sql_query, **comments)
222-
expected = "SELECT * FROM table_name /*trace_id='abc123'*/"
223-
224-
self.assertEqual(result, expected)
225-
226211
def test_is_instrumentation_enabled_by_default(self):
227212
self.assertTrue(is_instrumentation_enabled())
228213
self.assertTrue(is_http_instrumentation_enabled())

0 commit comments

Comments
 (0)