Change Log¶
All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.
1.14.0 - 2021-03-25¶
Fixed¶
Replaced travis-ci with Github Actions.
Replaced custom Docker-based testing infrastructure with tox.
Fixed translation of SQL Server errors to Python exceptions for all errors with severity > 10. https://github.com/zillow/ctds/issues/84
1.13.0 - 2020-11-12¶
Added¶
Offical support for Python 3.9.
Expose
ctds.Row
type so that it can be used as a type annotation.Add
description
attribute to rowlists and rows.Add
ctds.Row.dict()
method.
Fixed¶
Cache
cursor.description
rather than creating a new instance every time.
1.12.0 - 2020-03-07¶
Fixed¶
Fixed Python -> SQL type conversion to consider client TDS version when choosing SQL type. https://github.com/zillow/ctds/issues/68.
Added Sphinx extension to auto-generate the
.nojekyll
file required by Github pages.Consolidate coverage output to a single directory.
1.11.0 - 2019-11-14¶
Added¶
Official support for Python3.8.
Automate Python egg publishing to pypi.
Automate documentation publishing.
Fixed¶
Fix handling of
IDENTITY
columns inctds.Connection.bulk_insert()
. https://github.com/zillow/ctds/issues/59.
1.10.1 - 2019-06-27¶
Fixed¶
Properly handle errors in the
ctds.pool.ConnectionPool.connection
context manager.
1.10.0 - 2019-04-15¶
Added¶
Add FreeTDS 1.1 to test matrix.
Fixed¶
Preserve microsecond precision of TIME and DATETIME2 SQL types when converting to Python (and supported by FreeTDS).
Fix improper conversion of empty strings to
NULL
inctds.Connection.bulk_insert()
. https://github.com/zillow/ctds/issues/35.
1.9.0 - 2018-11-05¶
Added¶
Add support for passing sequences of
dict
values toctds.Connection.bulk_insert
. The mapping key is used to determine the column order based on the column info available afterbcp_init
. https://github.com/zillow/ctds/issues/38
Fixed¶
Fix truncation of strings containing multi-byte sequences when not using
sp_executesql
.Fix
ctds.Cursor.executemany()
truncating data for integer types. https://github.com/zillow/ctds/issues/43.
1.8.0 - 2018-09-07¶
Added¶
Official support for Python 3.7.
Add optional
hostname
parameter toctds.connect()
. https://github.com/zillow/ctds/issues/20.Add optional
ntlmv2
parameter toctds.connect()
. https://github.com/zillow/ctds/issues/27.
Fixed¶
Retry on SQL Server unittest database setup failures due to race conditions when starting SQL Server. This should make the unit tests much more reliable.
Add
python_requires
specifier to setup.py.Properly handle decimal.Decimal values specified in scientific notation.
Properly set autocommit in
ctds.connect()
, even whenansi_defaults
isFalse
.Download FreeTDS packages from HTTP URL for compatibility with Travis CI builds (FTP no longer works due to firewall issues.)
Fix OS X Travis CI build.
Improve SQL Server -> DB API 2.0 error mappings. https://github.com/zillow/ctds/issues/12
Remove Python 2.6 from Appveyor CI due to lack of support.
Fix
ctds.Cursor.executemany()
truncating data for variable width types. https://github.com/zillow/ctds/issues/25.
1.7.0 - 2018-01-24¶
Added¶
Add rich comparison support and
repr
toctds.Parameter
.
Fixed¶
Compiler warnings on older version of gcc.
Debug assert when passing invalid parameters to
ctds.Cursor.execute*()
.
1.6.0 - 2017-11-17¶
Added¶
Documentation improvements.
Add an optional paramstyle argument to
ctds.connect
, with support for thenamed
paramstyle.Add valgrind support for memory leak detection and integrate it into the CI build process (Travis only).
Add optional
read_only
argument toctds.connect
for indication of read-only intent. Note: Requires as yet unreleased FreeTDS support.
Fixed¶
Pass a BINARY 0x00 byte instead of an empty string for (N)VARCHAR arguments. This is to work around the inability of the db-lib API to pass empty string parameters via RPC.
1.5.0 - 2017-10-16¶
Added¶
Windows support, with Appveyor continuous integration.
Python egg-related metadata checks.
Moved source code under ./src directory, per best practices.
1.4.1 - 2017-09-29¶
Fixed¶
Only clear
Connection.messages
on calls toexecute
,executemany
orcallproc
. Add support for raising multiple non-zero severity messages as warnings.
1.4.0 - 2017-09-13¶
Fixed¶
Changed the implementation of
Cursor.execute
to only perform parameter substitution if parameters are provided. When no parameters are passed, the SQL format string is treated as raw SQL.
Added¶
Connection.messages
read-only property.Improved code coverage.
1.3.2 - 2017-07-25¶
Fixed¶
Register RowListType to support pickling/unpickling.
Added¶
Convert test framework to use Docker-based containers for SQL Server and for each supported combination of Python and FreeTDS.
Integrate codecov support for code coverage tracking.
Move documentation hosting to GitHub pages.
Include change log in generated documentation.
1.3.1 - 2017-05-31¶
Fixed¶
Fix connection failures when connecting to high port numbers on OS X.
Fix unit test infrastructure to respect configured port number.
Work around inconsistencies between FreeTDS versions in the bcp_getl/ BCP_SETL interfaces.
1.3.0 - 2017-03-15¶
Fixed¶
Replace usage of the deprecated
PyErr_Warn
API withPyErr_WarnEx
. This will allow clients to indicate that warnings should be raised as exceptions.
1.2.3 - 2017-03-13¶
Fixed¶
Improve
repr
implementation for SQL type wrapper objects.Fixed informational (warning) message reporting where many SQL Server reported messages were not reported as warnings due if not returned to the client promptly enough.
1.2.0 - 2016-12-27¶
Fixed¶
Documentation improvements around (N)VARCHAR handling.
Added¶
ctds.pool.ConnectionPool
class.Support the
in
keyword for resultset rows.Add code coverage support for Python code.
Improve code coverage support for c code.
1.1.0 - 2016-11-14¶
Added¶
ctds.SqlNVarChar
type.Ignore the replacement parameter markers inside of string literals in SQL statements passed to
ctds.Cursor.execute()
andctds.Cursor.executemany()
.
Fixed¶
Work around a Memory leak in FreeTDS when specifying the database at connection time.
Fixed failure in
ctds.Cursor.execute()
andctds.Cursor.executemany()
when passing a SQL statement longer than 4000 characters.
1.0.8 - 2016-08-17¶
Fixed¶
Configure connections to use UTF-16 when supported (i.e. FreeTDS 1.00+). Don’t replace codepoints outside of the UCS-2 range if the connection is using UTF-16 as it is no longer necessary and causes data loss.
1.0.7 - 2016-08-15¶
Fixed¶
Only use strict compile options for debug/development builds. Allow the client (e.g. pip) to specify the desired options when installing as an egg.
1.0.6 - 2016-08-15¶
Fixed¶
Compile under the c90 standard for better future portability.
Don’t overwrite more useful error messages with the useless “The statement has been terminated.” error.
Added¶
Minor documentation improvements.
1.0.5 - 2016-05-23¶
Fixed¶
Fix the
ctds.Connection.timeout
property to raise an appropriate error when the option is supported, but the set fails.
1.0.4 - 2016-05-19¶
1.0.3 - 2016-03-31¶
Fixed¶
Fix execute() and executemany() to work with older versions of FreeTDS (prior to 0.92.405). Format the SQL command manually, instead of using sp_executesql, since older versions of FreeTDS don’t seem to support passing NVARCHAR arguments to remote procedure calls.
Added¶
Transaction documentation
Bulk insert documentation