[Dbix-class] New experimental development release of DBD::ODBC 1.23_4 - faster - please test

Martin J. Evans martin.evans at easysoft.com
Wed Apr 14 20:12:57 GMT 2010


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 (http://otrs.org/) 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.

Martin
--
Martin J. Evans
Easysoft Limited
http://www.easysoft.com



More information about the DBIx-Class mailing list