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.
WARNING - PLEASE READ: ===== 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 https://github.com/mjegh/dbd_odbc_sql_server_unicode and http://www.mail-archive.com/dbi-dev@perl.org/msg07364.html) 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 [CHANGE IN BEHAVIOUR] 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. [BUG FIXES] 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. [MISCELLANEOUS] 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 [BUG FIXES] Fix method redefinition warnings in threads on Perl >= 5.16 thanks Dagfinn Ilmari Mannsåker [MISCELLANEOUS] 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 [CHANGE IN BEHAVIOUR] 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. [BUG FIXES] 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. [MISCELLANEOUS] 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 http://www.postgresql.org/message-id/524ef455.6050...@ntlworld.com =head2 1.44_3 2013-10-11 [MISCELLANEOUS] 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 [BUG FIXES] 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 lob_read.pl had the TYPE set to 999 from when I was testing it but it got checked in like this. MANIFEST contained column_info.pl but the file was coltest.pl [MISCELLANEOUS] Fixed RT 86379 - spelling mistakes in ODBC.pm 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 svn.perl.org is closing down. Changed docs to show new repository. [BUG FIXES] 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. Martin