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

Reply via email to