X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FStorage%2FDBI%2FSybase.pm;h=9072b38696fdb2adead8647088c287f33f88e5c6;hb=ddcc02d14d03169c54c65db9f0f446836483ba55;hp=79a449e06ffd2b3b6661be0674a1adc2c0e0d7b0;hpb=37b5ab5186b53c5e786e32127d2589bd6dc9b3e0;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Storage/DBI/Sybase.pm b/lib/DBIx/Class/Storage/DBI/Sybase.pm index 79a449e..9072b38 100644 --- a/lib/DBIx/Class/Storage/DBI/Sybase.pm +++ b/lib/DBIx/Class/Storage/DBI/Sybase.pm @@ -2,6 +2,7 @@ package DBIx::Class::Storage::DBI::Sybase; use strict; use warnings; +use DBIx::Class::_Util 'dbic_internal_try'; use Try::Tiny; use namespace::clean; @@ -21,28 +22,25 @@ L =cut -sub _rebless { - my $self = shift; +sub _rebless { shift->_determine_connector_driver('Sybase') } - my $dbtype; - try { - $dbtype = @{$self->_get_dbh->selectrow_arrayref(qq{sp_server_info \@attribute_id=1})}[2] - } catch { - $self->throw_exception("Unable to establish connection to determine database type: $_") - }; +sub _get_rdbms_name { + my $self = shift; - if ($dbtype) { - $dbtype =~ s/\W/_/gi; + dbic_internal_try { + my $name = $self->_get_dbh->selectrow_arrayref('sp_server_info @attribute_id=1')->[2]; - # saner class name - $dbtype = 'ASE' if $dbtype eq 'SQL_Server'; + if ($name) { + $name =~ s/\W/_/gi; - my $subclass = __PACKAGE__ . "::$dbtype"; - if ($self->load_optional_class($subclass)) { - bless $self, $subclass; - $self->_rebless; + # saner class name + $name = 'ASE' if $name eq 'SQL_Server'; } - } + + $name; # RV + } catch { + $self->throw_exception("Unable to establish connection to determine database type: $_") + }; } sub _init { @@ -80,9 +78,9 @@ sub _ping { # FIXME if the main connection goes stale, does opening another for this statement # really determine anything? - +# FIXME (2) THIS MAKES 0 SENSE!!! Need to test later if ($dbh->{syb_no_child_con}) { - return try { + return dbic_internal_try { $self->_connect->do('select 1'); 1; } @@ -91,13 +89,14 @@ sub _ping { }; } - return try { - $dbh->do('select 1'); - 1; - } - catch { - 0; - }; + return ( + (dbic_internal_try { + $dbh->do('select 1'); + 1; + }) + ? 1 + : 0 + ); } sub _set_max_connect { @@ -131,14 +130,18 @@ sub _using_freetds_version { return $inf =~ /v([0-9\.]+)/ ? $1 : 0; } -1; +=head1 FURTHER QUESTIONS? -=head1 AUTHORS +Check the list of L. -See L. +=head1 COPYRIGHT AND LICENSE -=head1 LICENSE - -You may distribute this code under the same terms as Perl itself. +This module is free software L +by the L. You can +redistribute it and/or modify it under the same terms as the +L. =cut + +1; +