open-telemetry / open-telemetry/opentelemetry-python-contrib

`opentelemetry-instrumentation-pymysql`: expose `capture_parameters`

Open
#4,791 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
1.1k
Forks
1.1k
Avg merge
4d 15h
Merged PRs (30d)
16

Description

Part of #4787 (global db.query.parameter.<key> tracking issue).

Background

pymysql builds on the dbapi base, so once the dbapi sub-issue lands it
already emits db.query.parameter.<key> correctly — but only when
capture_parameters=True. The instrumentor never exposes that option, so users
have no way to enable parameter capture.

psycopg2 already exposes capture_parameters and is the reference
implementation.

What to do

Thread a capture_parameters option through the instrumentor, mirroring
psycopg2:

  • In _instrument, read capture_parameters = kwargs.get("capture_parameters", False)
    and pass it to dbapi.wrap_connect(...).
  • In instrument_connection, add a capture_parameters parameter and pass it
    to dbapi.instrument_connection(...).
  • Document the option in the module docstring.

No parameter-formatting logic lives here — it all comes from the dbapi base.

Acceptance criteria

  • instrument(capture_parameters=True) and
    instrument_connection(conn, capture_parameters=True) both enable capture.
  • With capture enabled, spans carry db.query.parameter.<key> under the new
    semconv and db.statement.parameters under the old semconv (via the base).
  • Default remains no parameter capture.

Tests

  • Verify capture_parameters is forwarded to the dbapi layer for both entry
    points.
  • Verify db.query.parameter.<key> appears under the new semconv when enabled.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the pymysql instrumentor's _instrument and instrument_connection entry points, then compare psycopg2's capture_parameters handling and the dbapi wrap_connect and instrument_connection calls. Update the module docstring and add tests for forwarding the option and emitting the new semantic-convention attribute when enabled, while preserving the default behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
observability
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
78/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.