X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FStorage%2FDBI%2FPg.pm;h=7fb6b8c1677b53a31ef3c3d228a863b989a42fc1;hb=ca48cd7ddaf84b1e9a37c975321f96f2e65e8198;hp=6faaf4c3aa8c5c90e163ff17d2c15fb9cf2e33a9;hpb=0a8462d4fedc5392edec025bae67abd9c044d69e;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 6faaf4c..7fb6b8c 100644 --- a/lib/DBIx/Class/Storage/DBI/Pg.pm +++ b/lib/DBIx/Class/Storage/DBI/Pg.pm @@ -8,21 +8,14 @@ use base qw/DBIx::Class::Storage::DBI/; # __PACKAGE__->load_components(qw/PK::Auto/); sub last_insert_id { - my ($self, $source) = @_; - $self->get_autoinc_seq($source) unless $source->{_autoinc_seq}; - $self->_dbh->last_insert_id(undef,undef,undef,undef, - {sequence => $source->{_autoinc_seq}}); + my ($self,$source,$col) = @_; + my $seq = ($source->column_info($col)->{sequence} ||= $self->get_autoinc_seq($source,$col)); + $self->_dbh->last_insert_id(undef,undef,undef,undef, {sequence => $seq}); } sub get_autoinc_seq { - my ($self,$source) = @_; - - # return the user-defined sequence if known - my $result_class = $source->result_class; - if ($result_class->can('sequence') and $result_class->sequence) { - return ($source->{_autoinc_seq} = $result_class->sequence); - } - + my ($self,$source,$col) = @_; + my @pri = $source->primary_columns; my $dbh = $self->_dbh; my ($schema,$table) = $source->name =~ /^(.+)\.(.+)$/ ? ($1,$2) @@ -32,8 +25,7 @@ sub get_autoinc_seq { if (defined $info->[12] and $info->[12] =~ /^nextval\('"?([^"']+)"?'::(?:text|regclass)\)/) { - $source->{_autoinc_seq} = $1; - last; + return $1; } } }