X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FSchema%2FLoader%2FDBI%2FSybase%2FCommon.pm;h=bcd978e057cab97e548a0aecdbd6c649a932cbe6;hb=3b71e53bd47bd29213e8fe12b3f9a2d1a229b587;hp=2bc827e422c56146a27a9d871e4bbf828da71c0a;hpb=1bcb47d3c20055e9c5d9fe522b3ddd1a7f1bbec9;p=dbsrgits%2FDBIx-Class-Schema-Loader.git diff --git a/lib/DBIx/Class/Schema/Loader/DBI/Sybase/Common.pm b/lib/DBIx/Class/Schema/Loader/DBI/Sybase/Common.pm index 2bc827e..bcd978e 100644 --- a/lib/DBIx/Class/Schema/Loader/DBI/Sybase/Common.pm +++ b/lib/DBIx/Class/Schema/Loader/DBI/Sybase/Common.pm @@ -2,19 +2,20 @@ 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; +use mro 'c3'; -our $VERSION = '0.04999_08'; +our $VERSION = '0.07007'; =head1 NAME -DBIx::Class::Schema::Loader::DBI::Sybase::Common - Common functions for Sybase +DBIx::Class::Schema::Loader::DBI::Sybase::Common - Common methods for Sybase and MSSQL =head1 DESCRIPTION -See L. +See L and L. =cut @@ -22,57 +23,54 @@ See L. sub _build_quoter { '"' } sub _build_namesep { '.' } -sub _set_quote_char_and_name_sep { +sub _setup { my $self = shift; - $self->schema->storage->sql_maker->quote_char([qw/[ ]/]) - unless $self->schema->storage->sql_maker->quote_char; + $self->next::method(@_); - $self->schema->storage->sql_maker->name_sep('.') - unless $self->schema->storage->sql_maker->name_sep; + $self->schema->storage->sql_maker->quote_char([qw/[ ]/]); + $self->schema->storage->sql_maker->name_sep('.'); + $self->{db_schema} ||= $self->_build_db_schema; } sub _build_db_schema { my $self = shift; my $dbh = $self->schema->storage->dbh; - local $dbh->{FetchHashKeyName} = 'NAME_lc'; - - my $test_table = "_loader_test_$$"; - - my $db_schema = 'dbo'; # default - - eval { - $dbh->do("create table $test_table (id integer)"); - my $sth = $dbh->prepare('sp_tables'); - $sth->execute; - while (my $row = $sth->fetchrow_hashref) { - next unless $row->{table_name} eq $test_table; - - $db_schema = $row->{table_owner}; - last; - } - $sth->finish; - $dbh->do("drop table $test_table"); - }; - my $exception = $@; - eval { $dbh->do("drop table $test_table") }; - carp "Could not determine db_schema, defaulting to $db_schema : $exception" - if $exception; + my ($db_schema) = $dbh->selectrow_array('select user_name()'); return $db_schema; } +# remove 'IDENTITY' from column data_type +sub _columns_info_for { + my $self = shift; + my $result = $self->next::method(@_); + + foreach my $col (keys %$result) { + $result->{$col}->{data_type} =~ s/\s* identity \s*//ix; + } + + return $result; +} + =head1 SEE ALSO L, L, +L, +L, L L, L, =head1 AUTHOR -Rafael Kitover +See L and L. + +=head1 LICENSE + +This library is free software; you can redistribute it and/or modify it under +the same terms as Perl itself. =cut