use strict;
use warnings;
+use DBIx::Class::_Util 'dbic_internal_try';
use Try::Tiny;
use namespace::clean;
=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 {
# 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;
}
};
}
- return try {
- $dbh->do('select 1');
- 1;
- }
- catch {
- 0;
- };
+ return (
+ (dbic_internal_try {
+ $dbh->do('select 1');
+ 1;
+ })
+ ? 1
+ : 0
+ );
}
sub _set_max_connect {