Showing 3 changed files with 23 additions and 10 deletions
+2
Changes
... ...
@@ -1,3 +1,5 @@
1
+0.1682
2
+    - fixed merge_param bug
1 3
 0.1681
2 4
     - added EXPERIMENTAL assign_tag() method
3 5
 0.1680
+13 -10
lib/DBIx/Custom.pm
... ...
@@ -1,6 +1,6 @@
1 1
 package DBIx::Custom;
2 2
 
3
-our $VERSION = '0.1681';
3
+our $VERSION = '0.1682';
4 4
 
5 5
 use 5.008001;
6 6
 use strict;
... ...
@@ -730,21 +730,24 @@ sub merge_param {
730 730
     my ($self, @params) = @_;
731 731
     
732 732
     # Merge parameters
733
-    my $param = {};
734
-    foreach my $p (@params) {
735
-        foreach my $column (keys %$p) {
736
-            if (exists $param->{$column}) {
737
-                $param->{$column} = [$param->{$column}]
738
-                  unless ref $param->{$column} eq 'ARRAY';
739
-                push @{$param->{$column}}, $p->{$column};
733
+    my $merge = {};
734
+    foreach my $param (@params) {
735
+        foreach my $column (keys %$param) {
736
+            my $param_is_array = ref $param->{$column} eq 'ARRAY' ? 1 : 0;
737
+            
738
+            if (exists $merge->{$column}) {
739
+                $merge->{$column} = [$merge->{$column}]
740
+                  unless ref $merge->{$column} eq 'ARRAY';
741
+                push @{$merge->{$column}},
742
+                  ref $param->{$column} ? @{$param->{$column}} : $param->{$column};
740 743
             }
741 744
             else {
742
-                $param->{$column} = $p->{$column};
745
+                $merge->{$column} = $param->{$column};
743 746
             }
744 747
         }
745 748
     }
746 749
     
747
-    return $param;
750
+    return $merge;
748 751
 }
749 752
 
750 753
 sub method {
+8
t/dbix-custom-core-sqlite.t
... ...
@@ -2132,6 +2132,14 @@ test 'merge_param';
2132 2132
     is_deeply($param, {key1 => [1, 1, 1], key2 => [2, 2], key3 => 3});
2133 2133
 }
2134 2134
 
2135
+{
2136
+    my $dbi = DBIx::Custom->new;
2137
+    my $param1 = {key1 => [1, 2], key2 => 1, key3 => [1, 2]};
2138
+    my $param2 = {key1 => [3, 4], key2 => [2, 3], key3 => 3};
2139
+    my $param = $dbi->merge_param($param1, $param2);
2140
+    is_deeply($param, {key1 => [1, 2, 3, 4], key2 => [1, 2, 3], key3 => [1, 2, 3]});
2141
+}
2142
+
2135 2143
 test 'select() param option';
2136 2144
 $dbi = DBIx::Custom->connect($NEW_ARGS->{0});
2137 2145
 $dbi->execute($CREATE_TABLE->{0});