}
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,
( $schema, $table ) = ( $1, $2 );
}
+### XXX This is unsafe in DBD::Pg 2.15.1, it can disconnect for some reason
+###
# 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} }
- : $self->_dbh_get_column_default( $dbh, $schema, $table, $col );
+# my $seq_expr = $DBD::Pg::VERSION >= 2.015001
+# ? eval{ $dbh->column_info(undef,$schema,$table,$col)->fetchrow_hashref->{COLUMN_DEF} }
+# : $self->_dbh_get_column_default( $dbh, $schema, $table, $col );
+
+ my $seq_expr = $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
# default value as a sequence, throw.