Remove use of Try::Tiny entirely (the missing part of ddcc02d1)
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / Storage / DBI / Sybase / ASE.pm
index 017709c..fde0b73 100644 (file)
@@ -11,9 +11,11 @@ use base qw/
 use mro 'c3';
 use DBIx::Class::Carp;
 use Scalar::Util qw/blessed weaken/;
-use Try::Tiny;
 use Context::Preserve 'preserve_context';
-use DBIx::Class::_Util qw( sigwarn_silencer dbic_internal_try dump_value scope_guard set_subname );
+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');
@@ -247,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 {
@@ -357,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';
     }
@@ -638,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);
@@ -716,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 (
@@ -751,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): $_")
     };
 
@@ -804,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: $_"