Skip to content

RELEASE: 1.16.0 - #840

Merged
Gaurav Sharma (bewithgaurav) merged 6 commits into
mainfrom
release/1.16.0
Oct 14, 2026
Merged

Gaurav Sharma (bewithgaurav) merged 6 commits into
mainfrom
release/1.16.0

Conversation

@bewithgaurav

@bewithgaurav Gaurav Sharma (bewithgaurav) commented Oct 12, 2026 •

Copy link
Copy Markdown
Collaborator

AB#49327

Summary

Prepares mssql-python 1.16.0 for release.

Enhancements

  • Add Python 3.15 support and Row._mapping.
  • Depend on stable-ABI mssql-python-rs 0.3.0 wheels instead of embedding Rust runtime files.
  • Reduce overhead in Row construction, batch fetching, temporal conversion, result-set metadata, diagnostics, integer indexing, and fetchval() logging.

Bug Fixes

  • Prevent Windows shutdown access violations and pooled empty transactions.
  • Preserve BOM-like UTF-16 payload characters.
  • Harden dynamic native logging and UDT parameter binding.
  • Warn when setencoding() requests cannot be applied.
  • Preserve Python-specific dependency markers in release locks.
  • Correct bulk-copy timeout and identifier handling through mssql_py_core.

Version

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

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

github-actions Bot commented Oct 12, 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.854 ms 10.768 ms -0.2% no signal
SELECT queries 1.043 ms 1.035 ms -4.0% no signal
Row insertion 31.278 ms 31.334 ms -0.3% no signal
Executemany inserts 134.485 ms 135.099 ms -1.2% no signal
Fetch-all queries 120.516 ms 117.130 ms -0.5% no signal
Row-by-row fetching 12.765 ms 12.598 ms -1.8% no signal
Batched row fetching 111.737 ms 110.859 ms -0.8% no signal
Transaction commit and rollback 98.796 ms 99.457 ms +0.4% no signal
Arrow row fetching 89.844 ms 90.092 ms -0.3% no signal
100,000-row insertion 403.209 ms 405.355 ms -0.6% no signal
Row fetching in batches of 100 107.828 ms 108.532 ms +1.2% no signal
Row fetching in batches of 10,000 133.447 ms 133.659 ms +1.9% no signal
Repeated positional queries 29.795 ms 29.699 ms -0.3% no signal
Repeated named-parameter queries 32.057 ms 32.184 ms +0.1% no signal
Legacy 100,000-row insertion 307.836 ms 315.039 ms +2.0% no signal
Insertion with explicit input sizes 431.415 ms 437.407 ms -0.5% no signal
Joined aggregation queries 185.578 ms 184.494 ms -1.2% no signal
Large joined-result fetching 179.763 ms 177.327 ms -1.6% no signal
1.2-million-row fetching 3463.127 ms 3475.498 ms -0.3% no signal
Common table expression queries 5.617 ms 5.516 ms -0.9% no signal
256 KiB VARCHAR(MAX) / fetchall() 1.300 ms 1.272 ms -3.2% no signal
10,000 scalar values / fetchval() (debug disabled) 100.145 ms 101.210 ms +0.6% no signal

Unix / SQL Server 2025

Database task Before After Paired change Result
Connection opening 97.344 ms 96.846 ms -0.5% no signal
SELECT queries 1.078 ms 1.043 ms -4.2% no signal
Row insertion 36.129 ms 34.632 ms -4.3% no signal
Executemany inserts 153.182 ms 149.899 ms -1.2% no signal
Fetch-all queries 120.958 ms 120.728 ms +1.9% no signal
Row-by-row fetching 14.420 ms 15.450 ms +6.4% no signal
Batched row fetching 116.989 ms 117.525 ms +0.6% no signal
Transaction commit and rollback 116.231 ms 115.447 ms -1.1% no signal
Arrow row fetching 94.202 ms 93.247 ms -1.3% no signal
100,000-row insertion 440.166 ms 427.224 ms -1.6% no signal
Row fetching in batches of 100 121.081 ms 123.358 ms +0.4% no signal
Row fetching in batches of 10,000 136.312 ms 139.702 ms +3.2% no signal
Repeated positional queries 34.128 ms 33.865 ms -0.5% no signal
Repeated named-parameter queries 37.458 ms 37.218 ms +1.7% no signal
Legacy 100,000-row insertion 349.254 ms 344.414 ms -1.5% no signal
Insertion with explicit input sizes 492.739 ms 480.776 ms -2.2% no signal
Joined aggregation queries 159.606 ms 159.276 ms -0.2% no signal
Large joined-result fetching 180.041 ms 181.841 ms +2.3% no signal
1.2-million-row fetching 3487.411 ms 3469.802 ms -0.4% no signal
Common table expression queries 5.085 ms 5.062 ms -0.9% no signal
256 KiB VARCHAR(MAX) / fetchall() 1.446 ms 1.459 ms +2.0% no signal
10,000 scalar values / fetchval() (debug disabled) 107.126 ms 107.275 ms +0.2% no signal
Build and measurement details

