We have integrated a new option to force serialized connects
on a per Zope connection object basis. This can be used to work around
bugs in ODBC drivers which are not fully thread-safe in the connect
phase. The option is disabled per default.
Added pip install compatibility to mxODBC Zope DA by
creating prebuilt archives and uploading a web installer to PyPI. This
can be useful if you are installing Zope or Plone using a
requirements.txt type approach, e.g. using
Reenabled returning cursor.rowcount for FreeTDS >= 0.91. In previous
versions, FreeTDS could return wrong data for .rowcount when using
Removed exists() built-in from mxODBC Zope DA's implicit addition of new built-ins via mxTools.
This resolves a hard to track bug where the new built-in could
potentially override the TAL python:exists function (in e.g.
tal:condition="exists:something"). See this Products.CMFEditions fix
for an example where the problem surfaced. This is a bug in TAL (it
shouldn't give preference to built-ins over its own helpers), but we're
providing the fix as easy work-around.
Fully compatible with Zope External Methods and Zope's built-in transaction mechanism:
use Connection Objects in Python modules set up as Zope External
Methods to all the features of the mxODBC Zope DA from Python and even
tap into the low-level features of mxODBC within Zope's transaction
Full support of Stored Procedures: when using Zope External
Methods, you have full access to SQL stored procedures, which allows
direct integration with external database APIs.
ODBC driver compatibility updated. By upgrading to the latest
mxODBC 3.3 release, we are bringing all compatibility enhancements
added to mxODBC 3.3 to the mxODBC Zope DA. This includes updated support
for Oracle, MS SQL Server, Sybase ASE, IBM DB2, PostgreSQL and MySQL. See the mxODBC 3.3.0 and 3.3.1 release announcements for full details.
ODBC manager compatibility updated. Built against unixODBC
2.3.2, iODBC 3.52.8, DataDirect 7.1.2 on Unix. Built against the MS
Windows Manager ODBC on Windows. Built against iODBC 3.52.8 on Mac OS X.
Added a work-around for a regression in Python 2.7.4
that results in a segfault when exiting Zope/Plone after loading the mxODBC Zope DA.
The regression will be fixed in Python 2.7.5, but we don't want to
expose our users to segfaults, so added a work-around.
Added a new connection property "ODBC cursor type" which allows easily adjusting the ODBC cursor type to be used for mxODBC Zope DA connection objects.
This new property allows enhancing the performance of the
adapter significantly, when using it with MS SQL Server or IBM DB2
database backends. Please see below for details.
MS SQL Server performance can now be much enhanced,
and increased to levels beyond that of previous mxODBC Zope DA
releases, by adjusting the connection ODBC cursor type to "Forward only
The performance increase compared to mxODBC Zope DA 2.1.0 is enormous: from 2-3x faster executes/fetches for average queries, up to 300x faster for simple cases.
In mxODBC Zope DA 2.2, we will switch to using "Forward only cursors" per default for all database backends.
IBM DB2 can benefit from the same performance enhancements using "Forward only cursors".
The effect is a lot smaller, but still noticeable: up to 2x faster executes/fetches with forward-only cursors, compared to mxODBC Zope DA 2.1.0.
Added documentation to explain the different cursor types,
compatibility with different database backends and effects on
performance. The Zope DA documentation comes with high level
documentation regarding the cursor types. The included mxODBC
documentation has the technical details.
Fixed the installation instructions to be more generic and easily
adaptable to Plone and Zope installations on both Windows and Unix