Skip to content

Commit 919e6f7

Browse files
authored
Merge branch 'main' into saumya/code-cov-test
2 parents 50023f7 + f875072 commit 919e6f7

16 files changed

+1045
-692
lines changed

.gdn/.gdnbaselines

Lines changed: 97 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"default": {
99
"name": "default",
1010
"createdDate": "2025-11-10 15:00:51Z",
11-
"lastUpdatedDate": "2025-11-10 15:00:51Z"
11+
"lastUpdatedDate": "2025-12-18 10:54:41Z"
1212
}
1313
},
1414
"results": {
@@ -295,6 +295,102 @@
295295
"default"
296296
],
297297
"createdDate": "2025-11-10 15:00:51Z"
298+
},
299+
"6786ddf6cc2a77fa0f2a3be04c9406b8d54e7f610f1154f73cb86aae61b11c76": {
300+
"signature": "6786ddf6cc2a77fa0f2a3be04c9406b8d54e7f610f1154f73cb86aae61b11c76",
301+
"alternativeSignatures": [],
302+
"memberOf": [
303+
"default"
304+
],
305+
"createdDate": "2025-12-15 10:23:22Z"
306+
},
307+
"e88c64deb963fd614f0fd05db604d0b3548ab24867127bdc34c7eb1dafface13": {
308+
"signature": "e88c64deb963fd614f0fd05db604d0b3548ab24867127bdc34c7eb1dafface13",
309+
"alternativeSignatures": [],
310+
"memberOf": [
311+
"default"
312+
],
313+
"createdDate": "2025-12-15 10:23:22Z"
314+
},
315+
"2ca943cd72f19d83ce3a9fa2ace29f7746776f031525ac05a1f5f9314d863d4b": {
316+
"signature": "2ca943cd72f19d83ce3a9fa2ace29f7746776f031525ac05a1f5f9314d863d4b",
317+
"alternativeSignatures": [],
318+
"memberOf": [
319+
"default"
320+
],
321+
"createdDate": "2025-12-15 10:23:22Z"
322+
},
323+
"da53779707f7223531973e1c9b563967e6df158d884c3dc6609e196896ba4f63": {
324+
"signature": "da53779707f7223531973e1c9b563967e6df158d884c3dc6609e196896ba4f63",
325+
"alternativeSignatures": [],
326+
"memberOf": [
327+
"default"
328+
],
329+
"createdDate": "2025-12-15 10:23:22Z"
330+
},
331+
"0efcb00c1312ae31ca06cc59905518eecf4ebb5b3c7cd8a2eb36875b5761c68a": {
332+
"signature": "0efcb00c1312ae31ca06cc59905518eecf4ebb5b3c7cd8a2eb36875b5761c68a",
333+
"alternativeSignatures": [],
334+
"memberOf": [
335+
"default"
336+
],
337+
"createdDate": "2025-12-15 10:23:22Z"
338+
},
339+
"95a242a54c0e1f396f58a23d78858eef97a2534d2f81cd5379ad8e04c2e49819": {
340+
"signature": "95a242a54c0e1f396f58a23d78858eef97a2534d2f81cd5379ad8e04c2e49819",
341+
"alternativeSignatures": [],
342+
"memberOf": [
343+
"default"
344+
],
345+
"createdDate": "2025-12-15 10:23:22Z"
346+
},
347+
"4a6b0b0a5b3e5cddcfb2374f91e1ab8fbfb83d6b408c9eae7ff8e4d3108cb4ae": {
348+
"signature": "4a6b0b0a5b3e5cddcfb2374f91e1ab8fbfb83d6b408c9eae7ff8e4d3108cb4ae",
349+
"alternativeSignatures": [],
350+
"memberOf": [
351+
"default"
352+
],
353+
"createdDate": "2025-12-15 10:23:22Z"
354+
},
355+
"ffd24f0d64670eaa7a414d827e63a812a933bd50f155a9b6f66ba79b39476c5c": {
356+
"signature": "ffd24f0d64670eaa7a414d827e63a812a933bd50f155a9b6f66ba79b39476c5c",
357+
"alternativeSignatures": [],
358+
"memberOf": [
359+
"default"
360+
],
361+
"createdDate": "2025-12-15 10:23:22Z"
362+
},
363+
"0e93a4411da17dd2f315258703ecdc10570dcf67bcd59a728ce9028ccb7dc939": {
364+
"signature": "0e93a4411da17dd2f315258703ecdc10570dcf67bcd59a728ce9028ccb7dc939",
365+
"alternativeSignatures": [],
366+
"memberOf": [
367+
"default"
368+
],
369+
"createdDate": "2025-12-15 10:23:22Z"
370+
},
371+
"a123b8fc649532e2be93e2db916b3b9541dabe530d429dcddfbf74199ef65f6e": {
372+
"signature": "a123b8fc649532e2be93e2db916b3b9541dabe530d429dcddfbf74199ef65f6e",
373+
"alternativeSignatures": [],
374+
"memberOf": [
375+
"default"
376+
],
377+
"createdDate": "2025-12-15 10:23:22Z"
378+
},
379+
"30f2006b30f6393a5dcc9c7adfcf7327ae90c0b2c16b9d673c20f8b02fc1016e": {
380+
"signature": "30f2006b30f6393a5dcc9c7adfcf7327ae90c0b2c16b9d673c20f8b02fc1016e",
381+
"alternativeSignatures": [],
382+
"memberOf": [
383+
"default"
384+
],
385+
"createdDate": "2025-12-15 10:23:22Z"
386+
},
387+
"b193001ba0796417acfe030647f04db3d4a9a561f580338977d8f68230b5c20c": {
388+
"signature": "b193001ba0796417acfe030647f04db3d4a9a561f580338977d8f68230b5c20c",
389+
"alternativeSignatures": [],
390+
"memberOf": [
391+
"default"
392+
],
393+
"createdDate": "2025-12-18 10:54:41Z"
298394
}
299395
}
300396
}