ADO build 182400

PR head: b975c64434bdfddbcff31d374f49ba184330dd35
Base: d7a4a9928d00ebd88fcfae5a3fdd4dc5c5ae7d46
Measured merge: 173f304f0e30b5129be254deaa39ee32d8ee75c6

  • 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.

🟡 Changes recommended

The PyPI highlights include an internal-only change and omit required Rust attribution.

2 open findings
What changed in this PR

Prepares mssql-python 1.16.0 for release.

Changes:

  • Bumps package and runtime versions to 1.16.0.
  • Replaces PyPI highlights with the 1.16.0 release inventory.
File Description
setup.py Updates package version.
mssql_python/​__init__.py Updates runtime version.
PyPI_Description.md Adds 1.16.0 release highlights.

🧠 Review effort: Balanced


💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread PyPI_Description.md Outdated
Comment thread PyPI_Description.md Outdated

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.

Release for mssql-python-odbc 18.6.2.2 is completed. Can you please add this pinned version in this same PR

@github-actions

github-actions Bot commented Oct 12, 2026 •

Copy link
Copy Markdown

📊 Code Coverage Report

🔥 Diff Coverage

100%


🎯 Overall Coverage

85%


📈 Total Lines Covered: 9443 out of 11092
📁 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: 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%
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>
Copilot AI balanced review requested due to automatic review settings October 12, 2026 09:58

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

Version metadata is consistent and the release notes align with the referenced merged changes.

0 open findings

2 resolved since last review

🧠 Review effort: Balanced

Copilot AI balanced review requested due to automatic review settings October 12, 2026 10:08

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 stable-ABI release note incorrectly describes Python-version-specific wheel reduction as platform-specific.

1 open finding

🧠 Review effort: Balanced

Comment thread PyPI_Description.md Outdated
Comment thread PyPI_Description.md
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

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

Version metadata is consistent and the release inventory matches the referenced merged changes.

0 open findings

1 resolved since last review

🧠 Review effort: Balanced

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI balanced review requested due to automatic review settings October 12, 2026 10:49

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.

🔵 Needs a closer look

The release depends on unpublished mssql-python-odbc 18.6.2.2, and several release-note claims need correction.

0 open findings

Previously missed (3)

In code that hasn't changed since last review

Low severity Correct release-wheel attribution to include PR #838

PyPI_Description.md:42

This attributes both validation and release-wheel support to #817, but #817 added validation while #838 is the merged change that adds the CPython 3.15 release-wheel stages. Include #838 so the release note accurately traces the wheel claim.

Low severity Reframe provider selection as a 1.16 dependency change

PyPI_Description.md:45

Provider selection already shipped in v1.15.0: that tag exposes native_provider/get_native_provider_info(), documents the opt-in provider, and its release commit lists #730. Reframe this entry around the 1.16 change—the exact mssql-python-rs dependency now installs the existing optional provider—so the “what's new” section does not present prior-release functionality as new.

Low severity Remove unsupported performance claim without indexing benchmarks

PyPI_Description.md:52

The linked PR provides no indexing-specific benchmark, and its advisory performance run reports no affected phase or call-count change, so “Faster” is not supported by the available measurements. Use mechanism-only wording unless a focused positional-index benchmark demonstrates the claim.

🧠 Review effort: Balanced

@bewithgaurav Gaurav Sharma (bewithgaurav) changed the title RELEASE:1.16.0 RELEASE: 1.16.0 Oct 12, 2026
Copilot AI balanced review requested due to automatic review settings October 13, 2026 06: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.

🟡 Changes recommended

Release notes need corrected Python 3.15 attribution and evidence-neutral indexing wording.

2 open findings

🧠 Review effort: Balanced

Comment thread PyPI_Description.md
Comment thread PyPI_Description.md
@bewithgaurav
Gaurav Sharma (bewithgaurav) merged commit 9424705 into main Oct 14, 2026
36 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