On Mon, 19 Apr 2010, Dave Crooke wrote:
Statement.close() appears to get the job done (in my envrionment, PG's driver never sees a Connection.close() because of DBCP). I'd consider the fact that ResultSet.close() does not release the implicit cursor to be something of a bug, but it may well have been fixed already.
PG doesn't release the locks acquired by the query until transaction end. So closing a cursor will release some backend memory, but it won't release the locks. The way the driver implements ResultSet.close() is to put the close message into a queue so that the next time a message is sent to the backend we'll also send the cursor close message. This avoids an extra network roundtrip for the close action.
In any case Statement.close isn't helping you here either. It's really Connection.commit/rollback that's releasing the locks.
Kris Jurka -- Sent via pgsql-performance mailing list (pgsql-performance@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-performance