Alex Vinogradovs wrote: > Which works fine with successful queries, but for each > unsuccessful query it complains about reference leaks > and not properly closed relations. > Later on I've solved that with use of subtransactions, which > provide some proper cleanup mechanisms, but I was wondering > if it is possible to bypass that layer, and make the code > above work fine just by doing some cleanup within the catch > block. The only code that knows how to cleanup completely after transaction failure is the subtransaction code. If you need to do something that may cause a transaction abort, then you must use subtransactions. (You could of course write "your own layer" but it would duplicate subtransaction start/abort so there wouldn't be any point.) It's expensive, yes, but there are good reasons for that. If you are worried about that, I'm sure there are optimizations possible. -- Alvaro Herrera http://www.CommandPrompt.com/ PostgreSQL Replication, Consulting, Custom Development, 24x7 support ---------------------------(end of broadcast)--------------------------- TIP 3: Have you checked our extensive FAQ? http://www.postgresql.org/docs/faq