I have been having trouble connecting to my user database, according to the logs, there was never any password returned.
After browsing through the code, I found the following: ---start code--- undef $passwd if 0 == $sth->rows; # so we can distinguish later on between no password and empty password ---start code--- According to the DBI documentation here: http://search.cpan.org/author/TIMB/DBI-1.30/DBI.pm#rows ---start quote--- So use of the rows method or $DBI::rows with SELECT statements is not recommended. ---end quote--- It seems my particular driver (PgPP) is returning a 0 to $sth->rows, which undefs $passwd, even if there was a password returned. So I cooked up a patch to fix it. (Attached) It simply increments a counter while looping through the recordsets and checks that counter instead $sth->rows. My Configuration: Apache 1.3.26 Apache::AuthDBI 0.88 PostgreSQL 7.2.1 Perl 5.6.1 DBD::PgPP 0.04
--- AuthDBI.pm Wed Nov 20 06:04:19 2002 +++ old/AuthDBI.pm Wed Nov 20 05:30:25 2002 @@ -273,10 +273,9 @@ $dbh->disconnect; return SERVER_ERROR; } - my $password_count = 0; + # fetch result while ($_ = $sth->fetchrow_array) { - $password_count++; # strip trailing blanks for fixed-length data-type $_ =~ s/ +$// if $_; # consider the case with many users sharing the same userid @@ -284,7 +283,7 @@ } chop $passwd if $passwd; - undef $passwd if 0 == $password_count; # so we can distinguish later on between no password and empty password + undef $passwd if 0 == $sth->rows; # so we can distinguish later on between no +password and empty password if ($sth->err) { $dbh->disconnect;