Hi Niels,

thanks for the debugging output. I think I know what's going on :)

Niels Peuyn wrote:

DEBUG: OpenCA::DBI->getItem: query completed
DEBUG: OpenCA::DBI->Entering set_error ...
DEBUG: OpenCA::DBI->errno: gettext is defined
DEBUG: OpenCA::DBI->errno: new errorcode is 0
DEBUG: OpenCA::DBI->errno: returning local errorcode 20032
DEBUG: OpenCA::DBI->errno: returning local errorcode 20032
DEBUG: OpenCA::DBI->rollback: entering function
DEBUG: OpenCA::DBI->errno: returning local errorcode 20032
DEBUG: OpenCA::DBI->DESTROY: automatic commit by destructor DESTROY
DEBUG: OpenCA::DBI->commit: entering function
DEBUG: OpenCA::DBI->errno: returning local errorcode 20032
DEBUG: OpenCA::DBI->DESTROY: call finish on all statement handles to avoid 
warnings by DBI

This happened if $sth->state returns true. Usually it is an SQL errorcode which consists of 5 digits. The DBI specification of Perl requires that database drivers (DBD::Pg) return "" if the SQL errorcode is 00000 (which means that there is no error). It looks like the latest DBD::Pg drivers violate this specification.

Another user had the same problem and wants to write a bug report to the PostgreSQL guys which coded the driver. If you go into OpenCA::DBI (src/modules/openca-dbi/DBI.pm) of OpenCA then you can fix the problem by yourself. If there is a check of ->state then there is usually something like "if($rv)" after this call. If you replace ($rv) by ($rv and $rv ne "00000") then the code should work. "00000" is true in Perl. Therefore the DBI specs require "" as the result string.

Greetings Michael
--
_______________________________________________________________

Michael Bell                    Humboldt-Universitaet zu Berlin

Tel.: +49 (0)30-2093 2482       ZE Computer- und Medienservice
Fax:  +49 (0)30-2093 2704       Unter den Linden 6
[EMAIL PROTECTED]   D-10099 Berlin
_______________________________________________________________

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to