X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FStorage%2FDBI%2FPg.pm;h=a67bc2f581bfd6503fa87e1eada20a21ffdb8f1a;hb=cf52a9ad15a73aedfc1822643d63a9aa7982c72c;hp=fcdab67b21df2eb761e39757e10f8f2c33743440;hpb=d77ee505c77d14a8a89cf356a014e7fbdc4e3967;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Storage/DBI/Pg.pm b/lib/DBIx/Class/Storage/DBI/Pg.pm index fcdab67..a67bc2f 100644 --- a/lib/DBIx/Class/Storage/DBI/Pg.pm +++ b/lib/DBIx/Class/Storage/DBI/Pg.pm @@ -6,6 +6,7 @@ use warnings; use base qw/DBIx::Class::Storage::DBI/; use Scope::Guard (); +use Scalar::Util 'weaken'; use Context::Preserve 'preserve_context'; use DBIx::Class::Carp; use Try::Tiny; @@ -30,11 +31,13 @@ sub with_deferred_fk_checks { $self->_do_query('SET CONSTRAINTS ALL DEFERRED'); - my $sg = Scope::Guard->new(sub { - $self->_do_query('SET CONSTRAINTS ALL IMMEDIATE'); - }); - - return preserve_context { $sub->() } after => sub { $txn_scope_guard->commit }; + weaken($self); + return preserve_context { + my $sg = Scope::Guard->new(sub { + $self->_do_query('SET CONSTRAINTS ALL IMMEDIATE'); + }); + $sub->() + } after => sub { $txn_scope_guard->commit }; } # only used when INSERT ... RETURNING is disabled @@ -266,12 +269,13 @@ option to connect(), for example: }, ); -=head1 AUTHORS - -See L +=head1 FURTHER QUESTIONS? -=head1 LICENSE +Check the list of L. -You may distribute this code under the same terms as Perl itself. +=head1 COPYRIGHT AND LICENSE -=cut +This module is free software L +by the L. You can +redistribute it and/or modify it under the same terms as the +L.