open-telemetry / open-telemetry/opentelemetry-python-contrib
`opentelemetry-instrumentation-mysqlclient`: expose `capture_parameters`
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
mysqlclient (MySQLdb) 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, readcapture_parameters = kwargs.get("capture_parameters", False)
and pass it todbapi.wrap_connect(...). - In
instrument_connection, add acapture_parametersparameter and pass it
todbapi.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 anddb.statement.parametersunder the old semconv (via the base). - Default remains no parameter capture.
Tests
- Verify
capture_parametersis forwarded to the dbapi layer for both entry
points. - Verify
db.query.parameter.<key>appears under the new semconv when enabled.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Compare the psycopg2 instrumentor's capture_parameters handling, then inspect the mysqlclient instrumentor's _instrument and instrument_connection entry points. Confirm the option reaches the dbapi layer for both paths, verify the new db.query.parameter. attribute when enabled, and ensure the default remains disabled.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- databases
- Issue type
- Feature
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 76/100