ASA last_insert_id and limit support, still needs BLOB support
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / Storage / DBI / Sybase / Microsoft_SQL_Server.pm
index 7605080..0173fac 100644 (file)
@@ -4,7 +4,7 @@ use strict;
 use warnings;
 
 use base qw/
-  DBIx::Class::Storage::DBI::Sybase::Common
+  DBIx::Class::Storage::DBI::Sybase
   DBIx::Class::Storage::DBI::MSSQL
 /;
 use mro 'c3';
@@ -13,20 +13,26 @@ sub _rebless {
   my $self = shift;
   my $dbh  = $self->_get_dbh;
 
+  return if ref $self ne __PACKAGE__;
+
   if (not $self->_typeless_placeholders_supported) {
+    require
+      DBIx::Class::Storage::DBI::Sybase::Microsoft_SQL_Server::NoBindVars;
     bless $self,
       'DBIx::Class::Storage::DBI::Sybase::Microsoft_SQL_Server::NoBindVars';
     $self->_rebless;
   }
 }
 
-sub _init {
+sub _run_connection_actions {
   my $self = shift;
 
   # LongReadLen doesn't work with MSSQL through DBD::Sybase, and the default is
   # huge on some versions of SQL server and can cause memory problems, so we
-  # fix it up here (see Sybase/Common.pm)
+  # fix it up here (see ::DBI::Sybase.pm)
   $self->set_textsize;
+
+  $self->next::method(@_);
 }
 
 sub _dbh_begin_work {
@@ -37,14 +43,16 @@ sub _dbh_begin_work {
 
 sub _dbh_commit {
   my $self = shift;
-
-  $self->_dbh->do('COMMIT');
+  my $dbh  = $self->_dbh
+    or $self->throw_exception('cannot COMMIT on a disconnected handle');
+  $dbh->do('COMMIT');
 }
 
 sub _dbh_rollback {
   my $self = shift;
-
-  $self->_dbh->do('ROLLBACK');
+  my $dbh  = $self->_dbh
+    or $self->throw_exception('cannot ROLLBACK on a disconnected handle');
+  $dbh->do('ROLLBACK');
 }
 
 1;