Skip to content

CHORE: Accept stable ABI Rust wheels and mssql-python-rs 0.3.0 - #804

Merged
gargsaumya merged 5 commits into
mainfrom
saumya/python-rs-abi3
Oct 1, 2026
Merged

gargsaumya merged 5 commits into
mainfrom
saumya/python-rs-abi3

Conversation

@gargsaumya

@gargsaumya gargsaumya commented Sep 21, 2026 •

Copy link
Copy Markdown
Contributor

Work Item / Issue Reference

AB#48322


Summary

Update the mssql-python-rs installers to select the stable-ABI cp310-abi3 wheel for each target platform, with focused tests for the wheel-selection contract. Adopt the released mssql-python-rs 0.3.0 package for both the public dependency and internal NuGet transport before the next mssql-python release.

Validation:

  • PyPI mssql-python-rs==0.3.0 is published with all nine stable-ABI wheels.
  • Clean Windows venv installed mssql_python_rs-0.3.0-cp310-abi3-win_amd64.whl; package metadata reported 0.3.0 and mssql_py_core imported successfully.
  • python -m pytest --noconftest tests/test_037_rs_wheel_download.py tests/test_038_mssql_odbc_daily_validation.py -q (13 passed, 5 platform skips).
  • Generated package metadata contains mssql-python-rs==0.3.0.
  • black --check --line-length=100 mssql_python tests (101 files unchanged).

Producer: microsoft/mssql-rs#669

Copilot AI lite review requested due to automatic review settings September 21, 2026 10:09
@github-actions

github-actions Bot commented Sep 21, 2026 •

Copy link
Copy Markdown

PR Performance Report

✅ No regression detected

No 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 diagnostics

Phase 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 timings

Unix / SQL Server 2022

Database task Before After Paired change Result
Connection opening 10.643 ms 10.448 ms +0.9% no signal
SELECT queries 1.120 ms 1.052 ms -9.5% no signal
Row insertion 35.716 ms 34.962 ms -3.3% no signal
Executemany inserts 163.572 ms 161.442 ms -5.4% no signal
Fetch-all queries 123.345 ms 120.764 ms -1.5% no signal
Row-by-row fetching 14.589 ms 14.480 ms -0.8% no signal
Batched row fetching 116.674 ms 116.646 ms +0.4% no signal
Transaction commit and rollback 113.608 ms 116.937 ms +1.4% no signal
Arrow row fetching 93.775 ms 96.682 ms +7.8% no signal
100,000-row insertion 447.989 ms 440.911 ms -1.5% no signal
Row fetching in batches of 100 129.453 ms 129.836 ms +0.7% no signal
Row fetching in batches of 10,000 134.378 ms 134.399 ms +3.7% no signal
Repeated positional queries 34.116 ms 34.067 ms -1.2% no signal
Repeated named-parameter queries 36.806 ms 36.056 ms -2.2% no signal
Legacy 100,000-row insertion 348.967 ms 349.473 ms +0.1% no signal
Insertion with explicit input sizes 483.723 ms 489.373 ms +1.2% no signal
Joined aggregation queries 177.102 ms 179.501 ms +0.6% no signal
Large joined-result fetching 179.602 ms 184.654 ms +2.7% no signal
1.2-million-row fetching 3466.827 ms 3460.780 ms -0.9% no signal
Common table expression queries 5.427 ms 5.389 ms +0.0% no signal
256 KiB VARCHAR(MAX) / fetchall() 1.297 ms 1.259 ms -0.4% no signal

Unix / SQL Server 2025

Database task Before After Paired change Result
Connection opening 97.650 ms 97.042 ms -1.1% no signal
SELECT queries 1.514 ms 1.105 ms -26.1% no signal
Row insertion 37.718 ms 34.618 ms -8.5% no signal
Executemany inserts 151.924 ms 151.892 ms -0.6% no signal
Fetch-all queries 121.382 ms 122.003 ms +2.1% no signal
Row-by-row fetching 14.695 ms 14.938 ms +0.1% no signal
Batched row fetching 116.823 ms 119.124 ms +0.8% no signal
Transaction commit and rollback 116.141 ms 116.073 ms +0.2% no signal
Arrow row fetching 93.972 ms 94.264 ms -0.3% no signal
100,000-row insertion 491.116 ms 454.528 ms -7.9% no signal
Row fetching in batches of 100 122.149 ms 123.068 ms +0.8% no signal
Row fetching in batches of 10,000 134.202 ms 142.998 ms +6.8% no signal
Repeated positional queries 33.647 ms 33.880 ms +0.7% no signal
Repeated named-parameter queries 36.194 ms 36.143 ms -0.7% no signal
Legacy 100,000-row insertion 353.811 ms 352.545 ms -0.0% no signal
Insertion with explicit input sizes 489.733 ms 485.414 ms -0.5% no signal
Joined aggregation queries 161.955 ms 161.182 ms -0.6% no signal
Large joined-result fetching 187.035 ms 183.188 ms -3.4% no signal
1.2-million-row fetching 3581.982 ms 3542.795 ms -0.0% no signal
Common table expression queries 5.352 ms 5.156 ms -3.8% no signal
256 KiB VARCHAR(MAX) / fetchall() 1.459 ms 1.513 ms +8.1% no signal
Build and measurement details

