Made stringify_bind() work with 'bindtype' set to 'columns' and 'array_datatypes...
Norbert Buchmuller [Sun, 16 Nov 2008 21:20:44 +0000 (21:20 +0000)]
lib/SQL/Abstract/Test.pm

index d55f3a8..31a0eb7 100644 (file)
@@ -52,8 +52,17 @@ sub stringify_bind {
 
   # some bind values can be arrayrefs (see L<SQL::Abstract/bindtype>),
   # so stringify them.
-  my @strings = map {ref $_ eq 'ARRAY' ? join('=>', @$_) : ($_ || '')} 
-                    @$bind_ref;
+  # furthermore, if L<SQL::Abstract/array_datatypes> is set to true, elements
+  # of those arrayrefs can be arrayrefs, too.
+  my @strings = map {
+    ref $_ eq 'ARRAY'
+      ? join('=>', map {
+          ref $_ eq 'ARRAY'
+            ? ('[' . join('=>', @$_) . ']')
+            : (defined $_ ? $_ : '')
+        } @$_)
+      : (defined $_ ? $_ : '')
+  } @$bind_ref;
 
   # join all values into a single string
   return join "///", @strings;