New 1.34_4 release of Perl DBD::ODBC

I've uploaded DBD::ODBC 1.34_4 to CPAN.

This release contains all changes/fixes/enhancements since 1.33 and also the new odbc_getdigarec and odbc_getdiagfield methods.

=head2 Changes in DBD::ODBC 1.34_4 February 5 2012


* 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.

=head2 Changes in DBD::ODBC 1.34_3 February 3 2012


* Linking against unixODBC was working by accident on most UNIX

ORA-00604: error occurred at recursive SQL level 1, ORA-22914: DROP of nested tables not supported

In the last few days we've suddenly started getting this error. The really weird thing is we get this when inserting data into a table! There was a trigger on the table we were inserting into so I disabled it but the problem did not go away. In fact it was easily reproducible with a simple insert into the "problem" table. Looking at the table in question it had around 500000 rows and included a clob but other than that nothing special. Since this is only a development system we deleted all the rows in the table and reenabled the trigger and the problem went away.

New Humax foxsat-hdr satellite box

I've just bought a new Foxsat-HDR to replace a previous Foxsat-HD and more importantly free up my Digital Pioneer freeview PVR as we've just lost the analogue signal and my other Panasonic PVR/DVD player in another room is analogue.

execute_for_fetch experimental support now in Perl DBD::ODBC 1.34_1

I have uploaded DBD::ODBC 1.34_1 to CPAN. This release adds very experimental support for a native execute_for_fetch method to DBD::ODBC which means you can do multiple row inserts/updates/deletes much quicker than using DBI's default execute_for_fetch (so long as you are using execute_for_fetch or execute_array and using column-wise binding).

Native execute_for_fetch support can often be as much as 30 or 40 times faster in my experiments (depending on data sent and odbc_batch_size) when inserting rows and even more if you do it in a transaction and even faster if you disable index updates until after the commit. Read on for why.

By default DBD::ODBC will use the new execute_for_fetch and there are some differences between what happens when you use DBD::ODBC with DBI's default execute_for_fetch and DBD::ODBC's. To disable the ODBC one you can set the new odbc_disable_array_operations attribute. I've listed the potential difference below. I'd love people to test this. It may be missing some special workarounds for a few drivers but I'm working my way through those.

New 1.33 release of Perl DBD::ODBC

I've just uploaded DBD::ODBC 1.33 to CPAN.

This release contains no new changes since the 1.32_5 development release but is the official release for all the 1.32 dev series. The complete changes can be found below. The main thrust has been Unicode improvements.

The most significant enhancements are:

  • unicode support for catalog/schema/table/column names in table_info and column_info
  • now using SQLGetTypeInfoW on unicode builds
  • new odbc_driver_complete attribute to allow interaction with ODBC dialogs on Windows.
    I'd really like to hear from anyone who uses this as I've had no feedback so far - just drop me an email if you have
  • and bug fixes:

    • remove a debugging printf - sorry, most embarrassing.

Adding Perl DBI execute_for_fetch support to DBD::ODBC

In a rare moment (I hope) of stupidity last weekend when I was a little bored (bad cold stopped me doing what I really wanted to do) I looked through the DBD::ODBC TO_DO list and saw the "implement execute_array/execute_for_fetch" item which has been in that file for years. I know for sure implementing it will be a lot faster than using DBI's default methods (which effectively do a row at a time) mostly because I wrote an ODBC tutorial years ago showing how much faster binding arrays of parameters is (Easysoft ODBC-ODBC Bridge Performance White Paper) but I also knew it would be a PITA to write. The main problem is that DBD::ODBC has loads of workarounds for broken drivers and special cases.

New 1.32_4 development release of Perl DBD::ODBC

I've uploaded the 4th development release of DBD::ODBC 1.32. This version improves Unicode support in metadata functions even further. My intention is to release this as a full version in the next week unless I get a load of bug reports. The changes since 1.31 are:

Unicode support in Perl DBI - DBD differences

NOTE: This is very much a document in progress so please bare that in mind when reading it - I will be updating it.

There is an ongoing discussion on the dbi-dev mailing list about unicode support in DBI. I've been trying to collect information on DBD support for Unicode in the hope it will help show whether there are inconsistencies in DBDs and whether the Perl DBI could help defining Unicode support. Originally, I thought about doing a talk at the London Perl Workshop but I've been rather preoccupied with personal issues and didn't think I'd even make the LPW until early last week. What follows is a very cut down version of a large document I started writing to catalogue Unicode support in DBDs. I've not done some DBDs yet - notably DB2 (because I no longer have it, although castaway on #dbix-class ran some code for me) and Postgres (because I know people are currently working on Unicode support in DBD::Pg). If you have a DBD I've not covered I'd love to hear from you and especially if you can take one of my examples and change it to work for your DBD.

New 1.32_2 development release of Perl DBD::ODBC

I have just uploaded 1.32_2 development release of DBD::ODBC. This contains one rather nice enhancement for Windows users which adds the new odbc_driver_complete attribute described as below. This allows DBD::ODBC on Windows to obtain a window handle which means if the ODBC Driver Manager or ODBC Driver needs to throw a dialogue to complete the data source or perhaps re-enter an expired password it can. Any testing will be greatly appreciated. The full changes since 1.31 are:

Perl's PERL_UNICODE and failing tests

Increasingly I'm seeing reports of modules failing (e.g., t/test_autoencoding_conversion.t fails and Gofer test failures with PERL_UNICODE=AS and PERL_UNICODE and smokes) when PERL_UNICODE is set - I see others saying much the same thing and apparently eve

Syndicate content