On Fri, 3 Apr 2015 15:35:14 +0100 Filipe Pina <filipe.p...@impactzero.pt> wrote:
> Hello, > > I come from a GTM background and once of the transactional features there are > the ?Transaction Restarts?. > > Transaction restart is when we have two concurrent processes reading/writing > to the same region/table of the database, the last process to commit will > ?see? that the database is not the same as it was when the transaction > started and goes back to the beginning of the transactional code and > re-executes it. > > The closest I found to this in PGSQL is the Serializable transaction > isolation mode and it does seem to work well except it simply throws an error > (serialization_failure) instead of restarting. > > I?m trying to make use of this exception to implement restartable functions > and I have all the examples and conditions mentioned here in a question in SO > (without any answer so far?): > > http://stackoverflow.com/questions/29372202/postgresql-generic-handler-for-serialization-failure > > <http://stackoverflow.com/questions/29372202/postgresql-generic-handler-for-serialization-failure> > > So basically I have two questions: > - the restartable ?wrapper? function never gets its ?DB view? refreshed once > it restarts, I assume it?s because of the outter transaction (at function > level) so it never re-reads the new values and keeps failing with > serialization_failure.. Any way to solve this? > - the ideal would be to be able to define this at database level so I > wouldn?t have to implement wrappers for all functions.. Implementing a > ?serialization_failure? generic handler that would simply re-call the > function that threw that exception (up to a number of tries). Is this > possible without going into pgsql source code? I suspect that savepoints will accomplish what you want: http://www.postgresql.org/docs/9.4/static/sql-savepoint.html -- Bill Moran -- Sent via pgsql-general mailing list (pgsql-general@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general