New 1.35 release of Perl DBD::ODBC

I've uploaded Perl DBD::ODBC 1.35 to CPAN.

This is the culmination of 7 development releases in the 1.34 chain and is a significant release containing a lot of changes and enhancements. As always I would like to thank everyone who has helped and especially CPAN testers. The full list of changes since the last official release is below.

I particularly want to draw your attention to a native execute_for_fetch method (which is much faster than the default DBI method) and the new odbc_getdiagrec and odbc_getdiagfield methods. However, be aware that some ODBC drivers (e.g., SQLite and there are probably others) cannot do execute_for_fetch successfully so there is a new flag to revert to the old behaviour until drivers can be fixed. I've contacted driver writers where I've found this but as yet I've not got any resolution. If you are using a Windows ODBC driver or some proprietary UNIX ODBC drivers (like the Easysoft ones - disclaimer, I work for Easysoft) you are likely to have a lot more success with the native execute_for_fetch as Windows applications seem to have been doing this for longer so have ironed out the issues. Also note there are some changes in behaviour in this release.

  • Changes in DBD::ODBC 1.35 March 6 2012
    • Full release of the 1.34 development releases
    • Changes in DBD::ODBC 1.34_7 March 2 2012
      • BUG FIXES
        • Fixed more compiler errors highlighed by a smoker using MS Visual C where some code come before a variable definition.
    • Changes in DBD::ODBC 1.34_6 February 27 2012
      • BUG FIXES
        • Fixed some compiler warnings and a compile error highlighed by a smoker using MS Visual C where some code come before a variable definition.
    • Changes in DBD::ODBC 1.34_5 February 17 2012
      • BUG FIXES
        • The 40UnicodeRoundTrip tests counts could be 1 off in some cases.
        • Fix for t/03batt.t which could fail a test if the data source had no table - Kenichi Ishigaki
        • If a driver misbehaves during global destruction e.g. SQLFreeStmt fails but no error is available DBD::ODBC issues an error saying an error occurred but no error diagnostics could be found. This is pointless and irritating during global destruction. This stems from a change in 1.28. Thanks to Peter Rabbitson for reporting and suggested fix.
      • CHANGE IN BEHAVIOUR
        • Prior to this release if you called selectall_* methods with a non-select statement DBD::ODBC would raise an error saying "no select statement currently executing". See RT 68720. After discussions on dbi-dev the concensus seems to be that issuing a warning in this case is better so that is what I've done. As a result t/rt_68720.t has been removed and t/85_selectall_non_select.t has been added.
      • DOCUMENTATION
        • odbc_getdiagfield was incorrectly named odbc_getdiagrec in the pod
        • add DBI version required for StrictlyTyped and DiscardString to pod
        • Added new FAQ on why a transaction may be committed when AutoCommit is turned off.
      • OTHER
        • Make examples\odbc_diag.pl more tolerant of drivers which do not handle diagnostic calls properly.
        • Make t/40UnicodeRoundTrip.t work with SQLite - Kenichi Ishigaki
        • Make t/odbc_describe_parameter.t work with SQLite - Kenichi Ishigaki
        • Add 80_odbc_diags.t based on the same file in examples
    • Changes in DBD::ODBC 1.34_4 February 5 2012
      • BUG FIXES
        • When odbc_getdiag* methods were added they installed themselves into DBI but did not set IMP_KEEP_ERR so calling them cleared DBI's errors.
    • Changes in DBD::ODBC 1.34_3 February 3 2012
      • BUG FIXES
        • Linking against unixODBC was working by accident on most UNIX machines and depended on the order of the files in /usr/lib (or wherever) and what files there were (e.g. an archive or a shared object). Same applied to iODBC but it was more broken especially on machines where libiodbc.so.N.N existed but there was no libiodbc.so which could lead to no adding the shared object at all. I doubt anyone really noticed this but I did eventually on Ubuntu where libiodbc.so.N.N existed but libiodbc.so did not.
      • ENHANCEMENTS
        • Added experimental odbc_getdiagrec and odbc_getdiagrec methods, examples/odbc_diag.pl and examples/params_in_error.pl.
      • DOCUMENTATION
        • New FAQ entries.
    • Changes in DBD::ODBC 1.34_2 January 25 2012
      • BUG FIXES
        • Fixed rt73734 - debian moved where unixODBC libs are stored.
        • Fixed memory leak of the parameter status array introduced in previous release when execute_for_fetch used. When the statement handle is destroyed the parameter status array was not freed.
      • ENHANCEMENTS
        • Added environment variable PERL_DBD_ODBC_PREFER_UNIXODBC as a synonym for -x from Rafael Kitover (Caelum).
      • DOCUMENTATION
        • Add a deviation from DBI spec for type_info_all.
      • OTHER
        • Added example execute_for_fetch.pl
    • head2 Changes in DBD::ODBC 1.34_1 December 11 2011
      • ENHANCEMENTS
        • Added experimental execute_for_fetch support and associated attributes odbc_batch_size and odbc_disable_array_operations.