Skip to content

Commit 9021148

Browse files
authored
Handle empty statement in psycopg instrumentation (open-telemetry#2644)
1 parent df3415b commit 9021148

File tree

3 files changed

+9
-2
lines changed

3 files changed

+9
-2
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
4040
([#2590](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2590))
4141
- Reference symbols from generated semantic conventions
4242
([#2611](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2611))
43+
- `opentelemetry-instrumentation-psycopg` Bugfix: Handle empty statement.
44+
([#2644](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2644))
4345
- `opentelemetry-instrumentation-confluent-kafka` Confluent Kafka: Ensure consume span is ended when consumer is closed
4446
([#2640](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2640))
4547

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,8 @@ def get_operation_name(self, cursor, args):
269269
if isinstance(statement, Composed):
270270
statement = statement.as_string(cursor)
271271

272-
if isinstance(statement, str):
272+
# `statement` can be empty string. See #2643
273+
if statement and isinstance(statement, str):
273274
# Strip leading comments so we get the operation name.
274275
return self._leading_comment_remover.sub("", statement).split()[0]
275276

instrumentation/opentelemetry-instrumentation-psycopg/tests/test_psycopg_integration.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,14 +245,18 @@ def test_span_name(self):
245245
cursor.execute("/* leading comment */ query")
246246
cursor.execute("/* leading comment */ query /* trailing comment */")
247247
cursor.execute("query /* trailing comment */")
248+
cursor.execute("")
249+
cursor.execute("--")
248250
spans_list = self.memory_exporter.get_finished_spans()
249-
self.assertEqual(len(spans_list), 6)
251+
self.assertEqual(len(spans_list), 8)
250252
self.assertEqual(spans_list[0].name, "Test")
251253
self.assertEqual(spans_list[1].name, "multi")
252254
self.assertEqual(spans_list[2].name, "tab")
253255
self.assertEqual(spans_list[3].name, "query")
254256
self.assertEqual(spans_list[4].name, "query")
255257
self.assertEqual(spans_list[5].name, "query")
258+
self.assertEqual(spans_list[6].name, "postgresql")
259+
self.assertEqual(spans_list[7].name, "--")
256260

257261
# pylint: disable=unused-argument
258262
def test_not_recording(self):

0 commit comments

Comments
 (0)