Perl

The Perl programming language

Ingres comes to DBD::ODBC

Yesterday I was contacted by someone at Ingres with a patch to make DBD::ODBC support the ingresCLI driver manager. I'm always happy to accept these patches and with a moderate rewrite (necessitated by the fact I'd hacked Makefile.PL around a lot recently for 64bit support without checking it in) I managed to rewrite the patch. The changes are checked in to subversion now and are reported to work for Ingres. Unicode support is not there yet but I believe they are working on it.

Detecting 64bit ODBC driver managers in DBD::ODBC install

I've been working on 1.22 doesn't compile on 64 bit systems with unixODBC on and off for a few days. Boy, this is tiresome (no reflection on the poster of this rt).

DBD::ODBC ping has regressed :-(

Today a long standing Easysoft customer upgraded from DBD::ODBC 1.13 to 1.21 and their scripts stopped working properly :-( It appears they use the ping method to detect whether the connection handle is connected to the database and since upgrading to 1.21 they are getting DBD::ODBC::db ping failed: Cannot allocate statement when disconnected from the database at ./xxx.pl line 11 when calling the ping method after a disconnect.

Quick summary of content network clicks/cost/conversions

I use the content network sparingly and in campaigns which are for the content network only. However, I've never felt google chooses the sites to display my ads very well so review the sites regularly. The things I'm mostly interested in are a) which sites my ads appeared on I don't think they should (or I don't want them appearing on) and b) which sites are costing a lot but delivering no conversions. The following perl script processes a TSV version of the placement report (with specific fields) into a more easily managed list I can use to add domain exceptions to my campaign.

New attribute to DBIx::Log4perl to filter error reporting

At Easysoft we have been using DBIx::Log4perl for some time to log DBI database access methods in a way that was useful to us. In fact, that is why I wrote DBIx::Log4perl in the first place.

Why cannot I use a RowCacheSize greater than 128 with DBD::Oracle?

It appears that DBD::Oracle restricts the RowCacheSize to 128, why? I know how much memory I can afford to use for retrieving rows better than DBD::Oracle and as far as I can see this could be set a lot higher.

DBD::ODBC 1.22 released

I have released 1.22 of DBD::ODBC to CPAN today. This includes a fix to a serious problem with a unicode-enabled DBD::ODBC (the default on Windows) and the transfer of character fields between the database and Perl of greater than 64K characters. If this affects you then you should upgrade immediately. See the announcement on the dbi-users/dbi-dev or dbi-announce lists. This release also fixes a problem with inserting NULL into nvarchar fields in a unicode-enabled DBD::ODBC.

DBD::Oracle: RowCacheSize ignored

Just spent a few hours trying to find out why the RowCacheSize attribute in DBD::Oracle does not seem to have any affect at all. The following code demonstrates the problem:

Released DBD::ODBC 1.21_1 to CPAN

Fixed bug referred to in rt 46597 reported by taioba and identified by Tim Bunce. In Calls to bind_param for a given statement handle if you specify a SQL type to bind as this should be "sticky" for that parameter. That means if you do: $sth->bind_param(1, $param, DBI::SQL_LONGVARCHAR) and follow it up with execute calls that also specify the parameter: $sth->execute("a param"); then the parameter should stick with the SQL_LONGVARCHAR type and not revert to the default parameter type. The DBI docs (in subversion now)

Rush on DBD::ODBC issues today

I frequent perl monks a bit and late yesterday an issue came in with DBD::ODBC and Microsoft Access. The perl monks node and rt 46597 detail it all quite well. It appears DBD::ODBC was not following the DBI specification (as it was originally written) to the letter with respect to sticky bound parameter types but since then Tim Bunce has modified the DBI pod slightly to allow DBDs to enable a bound parameter to be rebound with a different type. The change to DBD::ODBC was fairly small but by the time I'd added a test case, bumped the version to 1.21_1 and tested a dozen or so ODBC drivers this consumed a fair amount of time.

Syndicate content