My program starts a transaction, does about 20 inserts, then commits. When I replace once of the inserts with a function that does the insert, when I do the commit I get this message:
WARNING: there is no transaction in progress
The inserts all commit fine. Do functions used through DBD::Pg do something like turn on autocommit after a function is called?
Is your function calling 'commit' itself? If so, it could be committing before your SQL statement issues the 'commit', thus attempting to commit a transaction which doesn't exist any more.
DBD::Pg defaults to "AutoCommit" behaviour, unless you explicitly turn it off:
my $dbh = DBI->connect ( "DBI:Pg:dbname=database", "user" , "password", {AutoCommit => 0} );
HTH Alex Satrapa
---------------------------(end of broadcast)--------------------------- TIP 5: Have you checked our extensive FAQ?
http://www.postgresql.org/docs/faqs/FAQ.html