From: Rafael Kitover Date: Sat, 30 Jan 2010 22:24:55 +0000 (+0000) Subject: fix IDENTITY data_type for Sybase, more extra tests for Sybase X-Git-Tag: 0.05000~6 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=de82711a0abb69a8f67fc81e5e27f627d7053bf2;p=dbsrgits%2FDBIx-Class-Schema-Loader.git fix IDENTITY data_type for Sybase, more extra tests for Sybase --- diff --git a/lib/DBIx/Class/Schema/Loader/DBI/MSSQL.pm b/lib/DBIx/Class/Schema/Loader/DBI/MSSQL.pm index 6504330..d2c27a7 100644 --- a/lib/DBIx/Class/Schema/Loader/DBI/MSSQL.pm +++ b/lib/DBIx/Class/Schema/Loader/DBI/MSSQL.pm @@ -2,10 +2,7 @@ package DBIx::Class::Schema::Loader::DBI::MSSQL; use strict; use warnings; -use base qw/ - DBIx::Class::Schema::Loader::DBI - DBIx::Class::Schema::Loader::DBI::Sybase::Common -/; +use base 'DBIx::Class::Schema::Loader::DBI::Sybase::Common'; use Carp::Clan qw/^DBIx::Class/; use Class::C3; @@ -38,18 +35,6 @@ 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/lib/DBIx/Class/Schema/Loader/DBI/Sybase.pm b/lib/DBIx/Class/Schema/Loader/DBI/Sybase.pm index 8e7409f..e6643d6 100644 --- a/lib/DBIx/Class/Schema/Loader/DBI/Sybase.pm +++ b/lib/DBIx/Class/Schema/Loader/DBI/Sybase.pm @@ -2,10 +2,7 @@ package DBIx::Class::Schema::Loader::DBI::Sybase; use strict; use warnings; -use base qw/ - DBIx::Class::Schema::Loader::DBI - DBIx::Class::Schema::Loader::DBI::Sybase::Common -/; +use base 'DBIx::Class::Schema::Loader::DBI::Sybase::Common'; use Carp::Clan qw/^DBIx::Class/; use Class::C3; diff --git a/lib/DBIx/Class/Schema/Loader/DBI/Sybase/Common.pm b/lib/DBIx/Class/Schema/Loader/DBI/Sybase/Common.pm index bb34cfb..6ff38aa 100644 --- a/lib/DBIx/Class/Schema/Loader/DBI/Sybase/Common.pm +++ b/lib/DBIx/Class/Schema/Loader/DBI/Sybase/Common.pm @@ -2,6 +2,7 @@ package DBIx::Class::Schema::Loader::DBI::Sybase::Common; use strict; use warnings; +use base 'DBIx::Class::Schema::Loader::DBI'; use Carp::Clan qw/^DBIx::Class/; use Class::C3; @@ -63,6 +64,18 @@ sub _build_db_schema { return $db_schema; } +# 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; +} + =head1 SEE ALSO L, diff --git a/t/15sybase_common.t b/t/15sybase_common.t index f8ed46e..847b253 100644 --- a/t/15sybase_common.t +++ b/t/15sybase_common.t @@ -18,24 +18,62 @@ my $tester = dbixcsl_common_tests->new( q{ CREATE TABLE sybase_loader_test1 ( id INTEGER IDENTITY NOT NULL PRIMARY KEY, - ts timestamp + ts timestamp, + charfield VARCHAR(10) DEFAULT 'foo', + computed_dt AS getdate() ) }, ], drop => [ qw/ sybase_loader_test1 / ], - count => 1, + count => 7, run => sub { my ($schema, $monikers, $classes) = @_; my $rs = $schema->resultset($monikers->{sybase_loader_test1}); + my $rsrc = $rs->result_source; + + is $rsrc->column_info('id')->{data_type}, + 'numeric', + 'INTEGER IDENTITY data_type is correct'; + + is $rsrc->column_info('id')->{is_auto_increment}, + 1, + 'INTEGER IDENTITY is_auto_increment => 1'; { local $TODO = 'timestamp introspection broken'; - is $rs->result_source->column_info('ts')->{data_type}, + is $rsrc->column_info('ts')->{data_type}, 'timestamp', 'timestamps have the correct data_type'; } + + is $rsrc->column_info('charfield')->{data_type}, + 'varchar', + 'VARCHAR has correct data_type'; + + { + local $TODO = 'constant DEFAULT introspection'; + + is $rsrc->column_info('charfield')->{default}, + 'foo', + 'constant DEFAULT is correct'; + } + + is $rsrc->column_info('charfield')->{size}, + 10, + 'VARCHAR(10) has correct size'; + + { + local $TODO = 'data_type for computed columns'; + + ok ((exists $rsrc->column_info('computed_dt')->{data_type} + && (not defined $rsrc->column_info('computed_dt')->{data_type})), + 'data_type for computed column exists and is undef') +# or diag "Data type is: ", +# $rsrc->column_info('computed_dt')->{data_type} + ; + } }, }, );