X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FStorage%2FDBI%2FPg.pm;h=05d4f473cb4456cd1fd4d85836251521d1da1b99;hb=bab40deebe87977cb35055321a722d0d1ccebcd5;hp=1b5e6d8400e1d60fd339c59856b409e6bb3ab1e6;hpb=38d5ea9f06646beb01422d3d6a2994f1601bf35e;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Storage/DBI/Pg.pm b/lib/DBIx/Class/Storage/DBI/Pg.pm index 1b5e6d8..05d4f47 100644 --- a/lib/DBIx/Class/Storage/DBI/Pg.pm +++ b/lib/DBIx/Class/Storage/DBI/Pg.pm @@ -17,9 +17,16 @@ 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 can_insert_returning { - # FIXME !!! - # pg before 8.2 doesn't support this, need to check version - return 1; + my $self = shift; + + my $pg_ver = $self->_get_dbh->get_info(18); + + my ($major, $minor) = $pg_ver =~ /^(\d+)\.(\d+)/; + + return 1 + if ($major > 8) || ($major == 8 && $minor >= 2); + + return 0; } sub with_deferred_fk_checks { @@ -37,6 +44,7 @@ sub with_deferred_fk_checks { after => sub { $txn_scope_guard->commit }); } +# only used when INSERT ... RETURNING is disabled sub last_insert_id { my ($self,$source,@cols) = @_; @@ -62,8 +70,7 @@ sub _sequence_fetch { $self->throw_exception('No sequence to fetch') unless $sequence; my ($val) = $self->_get_dbh->selectrow_array( - sprintf "select $function('%s')", - $sequence + sprintf ("select %s('%s')", $function, $sequence) ); return $val;