Thomas Hallgren wrote
I'm planning to add subtransactions too, but my approach will be to
use the savepoint functionality already present in the
java.sql.Connection interface. Perhaps the plpy implementation could
do something similar. This is what I'm planning to implement:
In Java, safepoints are identified by an interface rather then just by
a name. I will (invisibly) include both the name of the safepoint and
the call level in my implementation of that interface. I will also
have a nested "call context" where I manage safepoints created by the
executing function. All of this will be completely hidden from the
function developer. This will make it possible to enforce the
following rules:
1. A Safepoint lifecycle must be confined to a function call.
2. Safepoints must be rolled back or released by the same function
that sets them.
Failure to comply with those rules will result in an exception (elog
ERROR) that will be propagated all the way up.
Would you consider this as safe?
Regards,
Thomas Hallgren
s/safepoint/savepoint/g
---------------------------(end of broadcast)---------------------------
TIP 4: Don't 'kill -9' the postmaster