From: Rafael Kitover Date: Sat, 31 Oct 2009 11:19:24 +0000 (+0000) Subject: fix data_type for identities in MSSQL RT#50523 X-Git-Tag: 0.04999_10~1 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=d89bca780ecc98267c8d6533187d11c370918ca7;p=dbsrgits%2FDBIx-Class-Schema-Loader.git fix data_type for identities in MSSQL RT#50523 --- diff --git a/lib/DBIx/Class/Schema/Loader/DBI/MSSQL.pm b/lib/DBIx/Class/Schema/Loader/DBI/MSSQL.pm index 1d4dac5..09bb494 100644 --- a/lib/DBIx/Class/Schema/Loader/DBI/MSSQL.pm +++ b/lib/DBIx/Class/Schema/Loader/DBI/MSSQL.pm @@ -38,6 +38,18 @@ sub _setup { $self->_set_quote_char_and_name_sep; } +# remove 'IDENTITY' from column data_type +sub _columns_info_for { + my $self = shift; + my $result = $self->next::method(@_); + + for my $col (keys %$result) { + $result->{$col}->{data_type} =~ s/\s* identity \s*//ix; + } + + return $result; +} + sub _table_pk_info { my ($self, $table) = @_; my $dbh = $self->schema->storage->dbh; diff --git a/t/lib/dbixcsl_mssql_extra_tests.pm b/t/lib/dbixcsl_mssql_extra_tests.pm index bf178d7..d4125ef 100644 --- a/t/lib/dbixcsl_mssql_extra_tests.pm +++ b/t/lib/dbixcsl_mssql_extra_tests.pm @@ -19,10 +19,11 @@ sub extra { +{ }, ], drop => [ "[${vendor}_loader_test1.dot]" ], - count => 4, + count => 6, run => sub { my ($schema, $monikers, $classes) = @_; +# Test that the table above (with '.' in name) gets loaded correctly. my $vendor_titlecased = "\u\L$vendor"; ok((my $rs = eval { @@ -36,6 +37,17 @@ sub extra { +{ is eval { $$from }, "[${vendor}_loader_test1.dot]", '->table name is correct'; + +# Test that identity columns do not have 'identity' in the data_type, and do +# have is_auto_increment. + my $identity_col_info = $schema->resultset('LoaderTest10') + ->result_source->column_info('id10'); + + is $identity_col_info->{data_type}, 'int', + q{'INT IDENTITY' column has data_type => 'int'}; + + is $identity_col_info->{is_auto_increment}, 1, + q{'INT IDENTITY' column has is_auto_increment => 1}; }, }}