Repository navigation
CHORE: Add a multi-chunk LOB scenario to PR performance reports - #813
Conversation
Exercise VARCHAR(MAX), NVARCHAR(MAX), and VARBINARY(MAX) at 64 and 256 KiB through fetchone, fetchmany(1), and fetchall. Validate exact payloads outside the timed fetch window and expose available diagnostic-call counts without treating missing instrumentation as zero. Preserve existing thresholds, advisory behavior, and platform selection. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Keep one 256 KiB VARCHAR(MAX) fetchall workload, bringing the fixed registry to 21 tasks. Remove the unused type, size and API matrix while retaining exact payload checks and diagnostic-call visibility. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Two moderate issues remain unresolved in profiler cleanup and diagnostic instrumentation/reporting.
Get a fresh assessment by requesting another Copilot review.
Review effort: Lite
Findings: 1
Open (1)
What changed in this PR
Adds a 256 KiB VARCHAR(MAX) fetchall() profiler scenario, updating reporting, tests, and documentation for 21 scenarios.
Changes:
- Adds and validates the multi-chunk LOB workload.
- Updates diagnostic reporting and scenario coverage.
- Documents measurement boundaries and limitations.
| File | Summary |
|---|---|
tests/test_036_profiler_ci.py |
Adds workload and reporting coverage. |
eng/profiler_benchmarks/workloads.py |
Adds the LOB workload; ctx.enable() should be protected by try/finally to prevent state contamination. (Moderate, 1 vote) |
eng/profiler_benchmarks/report.py |
Adds diagnostic-count handling; the SQLGetDiagRec branch is unreachable without instrumentation. (Moderate, 2 votes) |
eng/profiler_benchmarks/README.md |
Documents coverage and measurement behavior. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Use existing generic counter reporting and keep the benchmark README change to the scenario count and a short workload description. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
PR Performance Report✅ No regression detectedNo consistent slowdowns detected across all 2 environments. 0 IMPROVEMENTS 0 SLOWDOWNS 2/2 ENVIRONMENTS Coverage: 2 of 2 environments completed. Advisory result; does not block merging. Performance diagnosticsPhase times are inclusive diagnostics and must not be added together. They identify where measured time changed, not why it changed. No affected phases or call-count changes were recorded. All database tasks and timingsUnix / SQL Server 2022
Unix / SQL Server 2025
Build and measurement detailsPR head:
A consistent change requires more than 20% median paired movement, at least 1 ms between the median runtimes, and at least 80% of pairs exceeding the relative threshold in the same direction. A slowdown without enough pair agreement is reported as inconsistent. The displayed change is the median of paired before-and-after ratios. It is not recalculated from the two displayed median runtimes. Both revisions use profiling-enabled builds on the same agent and database, with alternating order and discarded warmups. Results are diagnostic and do not represent production-wheel latency. Raw samples and logs are attached to the ADO run as |
📊 Code Coverage Report
Diff CoverageDiff: main...HEAD, staged and unstaged changesNo lines with coverage information in this diff. 📋 Files Needing Attention📉 Files with overall lowest coverage (click to expand)mssql_python.pybind.performance_counter.hpp: 0.7%
mssql_python.pybind.logger_bridge.cpp: 57.9%
mssql_python.pybind.ddbc_bindings.h: 62.6%
mssql_python.pybind.logger_bridge.hpp: 70.8%
mssql_python.pybind.ddbc_bindings.cpp: 79.1%
mssql_python.pybind.connection.connection_pool.cpp: 82.3%
mssql_python.pybind.connection.connection.cpp: 83.1%
mssql_python.logging.py: 86.2%
mssql_python.pooling.py: 90.1%
mssql_python.pybind.fetch_temporal.hpp: 92.1%🔗 Quick Links
|
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>


Work Item / Issue Reference
Summary
Add one scenario that fetches a single 256 KiB VARCHAR(MAX) value through
fetchall(), bringing routine profiler coverage from 20 to 21 scenarios.
Validate the exact payload outside the timed fetch window and show available
diagnostic-call counts without treating missing instrumentation as zero.
No runtime driver changes, additional builds, platform changes, or regression
threshold changes.