DBD::ODBC 1.27 is winging its way to CPAN now. Version 1.27 combines all
the 1.26 development releases and is a significant release as DBD::ODBC
is now entirely ODBC 3.0 and requires an ODBC Driver Manager for any
ODBC 2.0 drivers. Many thanks to everyone who has contributed. The
changes are listed below.
Martin
=head2 Changes in DBD::ODBC 1.26_4 December 14, 2010
Fixed bug highlighted by investigation into rt 62033 where the
active flag was sometimes not set on the statement after
SQLMoreResults indicates a result-set exists.
Fix rt63550 reported by John Corcoran where if a do method call
fails the SQL C<Statement> is not available in an error handler as
we never created a DBI statement in the first place. Added a note
to "do" deviations pod.
Minor fix to head at wrong level in the pod.
Fix a possible snprintf buffer overflow in GetTypeInfo when
the type is specified and it is negative.
=head2 Changes in DBD::ODBC 1.26_3 November 18, 2010
Fixed rt 63108. The change to column binding in 1.24_2 was not
complete and causes bound columns to be rebound on each execute
wasting time and leaking memory. Found, diagnosed and proposed fix
by Steve Bentley.
=head2 Changes in DBD::ODBC 1.26_2 November 9, 2010
Fixed bug found by frew where an snprintf can overflow when binding
a lot of parameters.
=head2 Changes in DBD::ODBC 1.26_1 October 24, 2010
There are over 200 block changes in the source code for this release
from the previous one (see below). If you are using DBD::ODBC in
production you should not upgrade without testing this release first
as it introduces a lot of internal changes. DBD::ODBC has now gone
entirely ODBC 3 and relies on an ODBC Driver Manager to map calls
to ODBC 2.0 drivers (why are you still using ODBC 2.0 drivers?).
From now on DBD::ODBC needs to be linked with an ODBC Driver Manager
and I recommend unixODBC on UNIX and the MS ODBC Driver Manager
on Windows. There are really good reasons for this but mainly it
is because an ODBC Driver Manager will map ODBC 2.0 calls to an
ODBC 3.0 driver and vice versa and handle UNICODE transparently.
Bumped Test::Simple requirement up to 0.90 so we can use done_testing
and note.
Bump Perl requirement to 5.8 as per DBI.
Workaround a bug in mdbtools which fails to set the out connection
string in a SQLDriverConnect call. This can lead to:
Fixed panic: sv_setpvn called with negative strlen at
blib/lib/DBD/ODBC.pm line 107.
Added rt_61370.t for rt 61370.
Removed last remaining sprintf calls and replaced with snprintf.
Changed the point at which DBD::ODBC switches from VARCHAR to
LONGVARCHAR or WVARCHAR to WLONGVARCHAR when SQLDesribeParam fails. It
was 4000 and is now 2000 for unicode builds. Works around a daft issue
in the MS SQL Server driver which will not allow 'x' x 2001 converted to
wide characters to be inserted into a varchar(8000).
Minor change to Makefile.PL to print out found libs for iODBC and
unixODBC.
Added some FAQs for problems with iODBC and a recent bug in DBI.
Added FAQ on my_snprintf problem.
Fixed some pod errors in FAQ document.
Fixed warning on 64 bit Strawberry Perl when compiling dbdimp.c for
cast from ptr to UDWORD.
Moved to_do items from Changes to TO_DO.
Reformatted this file to save Jens work.
Changed calls to SQLTransact (ODBC 2.0) to SQLEndTran (ODBC 3.0).
There really shouldn't be any ODBC 2.0 drivers still around but even
if there are, the ODBC driver manager should do the mapping for us.
Changed calls to SQLGetConnectOption/SQLSetConnectOption to
to SQLGetConnectAttr/SQLSetConnectAttr for ODBC 3.0.
Changed calls to SQLColAttributes (ODBC 2.0) to SQLColAttribute
(ODBC 3.0).
Bumped requirement on DBI to 1.609 because that is the first version
to contain a dbipport.h which defined my_snprintf - see
https://rt.cpan.org/Public/Bug/Display.html?id=62346 and
http://www.nntp.perl.org/group/perl.dbi.dev/2010/10/msg6335.html
Various small changes to dbdimp.c which should have no effect other
than to make it leaner:
Removed all dTHR occurrences from dbdimp.c as it is a NOOP since 5.8
and we need 5.8 at least.
Removed dbd_param_err as it was not used
Removed odbc_get_query_timeout as it was never compiled
Removed eod field from statement as it was never used
Removed a load of commented out code
Replaced some SvPV calls with SvPV_nolen when we didn't used the
length
Removed some silly code from dbd_db_execdirect which attempted to
return -3 - don't think it could ever get run.
Minor tracing output tidy up
Removed dbd_caution as it was no used
Localised more variable declarations