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
Enabled creating wheels from the prebuilt archives, which
helps when running pip with the wheels package installed. pip then tries
to build wheels during installation and caches them for future reuse.
Reenabled returning cursor.rowcount for FreeTDS >= 0.91. In previous
versions, FreeTDS could return wrong data for .rowcount when using
SELECTs.
Fixes:
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
mechanism.
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.
Driver Compatibility Enhancements:
ODBC driver compatibility updated. Upgraded to the latest
mxODBC 3.3.2 release, adding compatibility enhancements
for MS SQL Server, SAP Sybase ASE and stored procedure output parameters. See the mxODBC 3.3.0 and 3.3.2 release announcements for full details.
Added documentation on how to use External Methods to access and use the mxODBC Zope DA connection objects.
Added support for input, output and input/output parameters to the .callproc() method for calling stored procedures.
Added documentation on how to call stored procedures from Plone / Zope.
ThreadLock egg distribution provided by eGenix to avoid having a compiler installed for the installation buildout run. Please see our ThreadLock distribution release announcement for details.
Fast Cursor Types
Switched to forward-only cursor types for all database backends, since this provides a much better performance for MS SQL Server and IBM DB2 drivers.
Updated mxODBC API
Access all new features from the updated mxODBC 3.3 API via the DatabaseConnect.connection attribute or by importing the mxODBC API directly. Please see the mxODBC 3.3.0 and 3.3.1 release announcements for full details.
Driver Compatibility Enhancements:
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.
Driver Compatibility:
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
cursors".
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.
Fixes:
Fixed the installation instructions to be more generic and easily
adaptable to Plone and Zope installations on both Windows and Unix
platforms.
Simplified zc.buildout deployment as used in Plone 4.x and the latest Zope 2.13 releases.
Readded compatibility with all recent Plone versions.
Enhanced ODBC Driver Support
We have also updated the integrated mxODBC Python Extension to the latest 3.2 release, which includes a number of important new features and ODBC driver compatibility enhancements:
Added support for the DataDirect ODBC manager on Linux which is used by several data warehouse database backends
Added MS SQL Server ODBC Driver 1.0 for Linux support
Added Teradata support
Added Netezza support
Switched to unixODBC 2.3.1+ API for better 64-bit support on Linux
Enhanced Oracle Instance Client support
Enhanced IBM DB2 driver support
Enhanced Sybase ASE driver support
Enhanced FreeTDS ODBC driver support
Enhanced PostgreSQL driver support
Enhanced generic support for many other ODBC compatible databases
Please see the mxODBC 3.2 release announcement for a complete set of changes available in the underlying mxODBC 3.2 package used in mxODBC Zope/Plone DA 2.1.
Minor other changes
Error screens have been changed to plain text after the recent hot fix which disabled showing HTML in error messages.
Updated the integrated mxODBC Python Extension to the latest 3.1.1 release, which includes a number of important workarounds for these ODBC drivers:
Oracle 10gR1 and 10gR2
Oracle 11gR1 and 11gR2
Teradata 13
Netezza
Added instructions on how to install mxODBC Zope DA 2.0 with Plone 4.1 and Zope 2.13 - even though this combination is not officially supported by the mxODBC Zope DA 2.0 series.
Backported the mxODBC Zope DA product to
also run on Zope 2.10, 2.11 as well as Python 2.4. This was done to
meet popular demand, since Plone 3 still uses these Zope and Python
versions.
The mxODBC Zope DA is now fully compatible with all recent Plone versions, including the upcoming Plone 4.0 release.
Includes mxODBC 3.1 with
updated support for many current ODBC drivers, giving you more
portability and features for a wider range of database backends.
Mac OS X 10.6 (Snow Leopard) support.
Python 2.5 and 2.6 support.
Zope 2.12support.
Zero maintenance support to automatically reconnect the Zope connection after a network or database problem.
More flexible Unicode support with options to work with pure Unicode, plain strings or mixed setups - even for databases that don't support Unicode
Automatic and transparent text encoding and decoding.
More flexible date/time support including options to work with Python datetime objects, mxDateTime, strings or tuples
New decimal support to have the Zope DA return decimal column values using Python's decimal objects.
Fully eggified to simplify easy_install and zc.buildout based installation.