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=371f185731c076e6bccf1cdd908bbe1e12bb5fb7;hpb=8892d8e5dedfe842e714da55f784e1c61a2c4c86;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Storage/DBI/Pg.pm b/lib/DBIx/Class/Storage/DBI/Pg.pm index 371f185..a67bc2f 100644 --- a/lib/DBIx/Class/Storage/DBI/Pg.pm +++ b/lib/DBIx/Class/Storage/DBI/Pg.pm @@ -3,12 +3,10 @@ package DBIx::Class::Storage::DBI::Pg; use strict; use warnings; -use base qw/ - DBIx::Class::Storage::DBI::MultiColumnIn -/; -use mro 'c3'; +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; @@ -17,6 +15,7 @@ use namespace::clean; __PACKAGE__->sql_limit_dialect ('LimitOffset'); __PACKAGE__->sql_quote_char ('"'); __PACKAGE__->datetime_parser_type ('DateTime::Format::Pg'); +__PACKAGE__->_use_multicolumn_in (1); sub _determine_supports_insert_returning { return shift->_server_info->{normalized_dbms_version} >= 8.002 @@ -32,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 @@ -50,7 +51,7 @@ sub last_insert_id { for my $col (@cols) { my $seq = ( $col_info->{$col}{sequence} ||= $self->dbh_do('_dbh_get_autoinc_seq', $source, $col) ) or $self->throw_exception( sprintf( - 'could not determine sequence for column %s.%s, please consider adding a schema-qualified sequence to its column info', + "Could not determine sequence for column '%s.%s', please consider adding a schema-qualified sequence to its column info", $source->name, $col, )); @@ -97,7 +98,7 @@ sub _dbh_get_autoinc_seq { $seq_expr = '' unless defined $seq_expr; $schema = "$schema." if defined $schema && length $schema; $self->throw_exception( sprintf ( - 'no sequence found for %s%s.%s, check the RDBMS table definition or explicitly set the '. + "No sequence found for '%s%s.%s', check the RDBMS table definition or explicitly set the ". "'sequence' for this column in %s", $schema ? "$schema." : '', $table, @@ -106,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 @@ -268,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.