DBD::Pg currently does a 'begin' immediately after a 'commit' or 'rollback'. Unfortunately this can cause some minor problems for PostgreSQL. It used to cause PostgreSQL 7.1 spits out lots of 'NOTICE: InvalidateSharedInvalid: cache state reset' messages (in 7.2 this is just a DEBUG message and not a NOTICE message so it's not so obvious).
This can be bad for performance and is caused by one or more backends being in a transaction for a very long time. I've written a patch which makes DBD::Pg avoid starting a new transaction until the first statement is about to be processed. This seems to eliminate this problem. It also allows you to turn AutoCommit on without causing a pointless 'begin; commit;' in PostgreSQL which can sometimes be useful to cut down on the number of queries being run (PostgreSQL treats queries outside a 'begin' 'commit' block as being a transaction in their own right). The patch is at http://www.xelah.com/DBD::Pg.diff and is against 1.13.