.gdn/.gdnsuppress

Lines changed: 97 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"default": {
99
"name": "default",
1010
"createdDate": "2025-11-10 15:00:51Z",
11-
"lastUpdatedDate": "2025-11-10 15:00:51Z"
11+
"lastUpdatedDate": "2025-12-18 10:54:41Z"
1212
}
1313
},
1414
"results": {
@@ -295,6 +295,102 @@
295295
"default"
296296
],
297297
"createdDate": "2025-11-10 15:00:51Z"
298+
},
299+
"6786ddf6cc2a77fa0f2a3be04c9406b8d54e7f610f1154f73cb86aae61b11c76": {
300+
"signature": "6786ddf6cc2a77fa0f2a3be04c9406b8d54e7f610f1154f73cb86aae61b11c76",
301+
"alternativeSignatures": [],
302+
"memberOf": [
303+
"default"
304+
],
305+
"createdDate": "2025-12-15 10:23:22Z"
306+
},
307+
"e88c64deb963fd614f0fd05db604d0b3548ab24867127bdc34c7eb1dafface13": {
308+
"signature": "e88c64deb963fd614f0fd05db604d0b3548ab24867127bdc34c7eb1dafface13",
309+
"alternativeSignatures": [],
310+
"memberOf": [
311+
"default"
312+
],
313+
"createdDate": "2025-12-15 10:23:22Z"
314+
},
315+
"2ca943cd72f19d83ce3a9fa2ace29f7746776f031525ac05a1f5f9314d863d4b": {
316+
"signature": "2ca943cd72f19d83ce3a9fa2ace29f7746776f031525ac05a1f5f9314d863d4b",
317+
"alternativeSignatures": [],
318+
"memberOf": [
319+
"default"
320+
],
321+
"createdDate": "2025-12-15 10:23:22Z"
322+
},
323+
"da53779707f7223531973e1c9b563967e6df158d884c3dc6609e196896ba4f63": {
324+
"signature": "da53779707f7223531973e1c9b563967e6df158d884c3dc6609e196896ba4f63",
325+
"alternativeSignatures": [],
326+
"memberOf": [
327+
"default"
328+
],
329+
"createdDate": "2025-12-15 10:23:22Z"
330+
},
331+
"0efcb00c1312ae31ca06cc59905518eecf4ebb5b3c7cd8a2eb36875b5761c68a": {
332+
"signature": "0efcb00c1312ae31ca06cc59905518eecf4ebb5b3c7cd8a2eb36875b5761c68a",
333+
"alternativeSignatures": [],
334+
"memberOf": [
335+
"default"
336+
],
337+
"createdDate": "2025-12-15 10:23:22Z"
338+
},
339+
"95a242a54c0e1f396f58a23d78858eef97a2534d2f81cd5379ad8e04c2e49819": {
340+
"signature": "95a242a54c0e1f396f58a23d78858eef97a2534d2f81cd5379ad8e04c2e49819",
341+
"alternativeSignatures": [],
342+
"memberOf": [
343+
"default"
344+
],
345+
"createdDate": "2025-12-15 10:23:22Z"
346+
},
347+
"4a6b0b0a5b3e5cddcfb2374f91e1ab8fbfb83d6b408c9eae7ff8e4d3108cb4ae": {
348+
"signature": "4a6b0b0a5b3e5cddcfb2374f91e1ab8fbfb83d6b408c9eae7ff8e4d3108cb4ae",
349+
"alternativeSignatures": [],
350+
"memberOf": [
351+
"default"
352+
],
353+
"createdDate": "2025-12-15 10:23:22Z"
354+
},
355+
"ffd24f0d64670eaa7a414d827e63a812a933bd50f155a9b6f66ba79b39476c5c": {
356+
"signature": "ffd24f0d64670eaa7a414d827e63a812a933bd50f155a9b6f66ba79b39476c5c",
357+
"alternativeSignatures": [],
358+
"memberOf": [
359+
"default"
360+
],
361+
"createdDate": "2025-12-15 10:23:22Z"
362+
},
363+
"0e93a4411da17dd2f315258703ecdc10570dcf67bcd59a728ce9028ccb7dc939": {
364+
"signature": "0e93a4411da17dd2f315258703ecdc10570dcf67bcd59a728ce9028ccb7dc939",
365+
"alternativeSignatures": [],
366+
"memberOf": [
367+
"default"
368+
],
369+
"createdDate": "2025-12-15 10:23:22Z"
370+
},
371+
"a123b8fc649532e2be93e2db916b3b9541dabe530d429dcddfbf74199ef65f6e": {
372+
"signature": "a123b8fc649532e2be93e2db916b3b9541dabe530d429dcddfbf74199ef65f6e",
373+
"alternativeSignatures": [],
374+
"memberOf": [
375+
"default"
376+
],
377+
"createdDate": "2025-12-15 10:23:22Z"
378+
},
379+
"30f2006b30f6393a5dcc9c7adfcf7327ae90c0b2c16b9d673c20f8b02fc1016e": {
380+
"signature": "30f2006b30f6393a5dcc9c7adfcf7327ae90c0b2c16b9d673c20f8b02fc1016e",
381+
"alternativeSignatures": [],
382+
"memberOf": [
383+
"default"
384+
],
385+
"createdDate": "2025-12-15 10:23:22Z"
386+
},
387+
"b193001ba0796417acfe030647f04db3d4a9a561f580338977d8f68230b5c20c": {
388+
"signature": "b193001ba0796417acfe030647f04db3d4a9a561f580338977d8f68230b5c20c",
389+
"alternativeSignatures": [],
390+
"memberOf": [
391+
"default"
392+
],
393+
"createdDate": "2025-12-18 10:54:41Z"
298394
}
299395
}
300396
}

