Releases: microsoft/mssql-python
v1.4.0
Release Notes - Version 1.4.0
Enhancements
-
Bulk Copy Support (#449, #430, #426, #420, #439)
What changed: The
bulkcopy()method on the Cursor object is now a public API, providing high-performance bulk data loading into SQL Server. Added comprehensive logging support for bulk copy operations with configurable log levels. Enhanced type hints and explicit parameter definitions for better IDE support and type checking. This feature is powered by a new mssql-py-core native extension, please read here https://github.com/microsoft/mssql-rs?target=https://github.com.
Who benefits: Developers performing ETL operations, applications requiring high-throughput data imports, teams needing detailed bulk copy operation logging for debugging
Impact: Enables production use of high-performance bulk inserts, provides visibility into bulk copy operations through logging, ensures secure authentication with EntraID tokens, improves developer experience with better type hints and parameter documentation -
Spatial Type Support (#423)
What changed: Added native support for SQL Server spatial data types including
geography,geometry, andhierarchyid. These types are now automatically handled during query execution and result fetching, with proper Python type conversions. Includes comprehensive test coverage for spatial operations.
Who benefits: Applications working with geospatial data, GIS integrations, users storing location-based information, developers working with hierarchical data structures
Impact: Enables direct use of SQL Server spatial features from Python, eliminates need for manual type conversions, provides seamless integration with geospatial applicationsImplements #423
-
Type Annotations with py.typed Marker (#367)
What changed: Added
py.typedmarker file to the package, enabling full type checking support for static type checkers like mypy, pylance, and pyright. This makes all type hints in the package discoverable and verifiable by type checking tools.
Who benefits: Developers using static type checkers, teams enforcing type safety in codebases, IDE users wanting better autocomplete and inline documentation
Impact: Enables compile-time type checking for mssql-python usage, improves IDE intelligence and error detection, enhances code quality through static analysisImplements #367
Bug Fixes
-
VARCHAR Fetch Failure with Non-ASCII CP1252 Characters (#444)
What changed: Fixed a critical bug where fetching VARCHAR columns failed when the data length exactly equaled the column size and contained non-ASCII CP1252 characters (e.g., extended Latin characters like é, ñ, ü). The issue was caused by incorrect buffer size calculations for multi-byte character encodings.
Who benefits: Applications storing international text data, databases with CP1252 collations, users in European and Latin American regions
Impact: Prevents data fetch failures for international characters, ensures reliable VARCHAR handling across all character sets, eliminates data truncation issuesFixes #444
-
Segmentation Fault with Interleaved Fetch Calls (#441)
What changed: Fixed a segmentation fault that occurred when interleaving calls to
fetchmany()andfetchone()on the same cursor. The issue was caused by improper state management in the underlying result set iterator. Added comprehensive test coverage for various fetch operation sequences.
Who benefits: Applications using mixed fetch strategies, developers iterating through result sets with different batch sizes, tools dynamically adjusting fetch patterns
Impact: Eliminates crash risk when mixing fetch methods, ensures stable cursor iteration, improves overall driver reliability -
Date/Time Type Code Alignment with ODBC 18 Driver (#355)
What changed: Aligned date and time type code mappings with the official ODBC 18 driver source code. This ensures consistent behavior when working with SQL Server date/time types (DATE, TIME, DATETIME2, DATETIMEOFFSET) across Python and other language drivers.
Who benefits: Applications using temporal data types, developers migrating from ODBC-based solutions, cross-platform applications requiring consistent date/time handling
Impact: Ensures accurate date/time type handling, eliminates subtle type conversion discrepancies, improves compatibility with other SQL Server drivers
Developer Experience
-
Development Container Configuration (#147)
What changed: Added devcontainer configuration for VS Code, providing a complete, pre-configured development environment with all necessary dependencies, tools, and extensions. Includes Python environment setup, SQL Server instance configuration, and recommended VS Code extensions.
Who benefits: New contributors setting up development environments, developers wanting consistent cross-platform setups, remote development scenarios
Impact: Reduces environment setup time from hours to minutes, ensures consistent development environments across team, eliminates "works on my machine" issuesImplements #147
v1.3.0
Release Notes - Version 1.3.0
Bug Fixes
-
Segmentation Fault in libmsodbcsql-18.5 during SQLFreeHandle() (#415)
What changed: Fixed a segmentation fault that occurred in libmsodbcsql-18.5 when calling SQLFreeHandle() during connection cleanup. The issue was related to improper handle lifecycle management during driver shutdown.
Who benefits: Applications experiencing crashes during connection cleanup, long-running applications with frequent connection cycling, multi-threaded applications managing multiple connections
Impact: Eliminates driver crashes during connection teardown, improves stability for production workloads, ensures proper resource cleanup without segmentation faultsFixes #341
v1.2.0
Release Notes - Version 1.2.0
Enhancements
-
Connection.closed Property (#398)
What changed: Added a new
closedproperty to theConnectionclass that returnsTrueifclose()was called, andFalseotherwise. This property provides a clear and explicit way to check if a connection has been closed. Comprehensive tests ensure correct behavior including idempotency when callingclose()multiple times and proper state tracking with context managers.
Who benefits: Applications needing to check connection state, developers implementing connection lifecycle management, applications using context managers for database connections
Impact: Enables explicit connection state checking, improves API clarity for connection management, ensures consistent behavior with context manager usageFixes #394
-
Parameter as Dictionary - Pyformat Support (#385)
What changed: Introduced support for both
qmark(?) andpyformat(%(name)s) parameter styles in SQL queries. Changed the defaultparamstylefrom"qmark"to"pyformat". Added newparameter_helper.pymodule with helper functions to parse, detect, and convert parameter styles. Updatedexecuteandexecutemanymethods to auto-detect and convert parameter styles as needed.
Who benefits: Developers preferring named parameters, applications migrating from other database libraries, users wanting more readable SQL queries with named placeholders
Impact: Improves query readability with named parameters, provides seamless compatibility with both parameter styles, reduces migration effort from other Python database driversFixes #20
-
Copilot Prompts for AI-Assisted Development (#393)
What changed: Added VS Code Copilot on-demand prompts in prompts to streamline developer workflows. Includes 4 prompts:
setup-dev-env.prompt.mdfor environment setup,build-ddbc.prompt.mdfor rebuilding C++ extensions,run-tests.prompt.mdfor running pytest, andcreate-pr.prompt.mdfor creating well-structured PRs. Features agent mode, cross-referenced prompts, team-specific branch naming, and platform-specific guidance.
Who benefits: New contributors setting up the development environment, maintainers building and testing changes, developers creating pull requests
Impact: Reduces onboarding friction for new contributors, provides consistent guidance for common development tasks, improves PR quality with standardized templates
Bug Fixes
-
FetchMany Ignores Batch Size with LOB Columns (#346)
What changed: Fixed
fetchmany(n)to respect the specified batch size when the result set contains LOB (Large Object) columns. Previously, the batch size parameter was ignored when LOB columns were present.
Who benefits: Applications fetching large result sets with LOB columns in batches, memory-constrained applications processing large text or binary data
Impact: Enables proper batch processing of LOB data, improves memory efficiency when handling large objects, ensures consistent behavior offetchmany()across all column typesFixes #345
-
Non-ASCII Path Resolution on Windows (#376)
What changed: Fixed path resolution for files with non-ASCII characters (e.g., Unicode, international characters) in Windows environments. Ensures proper handling of paths containing special characters in directory names or filenames.
Who benefits: Users with non-English usernames or directory paths, applications deployed in internationalized environments, developers working with files containing Unicode characters in paths
Impact: Enables driver usage in paths with international characters, resolves import and loading failures on localized Windows systems, improves cross-locale compatibility
CI/Infrastructure
-
SQL Server 2025 Test Support (#389)
What changed: Added support for testing against SQL Server 2025 across Windows, macOS, and Linux CI pipelines. Introduced new matrix configurations for SQL Server 2025 with Python 3.14 on Windows, added installation and setup scripts for SQL Server 2025 Express, and updated Docker commands to use matrix-provided SQL Server images on macOS and Linux. Enhanced test result publishing to include SQL Server version in run titles for better traceability.
Who benefits: Maintainers validating compatibility with upcoming SQL Server releases, contributors ensuring cross-version compatibility, users planning to upgrade to SQL Server 2025
Impact: Ensures driver is validated against SQL Server 2025 before GA, improves release confidence for new SQL Server versions, provides early detection of compatibility issues -
Forked PR Coverage Comment Workflow (#375)
What changed Implemented workflow_run solution for posting code coverage comments on pull requests from forked repositories. This enables coverage reporting for external contributors whose PRs originate from forks.
Who benefits: External contributors submitting PRs from forked repositories, maintainers reviewing community contributions, open source collaboration workflows
Impact: Provides visibility into code coverage for forked PRs, improves review process for external contributions, enhances community contribution experience
v1.1.0
Release Notes - Version 1.1.0
Enhancements
-
Thread-Safe Encoding/Decoding (#342)
What changed: Introduced re-entrant lock to protect encoding and decoding settings across all connection methods (
setencoding,setdecoding,getencoding,getdecoding). Enforced strict validation allowing onlyutf-16leandutf-16befor SQL_WCHAR types, explicitly rejectingutf-16with BOM due to byte order ambiguity. Added security validation to ensure encoding names contain only safe characters and reasonable lengths.
Who benefits: Multi-threaded applications with concurrent connections, applications processing Unicode data from SQL Server, security-conscious deployments preventing encoding-based attacks
Impact: Prevents race conditions in encoding/decoding configuration, eliminates encoding-related data corruption in concurrent scenarios, and blocks potential denial-of-service attacks through malicious encoding specificationsFixes #250
-
Comprehensive Linting and Code Quality (#331)
What changed: Added GitHub Actions workflow for automated Python (flake8) and C++ (clang-format) linting. Introduced
.flake8and updated.clang-formatconfiguration files. Applied comprehensive formatting to all Python and C++ files following project style guidelines.
Who benefits: All contributors, code reviewers, maintainers ensuring consistent code quality
Impact: Enforces consistent code style across the codebase, catches style violations early in CI, improves code readability and maintainability.Fixes #22
Bug Fixes
-
Segmentation Fault on Linux During Garbage Collection (#361)
What changed: Fixed critical double-free issue in
SqlHandle::free()by preventing handle cleanup during Python interpreter shutdown for both statement (SQL_HANDLE_STMT) and database connection (SQL_HANDLE_DBC) handles
Who benefits: All Linux users, long-running applications with frequent connection cycles, applications experiencing crashes during shutdown
Impact: Eliminates segmentation faults during Python garbage collection, improves application stability and reliability on Linux platformsFixes #341
-
Connection Pooling Isolation Level Leak (#343)
What changed: Transaction isolation level now explicitly reset to
READ COMMITTEDwhen pooled connections are reused. Added logic toConnection::reset()method to prevent isolation level settings from leaking between connection usages, addressing limitation ofSQL_ATTR_RESET_CONNECTIONwhich does not reset isolation level.
Who benefits: Applications using connection pooling with different isolation level requirements, multi-tenant applications sharing connection pools, systems requiring predictable transaction isolation behavior
Impact: Prevents unexpected transaction behavior from inherited isolation levels, ensures consistent database state across pooled connection reuse, eliminates hard-to-debug isolation level conflictsFixes #337
-
UTF-16 String Decoding from SQL Server (#340)
What changed: Enhanced getinfo()method to properly decode UTF-16LE strings from SQL Server with fallback to UTF-8 encoding. Added comprehensive test coverage for string encoding validation.
Who benefits: Applications retrieving driver or connection metadata, systems processing non-ASCII characters in connection info, developers troubleshooting encoding issues
Impact: Eliminates data corruption when retrieving string metadata from SQL Server, ensures proper character encoding across all platforms, prevents silent encoding failuresFixes #318
-
Improved UTF-16/UTF-32 Conversion Performance (#365)
What changed: Replaced deprecated
std::wstring_convertwith optimized direct UTF-16 to UTF-32 conversion. Implemented explicit surrogate pair handling, removed intermediate buffers, and streamlined conversion logic for better performance and branch prediction. Added robust handling for invalid surrogate pairs and code points.
Who benefits: All macOS/Linux users processing Unicode data, applications handling characters outside Basic Multilingual Plane (BMP), performance-sensitive workloads
Impact: Greater than 10x performance improvement for UTF-8/16 conversions, eliminates deprecation warnings from modern compilers, improves robustness with malformed Unicode input -
Connection String Escaping Rules (#364)
What changed: Fixed parser and builder to correctly handle ODBC connection string curly brace escaping rules. Only closing braces inside curlies require escaping (e.g.,
{pw}}d}for literalpw}d). Opening braces don't require escaping when wrapped in curlies.
Who benefits: Users with special characters in passwords or connection string values, applications migrating from other database drivers, developers troubleshooting connection string issues
Impact: Enables correct handling of passwords and values containing curly braces, aligns with official ODBC specification (MS-ODBCSTR), prevents connection failures due to incorrect escapingFixes #363
-
IntegrityError Detection with OUTPUT Clause (#338)
What changed: Fixed error handling in
fetchall()method to properly check and handle errors fromDDBCSQLFetchAll. Added explicitcheck_errorcall after fetch operation.
Who benefits: Applications using INSERT statements with OUTPUT clause and multiple VALUES entries, developers expecting proper IntegrityError exceptions on constraint violations
Impact: Ensures errors are properly detected and raised during batch inserts with OUTPUT clause, improves error handling reliability and debugging experienceFixes #333
-
Query Timeout During Cursor Creation (#348)
What changed: Refactored timeout handling by introducing
_set_timeout()method to set query timeout attribute during cursor initialization rather than on eachexecute()call. Centralizes timeout management in cursor lifecycle following performance best practices.
Who benefits: Applications with strict query timeout requirements, performance-sensitive workloads executing many queries, developers experiencing timeout-related issues
Impact: Improves consistency of timeout application, reduces overhead by setting timeout once during cursor creation, ensures timeout is active for entire cursor lifecycleFixes #291
-
NULL Parameter Array Handling (#332)
What changed: Added logic to
BindParameterArrayinddbc_bindings.cppto handleSQL_C_DEFAULTtype for arrays containing only NULL values. Validates that all values are NULL and throws exception if any non-NULL value is detected. Added comprehensive test coverage.
Who benefits: Applications usingexecutemany()with NULL values, batch insert operations with nullable columns, data migration scenarios
Impact: Enables correct insertion of rows with all NULL values viaexecutemany(), prevents type inference errors, improves batch operation reliability -
Sensitive Parameter Filtering (#368)
What changed: Updated
remove_sensitive_paramsfunction in authentication module to excludeTrusted_Connectioninstead ofEncryptandTrustServerCertificatewhen filtering connection parameters
Who benefits: Applications using integrated authentication, security auditing systems, compliance frameworks tracking authentication methods
Impact: Correctly filters sensitive authentication parameters while preserving encryption settings, improves security parameter handling accuracyFixes #362
-
CMake Build Warnings and Errors (#353)
What changed: Enforced CMake warnings and deprecated features as errors (
CMAKE_ERROR_DEPRECATED,CMAKE_WARN_DEPRECATED). Added strict compiler flags for GCC/Clang (-Werror,-Wattributes,-Wint-to-pointer-cast). Suppressed visibility attribute warnings forParamInfostruct on Linux. Improved type casting safety in parameter binding usingreinterpret_castandstatic_cast.
Who benefits: Build system maintainers, developers contributing C++ code, CI/CD pipelines ensuring code quality
Impact: Catches deprecated API usage and build warnings early, improves code safety through strict type casting, ensures cross-platform build quality
v1.0.0 - General Availability Release
Release Notes - Version 1.0.0
We are thrilled to announce the General Availability (GA) of mssql-python, Microsoft’s official Python driver for SQL Server, Azure SQL, and SQL databases in Fabric. This milestone makes the driver production-ready for enterprise workloads.
Features
Python 3.14 support
Ensuring compatibility with the latest Python ecosystem so developers can confidently adopt new language features.
GA stability
Hardened release engineering, expanded test coverage, and compliance checks for enterprise readiness. This includes:
- Robust CI/CD pipelines for consistent builds.
- Comprehensive unit and integration tests across platforms.
- Security and compliance validation aligned with Microsoft standards.
v0.14.0-preview
Release Notes - Version 0.14.0
Features
-
Major Fetch Performance Optimizations (#320, #304)
What changed: Implemented direct UTF-16 decoding for NVARCHAR on Linux/macOS, direct Python C API usage for numeric types, batch row allocation, function pointer dispatch table (major reduction in type dispatch overhead), and cached output converters/column maps
Who benefits: All applications fetching result sets, analytics workloads processing large datasets, and performance-sensitive applications
Impact: Faster for large result sets (100K+ rows), Significant improvement for very large result sets (~1.2M rows). -
Connection String Parser and Validation (#307)
What changed: Implemented comprehensive ODBC connection string parser per MS-ODBCSTR specification with parameter allowlist validation, synonym normalization (e.g.,
host→Server,user→UID), and clear error messages for malformed strings
Who benefits: All users connecting to SQL Server, developers troubleshooting connection string issues, and applications migrating from other database systems
Impact: Catches connection string errors early with actionable messages and prevents silent failures.
Breaking change: Unknown parameters now raiseConnectionStringParseErrorinstead of being silently ignoredFixes #306
-
Enhanced DECIMAL Precision (#287)
What changed: Increased precision support from 15 to 38 digits (SQL Server maximum) with proper binary representation for high-precision decimals via SQL_NUMERIC_STRUCT
Who benefits: Financial applications requiring maximum precision, scientific/engineering applications with high-precision calculations, and data migration scenarios
Impact: Eliminates precision loss for large decimal values and ensures full compliance with SQL Server's DECIMAL(38, scale) capabilities -
Comprehensive Logging Framework (#312)
What changed: Unified Python-C++ logging bridge with performance-optimized implementation, new
setup_logging()API for DEBUG-level diagnostic logging, ~150 strategic LOG statements across C++ layer, and zero overhead when disabled via atomic level checks
Who benefits: Developers troubleshooting connection or query issues, support teams diagnosing production problems, and contributors debugging driver behavior
Impact: Enables detailed diagnostic logging for issue investigation with minimal performance impact when disabled (default state) -
Connection Attribute Control (
set_attr) (#177)What changed: Added
Connection.set_attr()method for configuring ODBC connection attributes including transaction isolation levels, timeouts, access modes, and other connection options with pyodbc-compatible API
Who benefits: Applications requiring fine-grained connection control, developers migrating from pyodbc, and systems needing custom isolation levels or timeout configurations
Impact: Provides full control over connection behavior and enables advanced scenarios while improving pyodbc compatibility -
XML Data Type Support (#293)
What changed: Added comprehensive support for SQL Server
XMLdata type with proper handling for insertion, retrieval, batching, and streaming of XML data
Who benefits: Applications processing structured or semi-structured XML data, systems integrating with XML-based APIs, and developers using SQL Server's native XML features
Impact: Enables native XML storage and retrieval with efficient streaming for large documents, supporting all CRUD operations -
DECIMAL Scientific Notation Support (#313)
What changed: Improved handling of decimal values in scientific notation when converting to SQL VARCHAR types, using fixed-point formatting to prevent SQL Server conversion errors
Who benefits: Applications working with very large or very small decimal values that may be represented in scientific notation
Impact: Prevents conversion errors and ensures consistent decimal formatting across all value ranges
Bug Fixes
-
Access Token Buffer Management (#323)
What changed: Refactored access token handling from static vectors to instance-level buffers in Connection class, improving memory safety and encapsulation for Microsoft Entra ID authentication
Who benefits: Applications using Microsoft Entra ID (Azure AD) authentication, multi-threaded applications with concurrent connections, and users experiencing intermittent authentication failures
Impact: Fixes authentication token corruption in concurrent scenarios and enhances thread safety for connection attributes -
Decimal Type Inference for executemany (#322)
What changed: Improved
_compute_column_typelogic to better handleDecimalvalues with proper sample value selection for type inference, preferring longer/higher-precision values
Who benefits: Applications using batch inserts with Decimal values, financial systems using executemany for performance, and developers encountering type inference errors
Impact: Eliminates exceptions during batch Decimal inserts and improves reliability for executemany operationsFixes #272
This release delivers significant performance improvements, new data type support, enhanced security, and a robust logging framework while maintaining backward compatibility (except for connection string validation). Much faster fetch performance gains and expanded SQL Server compatibility make this a compelling upgrade for production deployments.
Breaking Changes
ConnectionStringParseError instead of being silently ignored. Reserved parameters (Driver, APP) cannot be set by users. Review connection strings for typos or unknown parameters before upgrading.
Migration Notes
- Connection string errors will now be caught early with clear error messages
- Remove any attempts to set
DriverorAPPparameters (managed by the driver) - Example:
ConnectionStringParseError: Unknown keyword 'Servr'→ Fix typo toServer
v0.13.1-preview
Release Notes - Version 0.13.1
Bug Fixes
-
Access Token Issue (EntraID Auth) (#285)
What changed: Fixed authentication token handling to resolve connection failures with Microsoft Entra ID
Who benefits: Applications using Microsoft Entra ID (formerly Azure Active Directory) authentication
Impact: Restored reliable authentication for EntraID-based connectionsFixes #286
-
Timezone Preservation in DATETIMEOFFSET (#281)
What changed: Removed forced UTC conversion when reading
datetimeoffsetvalues, preserving original timezone information in Pythondatetimeobjects
Who benefits: Applications working with timezone-aware data across multiple time zones
Impact: Accurate timezone representation without data loss from UTC conversionFixes #213
-
Connection Pooling Resource Cleanup (#268)
What changed: Added shutdown tracking to prevent multiple pool cleanup operations and resource leaks, ensuring cleanup executes only once
Who benefits: Applications using connection pooling, especially long-running services
Impact: Improved pool shutdown reliability and prevention of resource leaksFixes #267
-
UUID String Mapping Removal (#274)
What changed: Removed automatic string-to-UUID conversion logic in parameter binding, treating UUID strings as regular strings
Who benefits: Applications passing UUID strings that should be handled as text rather than binary GUIDs
Impact: More predictable string parameter handling without automatic type coercionFixes #241
Infrastructure
-
Enhanced Pooling Test Coverage (#268)
What changed: Added comprehensive test suite for connection pooling with 421 new test lines and testing utilities for reliable test isolation
Who benefits: Contributors and maintainers
Impact: Improved quality assurance for connection pooling functionality
This hotfix release addresses critical authentication, timezone handling, and resource management issues discovered in v0.13.0, ensuring production stability for enterprise deployments.
v0.13.0-preview
Release Notes - Version 0.13.0
Features
-
Enhanced executemany() Support for Complex Data Types (#245, #260)
What changed: Added full support for UNIQUEIDENTIFIER and DATETIMEOFFSET in batch operations with proper type inference and NULL handling
Who benefits: Applications performing bulk inserts with UUIDs and timezone-aware datetime values
Impact: Seamless batch operations with complex data types, improving performance for bulk data processing -
Streaming Support in executemany() (#251)
What changed: Implemented robust handling of large values (NVARCHAR/VARCHAR/VARBINARY(MAX)) with automatic Data-At-Execution (DAE) detection and fallback
Who benefits: Applications working with large text or binary data in batch operations
Impact: Efficient streaming inserts and fetches for massive datasets without memory constraints
Improvements
-
Enhanced Cursor Reliability (#263)
What changed: Improved consistency and correctness of
cursor.rowcountattribute across fetchone(), fetchmany(), and fetchall() operations, including empty result sets
Who benefits: Applications relying on accurate row count information for business logic
Impact: More reliable rowcount reporting for all cursor operations and fetch scenarios
Bug Fixes
-
Type Inference Bug Fix (#252)
What changed: Resolved type inference issues in executemany() by refactoring sample value selection logic
Who benefits: Applications using executemany() with diverse data types
Impact: More accurate automatic type detection in batch operations -
Memory Leak and Security Fix (#264)
What changed: Replaced static token buffer with stack-allocated buffer to prevent memory leaks and ensure sensitive data is securely erased after use
Who benefits: Security-conscious applications and long-running services
Impact: Improved memory management and enhanced security for sensitive connection data -
Resource Cleanup on Python Shutdown (#255)
What changed: Added proper cleanup mechanisms to prevent segmentation faults during Python interpreter shutdown
Who benefits: All applications, especially those with complex shutdown sequences
Impact: Enhanced stability and elimination of shutdown-related crashes
Infrastructure
-
Testing Enhancements (#245, #260, #251, #263)
What changed: Added comprehensive test coverage for UUID/GUID, DATETIMEOFFSET, streaming operations, and cursor.rowcount behavior
Who benefits: Contributors and maintainers
Impact: Improved code quality assurance and regression prevention
This release focuses on enhancing batch operation capabilities with complex data types and streaming support, while addressing critical stability and security issues to ensure robust production deployments.
v0.12.0-preview
Release Notes - Version 0.12.0
Features
-
Complex Data Type Support (#243, #236, #241, #213)
What changed: Added native support for DATETIMEOFFSET and UNIQUEIDENTIFIER data types with full round-trip handling
Who benefits: Applications working with timezone-aware dates and UUID-based identifiers
Impact: Seamless integration with Python'sdatetime(timezone-aware) anduuid.UUIDobjects -
Enhanced Financial Data Operations (#246)
What changed: Extended MONEY and SMALLMONEY support to
executemanyoperations with proper NULL handling and decimal conversion
Who benefits: Financial applications using batch operations for monetary data
Impact: Improved performance and reliability for bulk financial data processing -
Comprehensive Code Coverage Integration (#238)
What changed: Implemented unified Python and C++ code coverage reporting with automated build instrumentation and pipeline integration
Who benefits: Development teams and maintainers ensuring code quality
Impact: Enhanced testing visibility and quality assurance across the entire codebase
Improvements
-
Enhanced Database Metadata API (#249)
What changed: Refactored
getinfo()API with improved ODBC metadata retrieval, consistent type handling, and expanded constant exposure
Who benefits: Applications requiring detailed database and driver metadata
Impact: More reliable and comprehensive access to database information with better error handling
Bug Fixes
-
DateTime Parsing Optimization (#235)
What changed: Removed aggressive datetime parsing to prevent incorrect type conversions and improve data integrity
Who benefits: Applications handling diverse datetime formats and string data
Impact: More accurate data type handling and reduced unexpected parsing behaviorThanks to @arvis108 for this contribution!
Infrastructure
-
Development Workflow Enhancements (#259, #238)
What changed: Added CodeQL analysis integration and optimized PR automation with improved labeling and coverage reporting
Who benefits: Contributors and maintainers
Impact: Enhanced security analysis and streamlined development processes
This release focuses on expanding complex data type support, improving financial data operations, and strengthening development infrastructure while maintaining backward compatibility.
v0.11.0-preview
Release Notes - Version 0.11.0
Features
-
Database Metadata & Catalog APIs (#201, #192)
What changed: Added comprehensive
getInfo()method for database information retrieval and extensive metadata APIs includinggetTypeInfo(),procedures(),foreignKeys(),primaryKeys(),columns(),statistics(),rowIdColumns()and,rowVerColumns().
Who benefits: Developers building database introspection tools and applications requiring schema discovery
Impact: Complete database metadata access and improved schema management capabilities -
Advanced Parameter Management (#192)
What changed: Implemented
setinputsizes()method with SQL type constants export and enhanced parameter validation through theSQLTypesclass
Who benefits: Applications requiring precise parameter type control and validation
Impact: Better performance and type safety in parameterized queries -
Connection-Level Execute & BatchExecute (#189)
What changed: Added
execute()&batchexecute()method directly to Connection class for simplified & faster query execution
Who benefits: Developers seeking streamlined database operations without explicit cursor management
Impact: More convenient & fast API for simple query operations -
Output Data Conversion System (#190)
What changed: Introduced flexible output converter system with
add_output_converter(),get_output_converter(),remove_output_converter(), andclear_output_converters()methods
Who benefits: Applications requiring custom data type transformations during result fetching
Impact: Customizable data processing pipeline for specialized use cases -
Global Configuration APIs (#188, #187)
What changed: Added
getDecimalSeperator(),setDecimalSeperator()global functions and lowercase support for global variables
Who benefits: Applications requiring locale-specific decimal formatting and configuration management
Impact: Enhanced internationalization and global configuration control -
Connection Timeout Control & Searchescape (#191)
What changed: Added timeout & searchescape attribute for connection-level timeout & escape management
Who benefits: Applications requiring fine-grained connection timeout & escaping control
Impact: Better connection reliability and timeout handling
Improvements
-
Large Binary Data Streaming (#232, #231)
What changed: Enhanced VARBINARY(MAX) streaming support in all fetch operations with improved chunked retrieval and LOB handling
Who benefits: Applications processing large binary objects like images, documents, and media files
Impact: Efficient memory usage and reliable handling of large binary data -
Money Data Type Support (#230)
What changed: Added comprehensive support for SQL Server MONEY and SMALLMONEY types with proper boundary value handling and decimal conversion
Who benefits: Financial applications requiring precise monetary calculations
Impact: Native support for SQL Server financial data types with accurate precision -
VARCHAR(MAX) Fetch Streaming (#219)
What changed: Implemented streaming support for large text columns in
fetchone()operations
Who benefits: Applications handling large text content exceeding standard buffer limits
Impact: Improved memory efficiency for large text data retrieval
Bug Fixes
-
Parameter Type Inference (#215)
What changed: Improved parameter type inference for batch operations with accurate integer range-based type selection
Who benefits: Applications usingexecutemanywith varied data ranges
Impact: More accurate SQL type mapping and better performance in batch operations
This release significantly enhances database introspection capabilities, streaming performance for large data, and provides comprehensive metadata access while maintaining backward compatibility.