Fix bug for literal bind for ARRAY ghpr/closed/inspiring_3705e3b2
Dmitry Latin [Wed, 9 Apr 2014 17:32:46 +0000 (21:32 +0400)]
lib/DBIx/Class/InflateColumn.pm
t/update/array_literal_bind.t [moved from t/update/inflate_literal_bind.t with 83% similarity]

index 9214582..ae98d75 100644 (file)
@@ -116,7 +116,15 @@ sub _deflated_column {
   my ($self, $col, $value) = @_;
 #  return $value unless ref $value && blessed($value); # If it's not an object, don't touch it
   ## Leave scalar refs (ala SQL::Abstract literal SQL), untouched, deflate all other refs
-  return $value unless (ref $value && ref($value) ne 'SCALAR');
+  ## Also leave ref refs if it is ARRAY
+  return $value
+    unless (
+      ref $value
+      && !(    ref($value) eq 'SCALAR'
+          || ( ref($value) eq 'REF' && ref($$value) eq 'ARRAY' )
+      )
+  );
+
   my $info = $self->column_info($col) or
     $self->throw_exception("No column info for $col");
   return $value unless exists $info->{_inflate_info};
similarity index 83%
rename from t/update/inflate_literal_bind.t
rename to t/update/array_literal_bind.t
index 38527e3..19c7e97 100644 (file)
@@ -15,7 +15,8 @@ ok(
     $event->update(
         {
             starts_at => \[
-                'MAX(datetime(?), datetime(?))', '2006-04-25T22:24:33',
+                'MAX(starts_at, datetime(?), datetime(?))',
+                '2006-04-25T22:24:33',
                 '2007-04-25T22:24:33',
             ]
         }