OneBranchPipelines/github-ado-sync.yml

Lines changed: 43 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,18 @@
11
# GitHub-to-ADO Sync Pipeline
22
# Syncs main branch from public GitHub to internal Azure DevOps daily at 5pm IST
3+
#
4+
# SYNC STRATEGY RATIONALE:
5+
# This pipeline uses a "replace-all" approach rather than traditional git merge/rebase because:
6+
# 1. DIVERGENT HISTORY: ADO repository contains commits from early development that don't exist
7+
# in GitHub. These historical commits were made before GitHub became the source of truth.
8+
# 2. AVOIDING CONFLICTS: Standard git operations (merge, rebase, reset --hard) fail when
9+
# repositories have divergent commit histories. Attempting to merge results in conflicts
10+
# that cannot be automatically resolved.
11+
# 3. IMPLEMENTATION: We use 'git fetch + git rm + git checkout' to completely replace ADO's
12+
# working tree with GitHub's files without attempting to reconcile git history. This creates
13+
# a clean sync commit that updates all files to match GitHub exactly.
14+
# 4. CHANGE DETECTION: The pipeline checks if any files actually differ before creating PRs,
15+
# avoiding unnecessary sync operations when repositories are already aligned.
316

417
name: GitHub-Sync-$(Date:yyyyMMdd)$(Rev:.r)
518

