Skip to content

RELEASE: 1.17.0 - #878

Merged
Gaurav Sharma (bewithgaurav) merged 4 commits into
mainfrom
release/1.17.0
Nov 2, 2026
Merged

Gaurav Sharma (bewithgaurav) merged 4 commits into
mainfrom
release/1.17.0

Conversation

@bewithgaurav

@bewithgaurav Gaurav Sharma (bewithgaurav) commented Nov 2, 2026 •

Copy link
Copy Markdown
Collaborator

AB#49814

Summary

Prepares mssql-python 1.17.0 for release and includes the pooling optimization merged in #820.

Enhancements

  • Reduce pooled connection return work while preserving transaction, cleanup, capacity, and native handle-lifetime protections.

Bug Fixes

  • Restore bulk copy after upgrades from 1.15.0.
  • Bound pooled connection checkout on unresponsive sockets.
  • Refresh rowcount when moving between results with nextset().
  • Make the PEP 249 Timestamp() microsecond argument optional.
  • Update to mssql-python-rs 0.4.0 for UTF-8 bulk-copy encoding, identifier validation, and seven-digit datetime precision.

Version

  • Bump mssql_python.__version__ and setup.py from 1.16.0 to 1.17.0.
  • Replace the PyPI 1.16.0 highlights with the 1.17.0 release inventory.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@github-actions

github-actions Bot commented Nov 2, 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.684 ms 10.572 ms -0.8% no signal
SELECT queries 1.043 ms 1.008 ms -3.4% no signal
Row insertion 32.218 ms 31.905 ms -0.9% no signal
Executemany inserts 158.536 ms 159.074 ms -0.2% no signal
Fetch-all queries 121.090 ms 122.513 ms +1.2% no signal
Row-by-row fetching 14.060 ms 14.244 ms +0.7% no signal
Batched row fetching 117.601 ms 118.421 ms +0.9% no signal
Transaction commit and rollback 105.584 ms 105.913 ms +0.4% no signal
Arrow row fetching 89.384 ms 90.177 ms +1.6% no signal
100,000-row insertion 466.629 ms 452.293 ms -3.1% no signal
Row fetching in batches of 100 118.996 ms 120.360 ms +1.3% no signal
Row fetching in batches of 10,000 129.981 ms 132.074 ms +1.6% no signal
Repeated positional queries 31.454 ms 31.678 ms +0.8% no signal
Repeated named-parameter queries 34.274 ms 33.803 ms +0.7% no signal
Legacy 100,000-row insertion 367.505 ms 361.633 ms +1.0% no signal
Insertion with explicit input sizes 511.888 ms 514.446 ms +0.5% no signal
Joined aggregation queries 178.885 ms 177.192 ms -1.0% no signal
Large joined-result fetching 198.830 ms 200.411 ms +1.0% no signal
1.2-million-row fetching 3393.965 ms 3429.799 ms +0.6% no signal
Common table expression queries 5.427 ms 5.564 ms +2.2% no signal
256 KiB VARCHAR(MAX) / fetchall() 1.331 ms 1.404 ms +3.0% no signal
10,000 scalar values / fetchval() (debug disabled) 106.783 ms 109.058 ms +1.9% no signal

Unix / SQL Server 2025

