Skip to content

Commit 0d1035b

Browse files
committed
resolve conflict
1 parent b232b9a commit 0d1035b

File tree

3 files changed

+44
-0
lines changed

3 files changed

+44
-0
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1616
### Added
1717
- `opentelemetry-instrumentation`: botocore: Add support for AWS Secrets Manager semantic convention attribute
1818
([#3765](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/3765))
19+
- `opentelemetry-instrumentation-dbapi`: Add support for `commenter_options` in `trace_integration` function to control SQLCommenter behavior
20+
([#3743](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/3743))
1921

2022
## Version 1.37.0/0.58b0 (2025-09-11)
2123

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ def trace_integration(
7979
enable_commenter: bool = False,
8080
db_api_integration_factory: type[DatabaseApiIntegration] | None = None,
8181
enable_attribute_commenter: bool = False,
82+
commenter_options: dict[str, Any] | None = None,
8283
):
8384
"""Integrate with DB API library.
8485
https://www.python.org/dev/peps/pep-0249/
@@ -97,6 +98,7 @@ def trace_integration(
9798
db_api_integration_factory: The `DatabaseApiIntegration` to use. If none is passed the
9899
default one is used.
99100
enable_attribute_commenter: Flag to enable/disable sqlcomment inclusion in `db.statement` span attribute. Only available if enable_commenter=True.
101+
commenter_options: Configurations for tags to be appended at the sql query.
100102
"""
101103
wrap_connect(
102104
__name__,
@@ -110,6 +112,7 @@ def trace_integration(
110112
enable_commenter=enable_commenter,
111113
db_api_integration_factory=db_api_integration_factory,
112114
enable_attribute_commenter=enable_attribute_commenter,
115+
commenter_options=commenter_options,
113116
)
114117

115118

instrumentation/opentelemetry-instrumentation-dbapi/tests/test_dbapi_integration.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,45 @@ def test_suppress_instrumentation(self):
259259
spans_list = self.memory_exporter.get_finished_spans()
260260
self.assertEqual(len(spans_list), 0)
261261

262+
def test_commenter_options_propagation(self):
263+
db_integration = dbapi.DatabaseApiIntegration(
264+
"instrumenting_module_test_name",
265+
"testcomponent",
266+
commenter_options={"opentelemetry_values": False},
267+
)
268+
mock_connection = db_integration.wrapped_connection(
269+
mock_connect, {}, {}
270+
)
271+
cursor = mock_connection.cursor()
272+
with self.assertRaises(Exception):
273+
cursor.execute("SELECT 1", throw_exception=True)
274+
spans_list = self.memory_exporter.get_finished_spans()
275+
self.assertEqual(len(spans_list), 1)
276+
span = spans_list[0]
277+
self.assertEqual(span.attributes.get("db.system"), "testcomponent")
278+
self.assertIn("opentelemetry_values", db_integration.commenter_options)
279+
self.assertFalse(
280+
db_integration.commenter_options["opentelemetry_values"]
281+
)
282+
283+
@mock.patch("opentelemetry.instrumentation.dbapi.wrap_connect")
284+
def test_trace_integration_passes_commenter_options(
285+
self, mock_wrap_connect
286+
):
287+
fake_connect_module = mock.Mock()
288+
fake_options = {"opentelemetry_values": False, "foo": "bar"}
289+
dbapi.trace_integration(
290+
connect_module=fake_connect_module,
291+
connect_method_name="connect",
292+
database_system="testdb",
293+
commenter_options=fake_options,
294+
)
295+
mock_wrap_connect.assert_called_once()
296+
_, _, kwargs = mock_wrap_connect.mock_calls[0]
297+
298+
self.assertIn("commenter_options", kwargs)
299+
self.assertEqual(kwargs["commenter_options"], fake_options)
300+
262301
def test_executemany(self):
263302
db_integration = dbapi.DatabaseApiIntegration(
264303
"instrumenting_module_test_name", "testcomponent"

0 commit comments

Comments
 (0)