X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FStorage%2FDBI%2FPg.pm;h=ade8c2cb8d02608067af93d2eb0fd277ab10c4e5;hb=bbdda28109ffb2442af84b3cbe5c4921714a52dd;hp=63f811af7369577c0b0253d8a1260280848d4b94;hpb=c6375b4d60ff920028fbbf74603a1cc60c726427;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Storage/DBI/Pg.pm b/lib/DBIx/Class/Storage/DBI/Pg.pm index 63f811a..ade8c2c 100644 --- a/lib/DBIx/Class/Storage/DBI/Pg.pm +++ b/lib/DBIx/Class/Storage/DBI/Pg.pm @@ -10,19 +10,18 @@ use mro 'c3'; use DBD::Pg qw(:pg_types); use Scope::Guard (); -use Context::Preserve (); +use Context::Preserve 'preserve_context'; +use namespace::clean; # Ask for a DBD::Pg with array support warn __PACKAGE__.": DBD::Pg 2.9.2 or greater is strongly recommended\n" if ($DBD::Pg::VERSION < 2.009002); # pg uses (used?) version::qv() -sub _supports_insert_returning { - my $self = shift; - - return 1 - if $self->_server_info->{normalized_dbms_version} >= 8.002; - - return 0; +sub _determine_supports_insert_returning { + return shift->_server_info->{normalized_dbms_version} >= 8.002 + ? 1 + : 0 + ; } sub with_deferred_fk_checks { @@ -36,8 +35,7 @@ sub with_deferred_fk_checks { $self->_do_query('SET CONSTRAINTS ALL IMMEDIATE'); }); - return Context::Preserve::preserve_context(sub { $sub->() }, - after => sub { $txn_scope_guard->commit }); + return preserve_context { $sub->() } after => sub { $txn_scope_guard->commit }; } # only used when INSERT ... RETURNING is disabled @@ -205,8 +203,12 @@ sub deployment_statements { $sqltargs ||= {}; - if (my $version = $self->_server_info->{normalized_dbms_version}) { - $sqltargs->{producer_args}{postgres_version} = $version; + if ( + ! exists $sqltargs->{producer_args}{postgres_version} + and + my $dver = $self->_server_info->{normalized_dbms_version} + ) { + $sqltargs->{producer_args}{postgres_version} = $dver; } $self->next::method($schema, $type, $version, $dir, $sqltargs, @rest);