@@ -21,25 +34,15 @@ jobs:
2134
vmImage: 'windows-latest'
2235

2336
steps:
24-
- checkout: none
37+
- checkout: self
38+
persistCredentials: true
2539

2640
- task: CmdLine@2
27-
displayName: 'Clone GitHub repo'
41+
displayName: 'Add GitHub remote'
2842
inputs:
29-
script: git clone https://github.com/microsoft/mssql-python.git repo-dir -b main
30-
workingDirectory: $(Agent.TempDirectory)
31-
32-
- task: CmdLine@2
33-
displayName: 'Add Azure DevOps remote'
34-
inputs:
35-
script: git remote add azdo-mirror https://$(System.AccessToken)@sqlclientdrivers.visualstudio.com/mssql-python/_git/mssql-python
36-
workingDirectory: $(Agent.TempDirectory)/repo-dir
37-
38-
- task: CmdLine@2
39-
displayName: 'Fetch ADO repo'
40-
inputs:
41-
script: git fetch azdo-mirror
42-
workingDirectory: $(Agent.TempDirectory)/repo-dir
43+
script: |
44+
git remote add github https://github.com/microsoft/mssql-python.git
45+
git fetch github main
4346
4447
- task: CmdLine@2
4548
displayName: 'Create timestamped sync branch'
@@ -51,26 +54,35 @@ jobs:
5154
set SYNC_BRANCH=github-sync-%TIMESTAMP%
5255
echo %SYNC_BRANCH% > branchname.txt
5356
echo Creating sync branch: %SYNC_BRANCH%
54-
git fetch azdo-mirror
55-
git show-ref --verify --quiet refs/remotes/azdo-mirror/main
56-
if %ERRORLEVEL% EQU 0 (
57-
git checkout -b %SYNC_BRANCH% -t azdo-mirror/main
58-
) else (
59-
echo azdo-mirror/main does not exist. Exiting.
60-
exit /b 1
61-
)
57+
git checkout -b %SYNC_BRANCH%
6258
echo ##vso[task.setvariable variable=SYNC_BRANCH;isOutput=true]%SYNC_BRANCH%
63-
workingDirectory: $(Agent.TempDirectory)/repo-dir
6459
6560
- task: CmdLine@2
66-
displayName: 'Reset branch to match GitHub main exactly'
61+
displayName: 'Sync with GitHub main'
6762
inputs:
6863
script: |
69-
git -c user.email="sync@microsoft.com" -c user.name="ADO Sync Bot" reset --hard origin/main
70-
workingDirectory: $(Agent.TempDirectory)/repo-dir
64+
echo Syncing with GitHub main...
65+
git config user.email "sync@microsoft.com"
66+
git config user.name "ADO Sync Bot"
67+
68+
git fetch github main
69+
git rm -rf .
70+
git checkout github/main -- .
71+
echo timestamp.txt >> .git\info\exclude
72+
echo branchname.txt >> .git\info\exclude
73+
git diff --cached --quiet
74+
if %ERRORLEVEL% EQU 0 (
75+
echo No changes detected. Skipping commit.
76+
echo ##vso[task.setvariable variable=HAS_CHANGES]false
77+
) else (
78+
echo Changes detected. Creating commit...
79+
git add . && git commit -m "Sync from GitHub main"
80+
echo ##vso[task.setvariable variable=HAS_CHANGES]true
81+
)
7182
7283
- task: CmdLine@2
7384
displayName: 'Push branch to Azure DevOps'
85+
condition: eq(variables['HAS_CHANGES'], 'true')
7486
inputs:
7587
script: |
7688
set /p SYNC_BRANCH=<branchname.txt
@@ -79,18 +91,18 @@ jobs:
7991
git config user.email "sync@microsoft.com"
8092
git config user.name "ADO Sync Bot"
8193
82-
git push azdo-mirror %SYNC_BRANCH% --set-upstream
94+
git push origin %SYNC_BRANCH% --set-upstream
8395
8496
if %ERRORLEVEL% EQU 0 (
8597
echo Branch pushed successfully!
8698
) else (
8799
echo ERROR: Push failed!
88100
exit /b 1
89101
)
90-
workingDirectory: $(Agent.TempDirectory)/repo-dir
91102
92103
- task: CmdLine@2
93104
displayName: 'Create pull request'
105+
condition: eq(variables['HAS_CHANGES'], 'true')
94106
inputs:
95107
script: |
96108
echo Installing Azure DevOps extension...
@@ -123,5 +135,4 @@ jobs:
123135
)
124136
125137
if exist timestamp.txt del timestamp.txt
126-
if exist branchname.txt del branchname.txt
127-
workingDirectory: $(Agent.TempDirectory)/repo-dir
138+
if exist branchname.txt del branchname.txt