Database task Before After Paired change Result
Connection opening 96.927 ms 96.923 ms +0.2% no signal
SELECT queries 1.046 ms 1.028 ms -2.7% no signal
Row insertion 32.576 ms 32.356 ms -0.6% no signal
Executemany inserts 151.889 ms 152.306 ms -1.1% no signal
Fetch-all queries 121.529 ms 122.545 ms +0.9% no signal
Row-by-row fetching 14.571 ms 14.549 ms +0.5% no signal
Batched row fetching 118.829 ms 118.409 ms +1.4% no signal
Transaction commit and rollback 108.447 ms 107.755 ms +0.2% no signal
Arrow row fetching 89.801 ms 90.626 ms +0.4% no signal
100,000-row insertion 430.792 ms 432.657 ms +0.4% no signal
Row fetching in batches of 100 122.838 ms 123.323 ms -0.3% no signal
Row fetching in batches of 10,000 143.749 ms 145.621 ms +0.4% no signal
Repeated positional queries 32.050 ms 31.761 ms -0.8% no signal
Repeated named-parameter queries 34.765 ms 34.296 ms -0.4% no signal
Legacy 100,000-row insertion 351.644 ms 346.511 ms -1.2% no signal
Insertion with explicit input sizes 482.925 ms 486.667 ms +0.6% no signal
Joined aggregation queries 160.694 ms 161.952 ms +0.4% no signal
Large joined-result fetching 192.940 ms 190.000 ms -1.2% no signal
1.2-million-row fetching 3449.341 ms 3456.562 ms +0.4% no signal
Common table expression queries 5.049 ms 5.248 ms +6.3% no signal
256 KiB VARCHAR(MAX) / fetchall() 1.416 ms 2.067 ms +46.9% no signal
10,000 scalar values / fetchval() (debug disabled) 107.700 ms 107.918 ms +0.3% no signal
Build and measurement details

ADO build 188322

PR head: 8bb73e0f19d0bcaf582a50087743547aa2b4ae7a
Base: 41af4cb0f684f43a6772636d6a39be0b5d2fc940
Measured merge: 55587faedeed49bb7f21a69f99bca7ff9c301bae

  • Unix / SQL Server 2022: Python 3.12.3, x86_64, SQL 16.0.4305.5; 5 paired comparisons and 1 warmup.
  • Unix / SQL Server 2025: Python 3.12.3, x86_64, SQL 17.0.5035.5; 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.

🟡 Changes recommended

The documentation incorrectly claims the initializer is preserved during upgrades, while the fix only allows bulk copy and async loading to work despite its removal.

1 open issue
What changed in this PR

Prepares mssql-python 1.17.0 by aligning package versions and updating the PyPI release highlights. These changes cover release metadata and documentation, not driver implementation.

Changes:

  • Bump distribution and runtime versions from 1.16.0 to 1.17.0.
  • Replace the previous release highlights with pooling, compatibility, and bulk-copy fixes.
  • Document the pooling optimization that the PR identifies as pending integration from #820.
File Description
setup.py Sets the distribution version to 1.17.0.
PyPI_Description.md Replaces 1.16.0 highlights with the 1.17.0 release inventory.
mssql_python/​__init__.py Sets the runtime __version__ to 1.17.0.

Review effort: Balanced

Comment thread PyPI_Description.md Resolved
@github-actions

github-actions Bot commented Nov 2, 2026 •

Copy link
Copy Markdown

📊 Code Coverage Report

🔥 Diff Coverage

100%


🎯 Overall Coverage

85%


📈 Total Lines Covered: 9624 out of 11318
📁 Project: mssql-python


Diff Coverage

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

  • mssql_python/init.py (100%)

Summary

  • Total: 1 line
  • Missing: 0 lines
  • Coverage: 100%

📋 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.connection.connection_pool.cpp: 81.3%
mssql_python.pybind.connection.connection.cpp: 82.5%
mssql_python.logging.py: 86.2%
mssql_python.pooling.py: 90.1%
mssql_python.pybind.fetch_temporal.hpp: 92.1%
mssql_python.cursor.py: 92.5%

🔗 Quick Links

⚙️ Build Summary 📋 Coverage Details

View Azure DevOps Build

Browse Full Coverage Report

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI balanced review requested due to automatic review settings November 2, 2026 13:47
@bewithgaurav
Gaurav Sharma (bewithgaurav) marked this pull request as ready for review November 2, 2026 13:48

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.

🟢 Approval recommended

No active review issues are reported for the version alignment and release-note updates.

No open issues 🎉

1 resolved since last review

Review effort: Balanced

Copilot AI balanced review requested due to automatic review settings November 2, 2026 15:24

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.

🟢 Approval recommended

No active review issues were identified for the 1.17.0 version updates and release highlights.

No open issues 🎉

Review effort: Balanced

@bewithgaurav
Gaurav Sharma (bewithgaurav) merged commit 4456be7 into main Nov 2, 2026
38 checks passed
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