__PACKAGE__->mk_group_accessors(simple => qw/_identity/);
__PACKAGE__->sql_limit_dialect ('RowNumberOver');
+__PACKAGE__->sql_quote_char ('"');
=head1 NAME
sub _new_uuid { 'UUIDTOSTR(NEWID())' }
-sub insert {
+sub _prefetch_autovalues {
my $self = shift;
my ($source, $to_insert) = @_;
+ my $values = $self->next::method(@_);
+
+ my $colinfo = $source->columns_info;
+
my $identity_col =
- first { $source->column_info($_)->{is_auto_increment} } $source->columns;
+ first { $colinfo->{$_}{is_auto_increment} } keys %$colinfo;
# user might have an identity PK without is_auto_increment
if (not $identity_col) {
foreach my $pk_col ($source->primary_columns) {
- if (not exists $to_insert->{$pk_col} &&
- $source->column_info($pk_col)->{data_type} !~ /^uniqueidentifier/i)
- {
+ if (
+ ! exists $to_insert->{$pk_col}
+ and
+ $colinfo->{$pk_col}{data_type}
+ and
+ $colinfo->{$pk_col}{data_type} !~ /^uniqueidentifier/i
+ ) {
$identity_col = $pk_col;
last;
}
};
if (defined $identity) {
- $to_insert->{$identity_col} = $identity;
+ $values->{$identity_col} = $identity;
$self->_identity($identity);
}
}
- return $self->next::method(@_);
+ return $values;
}
# convert UUIDs to strings in selects