PyPI_Description.md

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,29 @@ PyBind11 provides:
3535
- Memory-safe bindings
3636
- Clean and Pythonic API, while performance-critical logic remains in robust, maintainable C++.
3737

38-
## What's new in v1.0.0
38+
## What's new in v1.1.0
3939

40-
### New Features
40+
### Enhancements
4141

42-
- *Python 3.14 support* - ensuring compatibility with the latest Python ecosystem.
43-
- *GA stability* - hardened release engineering, expanded test coverage, and compliance checks for enterprise readiness.
42+
- **Thread-Safe Encoding/Decoding** - Mutex-based lock protection prevents race conditions in multi-threaded applications with concurrent connections. Strict validation for SQL_WCHAR types and security measures against encoding-based attacks ensure data integrity and application security.
43+
44+
### Critical Bug Fixes
45+
46+
- **Linux Stability** - Fixed critical double-free issue causing segmentation faults during Python garbage collection, significantly improving stability on Linux platforms.
47+
48+
- **Connection Pooling Isolation Level** - Transaction isolation level now explicitly resets to READ COMMITTED when pooled connections are reused, preventing unexpected transaction behavior and isolation level conflicts.
49+
50+
- **Connection String Escaping** - Fixed parser and builder to correctly handle ODBC curly brace escaping rules, enabling proper handling of special characters in passwords and connection values.
51+
52+
- **UTF-16 String Decoding** - Enhanced `connection.getinfo()` to properly decode UTF-16LE strings from SQL Server, eliminating data corruption when retrieving metadata with non-ASCII characters.
53+
54+
- **NULL Parameter Arrays** - Added support for arrays containing only NULL values in `executemany()`, improving batch operation reliability.
55+
56+
- **Query Timeout Consistency** - Refactored timeout handling to set query timeout during cursor initialization, reducing overhead and ensuring consistent timeout application.
57+
58+
- **IntegrityError Detection** - Fixed error handling in `fetchall()` for INSERT statements with OUTPUT clause and multiple VALUES entries.
59+
60+
- **Sensitive Parameter Filtering** - Corrected authentication parameter filtering to properly exclude Trusted_Connection while preserving encryption settings.
4461

4562
For more information, please visit the project link on Github: https://github.com/microsoft/mssql-python
4663

mssql_python/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
from .helpers import Settings, get_settings, _settings, _settings_lock
1616

1717
# Driver version
18-
__version__ = "1.0.0"
18+
__version__ = "1.1.0"
1919

2020
# Exceptions
2121
# https://www.python.org/dev/peps/pep-0249/#exceptions

0 commit comments

Comments
 (0)