ADO build 179668

PR head: bacd3e7fdbbdb8ca2d6a9dd7568f67d32e0f28d3
Base: fead15c30e49172bab643bc9cc5504936e86459e
Measured merge: a3f6cf2c01bfd74741832718493d2b98e4e2d8f9

  • Unix / SQL Server 2022: Python 3.12.3, x86_64, SQL 16.0.4295.3; 5 paired comparisons and 1 warmup.
  • Unix / SQL Server 2025: Python 3.12.3, x86_64, SQL 17.0.5005.3; 5 paired comparisons and 1 warmup.

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 profiler-* artifacts.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟢 Approval recommended

No unresolved review issues were identified.

Review effort: Lite
Findings: None

What changed in this PR

Updates mssql-python-rs installers to select stable-ABI cp310-abi3 wheels across supported platforms.

Changes:

  • Updated Bash and PowerShell wheel-selection patterns.
  • Updated fixtures and installer contract tests.
File Description
tests/​test_037_rs_wheel_download.py Updates fixtures and validates stable-ABI selection.
eng/​scripts/​install-mssql-py-core.sh Selects stable-ABI wheels on Unix platforms.
eng/​scripts/​install-mssql-py-core.ps1 Selects stable-ABI wheels on Windows.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Copilot AI review requested due to automatic review settings September 21, 2026 13:52

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟡 Changes recommended

The transport pin conflicts with the contract test’s expected 0.1.0 version and must be reconciled.

Get a fresh assessment by requesting another Copilot review.

Review effort: Lite
Findings: 1 High severity

Open (1)

Comment thread eng/versions/mssql-python-rs-nuget.version Outdated
Copilot AI lite review requested due to automatic review settings October 1, 2026 08:01

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🔵 Needs a closer look

Update the transport-pin contract test to match the new version.

Review effort: Lite
Findings: 1 High severity

Open (1)

@gargsaumya
gargsaumya marked this pull request as ready for review October 1, 2026 08:07
@gargsaumya gargsaumya closed this Oct 1, 2026
@gargsaumya gargsaumya reopened this Oct 1, 2026
@gargsaumya gargsaumya changed the title CHORE: Accept stable ABI Rust wheels CHORE: Accept stable ABI Rust wheels and mssql-python-rs 0.3.0 Oct 1, 2026
@gargsaumya gargsaumya closed this Oct 1, 2026
@gargsaumya gargsaumya reopened this Oct 1, 2026
Copilot AI lite review requested due to automatic review settings October 1, 2026 08:21
@gargsaumya
gargsaumya force-pushed the saumya/python-rs-abi3 branch from 9aa83dd to 293c8cd Compare October 1, 2026 08:22

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🔵 Needs a closer look

Strengthen wheel-selection tests to validate complete platform-specific filename patterns.

Review effort: Lite
Findings: None

Resolved since last review (1)

@github-actions

github-actions Bot commented Oct 1, 2026

Copy link
Copy Markdown

📊 Code Coverage Report

🔥 Diff Coverage

100%


🎯 Overall Coverage

84%


📈 Total Lines Covered: 9402 out of 11085
📁 Project: mssql-python


Diff Coverage

Diff: main...HEAD, staged and unstaged changes

No 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.3%
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

⚙️ Build Summary 📋 Coverage Details

View Azure DevOps Build

Browse Full Coverage Report

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! Approving

@gargsaumya
gargsaumya enabled auto-merge (squash) October 1, 2026 09:23
@gargsaumya
gargsaumya merged commit c583190 into main Oct 1, 2026
32 checks passed
Gaurav Sharma (bewithgaurav) added a commit that referenced this pull request Oct 1, 2026
Drop the stable-ABI wheel selection now provided by PR #804 and refresh the pinned Python 3.15 PyArrow nightly after the previous build was pruned.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pr-size: small Minimal code update

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants