Tom Lane wrote:
> Some folk at JBoss (now part of Red Hat) are complaining to me that
> there's no way to deal with failing statements within a transaction
> in the context of CMT (Container Managed Transactions). The normal
> advice would be to do SAVEPOINT and RELEASE around each statement,
> but they say this is disallowed:
>
>> It's really a question of granularity. When using CMT a global
>> transaction is not committed until the end of method completion.
>> Prior to the JDBC connection being used, autocommit is set to false
>> and the global transaction is officially started. When the global
>> transaction completes, the transaction is committed as a whole. JDBC
>> Rollback and commit within a managed transaction is prohibited as
>> this is the responsibility of the container. So, setting a savepoint
>> and rolling back (and subsequently committing) won't work in this
>> context which is what the Postgres driver requires.
They seem to be confusing rollback and commit of the managed transaction
with use of savepoints.. I don't see why the prohibition on messing with
the top-level global transaction affects use of savepoints, since use of
savepoints won't affect that top-level transaction?
-O