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=3e59028223ff687774be6862613daf20da00e728;hpb=e705f5290cf384194c31a807c9bb722c7a167dfd;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Storage/DBI/Pg.pm b/lib/DBIx/Class/Storage/DBI/Pg.pm index 3e59028..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 @@ -104,7 +107,7 @@ sub _dbh_get_autoinc_seq { )); } - return $1; + return $1; # exception thrown unless match is made above } # custom method for fetching column default, since column_info has a @@ -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.