New 1.23_4 development release of DBD::ODBC - faster - please test

I have just uploaded a new development release of DBD::ODBC 1.23_4 to CPAN. This is very much an experimental release but unless I hear any negative reports I will release this as 1.24. If you use DBD::ODBC you SHOULD test this release as it contains some significant changes to speed up prepared statements and as DBD::ODBC has to support a large number of ODBC drivers I have not been able to test the dozens of possibilities myself. If you use the MS SQL Server ODBC Driver or Native Client this change will definitely impact you and for other drivers this should reduce calls to SQLBindParameter. As ActiveState do not release development builds (no criticism intended) I am looking at producing a ppm for people to try. If you use Strawberry Perl you should be able to install this release like any others by naming the version on the install command. Particular thanks (in no particular order) go to Michiel Beijen from OTRS ( for suggesting DBD::ODBC was slow (without much evidence at first but I fell for it and it yielded results anyway) and prompting me to investigate (don't let that persuade anyone else this is a good tactic), Jens Rehsack (Sno) and H. Merijn Brand (Tux) on #dbi for their continued support and help, Bruce Tanner and others for reporting issues on rt and making themselves available for testing, my colleagues at Easysoft for their support in particular Nick Gorham of unixODBC, all the smoke testers and Noel Burton-Krahn for Aster patches. If I missed you out sorry - your help is much appreciated. I am always looking for people to test DBD::ODBC development releases. If you rely on DBD::ODBC mail me your address and I will give you advance warning of releases you can test. The full list of changes in 1.23_4 since 1.23 is: =head1 CHANGES =head2 Changes in DBD::ODBC 1.23_4 April 13, 2010 Added more FAQs. Small optimization to remove calls to SQLError when tracing is not turned on. This was a bug. We only need to call SQLError when SQLExecute succeeds if there is an error handler or if tracing is enabled. The test was for tracing disabled! Large experimental change primarily affecting MS SQL Server users but it does impact on other drivers too. Firstly, for MS SQL Server users we no longer SQLFreeStmt(SQL_RESET_PARAMS) and rebind bound parameters as it is causing the MS SQL Server ODBC driver to re-prepare the SQL. Secondly (for all drivers) we no longer call SQLBindParameter again IF all the arguments to it are the same as the previous call. If you find something not working you better let me know as this is such a speed up I'm going to go with this unless anyone complains. Minor change to avoid a double call to SQLGetInfo for SQL_DBMS_NAME immediately after connection. Small change for rt 55736 (reported by Matthew Kidd) to not assume a parameter is varXXX(max) if SQLDescribeParam failed in the Microsoft Native Client driver. =head2 Changes in DBD::ODBC 1.23_3 March 24, 2010 Minor changes to Makefile.PL and dbdimp.c to remove some compiler warnings. Fix some calls to SQLMoreResults which were not passing informational messages on to DBI's set_err. As you could not see all the informational messages from procedures, only the first. Fix minor issue in 02simple test which printed the Perl subversion before the version. Changes to 20SqlServer.t to fix a few typos and make table names consistent wrt to case - (as someone had turned on case-sensitivity in SQL Server) Similar changes in rt_38977.t and rt_50852.t =head2 Changes in DBD::ODBC 1.23_2 January 26, 2010 Fixed bug in Makefile.PL which could fail to find unixODBC/iODBC header files but not report it as a problem. Thanks to Thomas J. Dillman and his smoker for finding this. Fixed some compiler warnings in dbdimp.c output by latest gcc wrt to format specifiers in calls to PerlIO_printf. Added the odbc_force_bind_type attribute to help sort out problems with ODBC Drivers which support SQLDescribeParam but describe the parameters incorrectly (see rt 50852). Test case also added as rt_50852.t. =head2 Changes in DBD::ODBC 1.23_1 October 21, 2009 makefile.PL changes: some formatting changes to output warn if unixodbc headers are not found that the unixodbc-dev package is not installed use $arext instead of "a" pattern match for pulling libodbc.* changed warn if DBI_DSN etc not defined change odbc_config output for stderr to /dev/null missing / on /usr/local wheb finding find_dm_hdr_files() New FAQ entries from Oystein Torget for bind parameter bugs in SQL Server. rt_46597.rt - update on wrong table Copied dbivport.h from the latest DBI distribution into DBD::ODBC. Added if_you_are_taking_over_this_code.txt. Add latest Devel::PPPort ppport.h to DBD::ODBC and followed all recommendations for changes to dbdimp.c. Added change to Makefile.PL provided by Shawn Zong to make Windows/Cygwin work again. Minor change to Makefile.PL to output env vars to help in debugging peoples build failures. Added odbc_utf8_on attribute to dbh and sth handles to mark all strings coming from the database as utf8. This is for Aster (based on PostgreSQL) which returns all strings as UTF-8 encoded unicode. Thanks to Noel Burton-Krahn.