X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FStorage%2FDBI%2FPg.pm;h=3d25b835656fd0792eb93873d71661dc28818f06;hb=7ef97d266d92f1239f075f079cb94f20e31fa3d6;hp=8e024f02e74c1a81599f667e9cf84263caaeb691;hpb=777f75276c79ae7d418ae1e75ab654aebb8e530a;p=dbsrgits%2FDBIx-Class-Historic.git diff --git a/lib/DBIx/Class/Storage/DBI/Pg.pm b/lib/DBIx/Class/Storage/DBI/Pg.pm index 8e024f0..3d25b83 100644 --- a/lib/DBIx/Class/Storage/DBI/Pg.pm +++ b/lib/DBIx/Class/Storage/DBI/Pg.pm @@ -20,15 +20,22 @@ sub with_deferred_fk_checks { } sub last_insert_id { - my ($self,$source,$col) = @_; - my $seq = ( $source->column_info($col)->{sequence} ||= $self->dbh_do('_dbh_get_autoinc_seq', $source, $col) ) + my ($self,$source,@cols) = @_; + + my @values; + + for my $col (@cols) { + my $seq = ( $source->column_info($col)->{sequence} ||= $self->dbh_do('_dbh_get_autoinc_seq', $source, $col) ) or $self->throw_exception( "could not determine sequence for " . $source->name . ".$col, please consider adding a " . "schema-qualified sequence to its column info" ); - $self->_dbh_last_insert_id ($self->_dbh, $seq); + push @values, $self->_dbh_last_insert_id ($self->_dbh, $seq); + } + + return @values; } # there seems to be absolutely no reason to have this as a separate method, @@ -54,10 +61,10 @@ sub _dbh_get_autoinc_seq { ( $schema, $table ) = ( $1, $2 ); } - my $seq_expr = $DBD::Pg::VERSION > 2.015001 - # use DBD::Pg to fetch the column info if it is recent enough to work + # use DBD::Pg to fetch the column info if it is recent enough to + # work. otherwise, use custom SQL + my $seq_expr = $DBD::Pg::VERSION >= 2.015001 ? eval{ $dbh->column_info(undef,$schema,$table,$col)->fetchrow_hashref->{COLUMN_DEF} } - # otherwise, use a custom SQL method : $self->_dbh_get_column_default( $dbh, $schema, $table, $col ); # if no default value is set on the column, or if we can't parse the