Perl DBD::ODBC 1.45 released to the CPAN

I've just uploaded DBD::ODBC 1.45 to the CPAN. As always I'd draw your attention to a few small changes in behaviour. The changes since 1.43 are listed below but I need to warn you about an upcoming change first.

The next development cycle of DBD::ODBC will contain signficant changes to the way unicode strings in your Perl scripts are inserted into CHAR and VARCHAR columns. In an attempt to write up exactly how this all works (see and I have discovered that unicode strings are not being inserted into CHAR/VARCHAR columns correctly in the unicode build of DBD::ODBC. There may also be changes to how unicode strings are read back from the database but I have not evaluated that yet.

Please make sure you keep an eye out of DBD::ODBC development releases 1.46_N and ensure you test them before the next full release is made. In the mean time if you are using unicode with DBD::ODBC and have any comments, have hit any strange issues or are using any workarounds I strongly urge you to contact me now before I get too far into these changes.

Thanks to everyone who has contributed with code or advice.

Here are the changes since 1.43:

=head2 1.45 2013-10-28


There is no intentional change in behaviour in this release but I'm
adding a warning that the next development release is highly liking
to contain some significant unicode changes in behaviour to fix some
bugs which have been around for quite a long time now.


If an SQLExecute ODBC API call returned SQL_NO_DATA DBD::ODBC was
still calling SQLError (which was a waste of time).

Since 1.44_1 odbc_out_connect_string stopped returning anything.


Added another link to resources for supplementary characters.

Added 1 more test to 20SqlServer.t for update statement.

Small changes to 20SqlServer.t test to skip some tests and note the
problem if SQLExecute returns SQL_NO_DATA on a non searched update.

=head2 1.44_4 2013-10-16


Fix method redefinition warnings in threads on Perl >= 5.16 thanks
Dagfinn Ilmari Mannsåker


Changed this Changes file to be closer to the version 0.03 change
file spec.

Added t/version.t test.

Added recommends Test::Version.

Updates to the odbc_more_results pod to help clarify its use after
some confusion was seen in a perlmonks thread.

=head2 1.44_3 2013-10-11


If you attempt to set the ReadOnly attribute and the underlying
ODBC driver does not support this (SQL_SUCCESS_WITH_INFO and "option
value changed" is returned) a warning is issued. However, until RT
89015 "You cannot issue a warning in the STORE method" in DBI is
resolved you won't get this warning. As DBI 1.628 it is not
resolved. I've only seen the SQLite ODBC driver do this.

If you set ReadOnly and the underlying ODBC driver does not
support this then any subsequent attempts to fetch the ReadOnly
attribute will return the value you set.


The 82_table_info test assumed all database and ODBC Drivers
supported catalogs and schemas (some don't). Use get_info to
find out if catalogs and schemas are supported before
running these tests.

The rt_79190.t could incorrectly fail if your test DSN contained
the DRIVER attribute.


Added RedHat spec file to examples courtesy of Michiel Beijen.

Added "use strict" to FAQ/Changes etc to quieten kwalitee test.

Added a workaround in the test suite for a probable bug in the
postgres ODBC driver which does not return COLUMN_SIZE from
SQLGetTypeInfo. It also issues a warning. See

=head2 1.44_3 2013-10-11


Skip 70execute_array_native.t test if MS Access - even if behind an
ODBC Bridge.

Fixed some compiler warnings when attempting to print/trace SvCUR.

=head2 1.44_2 2013-09-07


When table_info was called with a '%' for any one of the catalog,
schema or type arguments with the rest all '' (the empty string),
only a list of catalogs, schemas or types should be returned. It was
not doing that as it was changing empty strings to undef/NULL.

pod for odbc_lob_read had an example only saying lob_read.

TYPE attribute for odbc_lob_read was actually coded as Type. It is
now as documented.

The example had the TYPE set to 999 from when I was
testing it but it got checked in like this.

MANIFEST contained but the file was


Fixed RT 86379 - spelling mistakes in and FAQ - thanks
to David Steinbrunner.

Added 82_table_info.t test.

Added 87_odbc_log_read.t test.

=head2 1.44_1 2013-06-06

Moved from subversion to github as is closing down.
Changed docs to show new repository.


Fixed RT 84450 - Database Handle Attribute Fetch broken. Thanks to
Stephen Oberholtzer for finding and supplying patch.

Fixed problem with attributes on bind_col not being sticky. You'll
probably only see this if you are using fetchall_arrayref with a
slice and setting TYPE or attributes in bind_col first.