Remove use of Try::Tiny entirely (the missing part of ddcc02d1)
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / Storage / DBI / Sybase / ASE.pm
index a6ff2c7..fde0b73 100644 (file)
@@ -11,10 +11,11 @@ use base qw/
 use mro 'c3';
 use DBIx::Class::Carp;
 use Scalar::Util qw/blessed weaken/;
-use Sub::Name();
-use Try::Tiny;
 use Context::Preserve 'preserve_context';
-use DBIx::Class::_Util qw( sigwarn_silencer dbic_internal_try dump_value scope_guard );
+use DBIx::Class::_Util qw(
+  sigwarn_silencer dbic_internal_try dbic_internal_catch
+  dump_value scope_guard set_subname
+);
 use namespace::clean;
 
 __PACKAGE__->sql_limit_dialect ('GenericSubQ');
@@ -164,7 +165,7 @@ for my $method (@also_proxy_to_extra_storages) {
 
   my $replaced = __PACKAGE__->can($method);
 
-  *{$method} = Sub::Name::subname $method => sub {
+  *{$method} = set_subname $method => sub {
     my $self = shift;
     $self->_writer_storage->$replaced(@_) if $self->_writer_storage;
     $self->_bulk_storage->$replaced(@_)   if $self->_bulk_storage;
@@ -248,7 +249,9 @@ sub connect_call_blob_setup {
 sub _is_lob_column {
   my ($self, $source, $column) = @_;
 
-  return $self->_is_lob_type($source->column_info($column)->{data_type});
+  return $self->_is_lob_type(
+    $source->columns_info([$column])->{$column}{data_type}
+  );
 }
 
 sub _prep_for_execute {
@@ -358,15 +361,28 @@ sub insert {
   # try to insert explicit 'DEFAULT's instead (except for identity, timestamp
   # and computed columns)
   if (not %$to_insert) {
+
+    my $ci;
+    # same order as add_columns
     for my $col ($source->columns) {
       next if $col eq $identity_col;
 
-      my $info = $source->column_info($col);
-
-      next if ref $info->{default_value} eq 'SCALAR'
-        || (exists $info->{data_type} && (not defined $info->{data_type}));
-
-      next if $info->{data_type} && $info->{data_type} =~ /^timestamp\z/i;
+      my $info = ( $ci ||= $source->columns_info )->{$col};
+
+      next if (
+        ref $info->{default_value} eq 'SCALAR'
+          or
+        (
+          exists $info->{data_type}
+            and
+          ! defined $info->{data_type}
+        )
+          or
+        (
+          ( $info->{data_type} || '' )
+            =~ /^timestamp\z/i
+        )
+      );
 
       $to_insert->{$col} = \'DEFAULT';
     }
@@ -576,7 +592,7 @@ sub _insert_bulk {
 # This ignores any data conversion errors detected by the client side libs, as
 # they are usually harmless.
   my $orig_cslib_cb = DBD::Sybase::set_cslib_cb(
-    Sub::Name::subname _insert_bulk_cslib_errhandler => sub {
+    set_subname _insert_bulk_cslib_errhandler => sub {
       my ($layer, $origin, $severity, $errno, $errmsg, $osmsg, $blkmsg) = @_;
 
       return 1 if $errno == 36;
@@ -639,8 +655,9 @@ sub _insert_bulk {
     $guard->commit;
 
     $bulk->_query_end($sql);
-  } catch {
-    $exception = shift;
+  }
+  dbic_internal_catch {
+    $exception = $_;
   };
 
   DBD::Sybase::set_cslib_cb($orig_cslib_cb);
@@ -717,11 +734,14 @@ sub _remove_blob_cols_array {
 sub _update_blobs {
   my ($self, $source, $blob_cols, $where) = @_;
 
-  my @primary_cols = dbic_internal_try
-    { $source->_pri_cols_or_die }
-    catch {
+  my @primary_cols =
+    dbic_internal_try {
+      $source->_pri_cols_or_die
+    }
+    dbic_internal_catch {
       $self->throw_exception("Cannot update TEXT/IMAGE column(s): $_")
-    };
+    }
+  ;
 
   my @pks_to_update;
   if (
@@ -752,7 +772,7 @@ sub _insert_blobs {
 
   my @primary_cols = dbic_internal_try
     { $source->_pri_cols_or_die }
-    catch {
+    dbic_internal_catch {
       $self->throw_exception("Cannot update TEXT/IMAGE column(s): $_")
     };
 
@@ -805,7 +825,7 @@ sub _insert_blobs {
 
       $sth->func('ct_finish_send') or die $sth->errstr;
     }
-    catch {
+    dbic_internal_catch {
       if ($self->_using_freetds) {
         $self->throw_exception (
           "TEXT/IMAGE operation failed, probably because you are using FreeTDS: $_"