Hej folks, A few weeks ago after upgrading to a new Ubuntu version I started running into a weird error in one of my perl scripts. The script uses DBI and DBD::Pg to communicate with a Postgresql 9.1 database server. Most of the database stuff is hidden in a little database abstraction class I have, which handles logging and error checking etc.
Anyhow, I ran into an interesting new error message with simple queries that return no results and don't have any parameters -- like CREATE TABLE. On a laptop that didn't get updated yet I ran a little test script and found out that running $sth->fetchall_arrayref({}) after a CREATE TABLE would issue a (non-fatal) error: --- DBD::Pg::st fetchall_arrayref failed: no statement executing --- However, running that same test script again now dies with this error: --- DBI bind_columns: invalid number of arguments: got handle + 0, expected handle + between 1 and -1 Usage: $h->bind_columns(\$var1 [, \$var2, ...]) at /usr/lib/perl5/DBI.pm line 2054. ---- Is this change intended, or is this the result of a missing sanity check or something? :) (that first non-fatal error never showed up in my script because my db class didn't check for errors after the fetchall_arrayref) Here's a little script to reproduce the errors above: --- #!/usr/bin/perl use strict; use warnings; use DBI; my $ds = "DBI:Pg:dbname=test;host=localhost"; my $user = 'test'; my $pw = 'test'; my $dbh = DBI->connect($ds, $user, $pw, { AutoCommit => 0, PrintError => 0 }); die "failed to connect" unless defined($dbh); my $sth = $dbh->prepare("CREATE TABLE test ( id serial )"); die "failed to prepare" if (!$sth || $dbh->err()); $sth->execute() or die "Unable to create table"; die "failed to execute" if ($dbh->err()); # Next line dies on newer DBI versions my $result = $sth->fetchall_arrayref({}); die "failed to fetchall_arrayref" if ($dbh->err()); $dbh->rollback() or die "Can't rollback"; $dbh->disconnect() or die "can't disconnect"; --- The upgraded Ubuntu laptop runs DBI version 1.622 and DBD::Pg 2.19.2, the older one has version 1.616 and DBD::Pg version 2.18.1. Thanks for reading. Regards, Wouter.