Showing 2 changed files with 9 additions and 5 deletions
+7 -4
lib/DBIx/Custom.pm
... ...
@@ -1263,15 +1263,18 @@ sub _create_query {
1263 1263
             my $duplicate;
1264 1264
             # Parameter regex
1265 1265
             $sql =~ s/([0-9]):/$1\\:/g;
1266
-            while ($sql =~ /(.*?[^\\]):([$c\.]+)(?:\{(.*?)\})?(.*)/sg) {
1266
+            my $new_sql = '';
1267
+            while ($sql =~ /(.*?[^\\]):([$c\.]+)(?:\{(.*?)\})?(.*)/s) {
1267 1268
                 push @columns, $2;
1268 1269
                 $duplicate = 1 if ++$duplicate{$columns[-1]} > 1;
1269
-                $sql = defined $3 ? "$1$2 $3 ?$4" : "$1?$4";
1270
+                ($new_sql, $sql) = defined $3 ?
1271
+                  ($new_sql . "$1$2 $3 ?", " $4") : ($new_sql . "$1?", " $4");
1270 1272
             }
1271
-            $sql =~ s/\\:/:/g if index($sql, "\\:") != -1;
1273
+            $new_sql .= $sql;
1274
+            $new_sql =~ s/\\:/:/g if index($new_sql, "\\:") != -1;
1272 1275
 
1273 1276
             # Create query
1274
-            $query = {sql => $sql, columns => \@columns, duplicate => $duplicate};
1277
+            $query = {sql => $new_sql, columns => \@columns, duplicate => $duplicate};
1275 1278
         }
1276 1279
         
1277 1280
         # Save query to cache
+2 -1
t/common.t
... ...
@@ -243,6 +243,7 @@ test 'execute reuse option';
243 243
 eval { $dbi->execute("drop table $table1") };
244 244
 $dbi->execute($create_table1);
245 245
 $reuse = {};
246
+$DB::single = 1;
246 247
 for my $i (1 .. 2) {
247 248
   $dbi->insert({$key1 => 1, $key2 => 2}, table => $table1, reuse => $reuse);
248 249
 }
... ...
@@ -1270,7 +1271,7 @@ $dbi->execute($create_table1);
1270 1271
 $source = "select * from $table1 where $key1 = :$key1 and $key2 = :$key2";
1271 1272
 $dbi->execute($source, {}, query => 1);
1272 1273
 is_deeply($dbi->{_cached}->{$source}, 
1273
-          {sql => " select * from $table1 where $key1 = ? and $key2 = ?", columns => [$key1, $key2], tables => []}, "cache");
1274
+          {sql => " select * from $table1 where $key1 = ?  and $key2 = ? ", columns => [$key1, $key2], tables => []}, "cache");
1274 1275
 
1275 1276
 eval { $dbi->execute("drop table $table1") };
1276 1277
 $dbi->execute($create_table1);