From: erickson Date: Mon, 26 Jan 2009 17:20:39 +0000 (+0000) Subject: added savepoint support X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=9de0a1aa5cc4a417c9940b89b267d2281aa98fa3;p=Evergreen.git added savepoint support git-svn-id: svn://svn.open-ils.org/ILS/trunk@11973 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/src/perlmods/OpenILS/Utils/CStoreEditor.pm b/Open-ILS/src/perlmods/OpenILS/Utils/CStoreEditor.pm index b332f296c1..44897cc494 100644 --- a/Open-ILS/src/perlmods/OpenILS/Utils/CStoreEditor.pm +++ b/Open-ILS/src/perlmods/OpenILS/Utils/CStoreEditor.pm @@ -233,6 +233,41 @@ sub xact_rollback { } +# ----------------------------------------------------------------------------- +# Savepoint functions. If no savepoint name is provided, the same name is used +# for each successive savepoint, in which case only the last savepoint set can +# be released or rolled back. +# ----------------------------------------------------------------------------- +sub set_savepoint { + my $self = shift; + my $name = shift || 'savepoint'; + return unless $self->{session} and $self->{xact_id}; + $self->log(I, "setting savepoint '$name'"); + my $stat = $self->request($self->app.".savepoint.set") + or $self->log(E, "error setting savepoint '$name'"); + return $stat; +} + +sub release_savepoint { + my $self = shift; + my $name = shift || 'savepoint'; + return unless $self->{session} and $self->{xact_id}; + $self->log(I, "releasing savepoint '$name'"); + my $stat = $self->request($self->app.".savepoint.release") + or $self->log(E, "error releasing savepoint '$name'"); + return $stat; +} + +sub rollback_savepoint { + my $self = shift; + my $name = shift || 'savepoint'; + return unless $self->{session} and $self->{xact_id}; + $self->log(I, "rollback savepoint '$name'"); + my $stat = $self->request($self->app.".savepoint.rollback") + or $self->log(E, "error rolling back savepoint '$name'"); + return $stat; +} + # ----------------------------------------------------------------------------- # Rolls back the transaction and disconnects