Showing 4 changed files with 27 additions and 3 deletions
+1
Changes
... ...
@@ -1,4 +1,5 @@
1 1
 0.1742
2
+    - fixed where clause parsing bug when time(like 00:00:00) contain
2 3
     - fixed update_or_insert method bug
3 4
     - micro optimization
4 5
 0.1741
+1 -1
lib/DBIx/Custom.pm
... ...
@@ -1,7 +1,7 @@
1 1
 package DBIx::Custom;
2 2
 use Object::Simple -base;
3 3
 
4
-our $VERSION = '0.1742';
4
+our $VERSION = '0.1743';
5 5
 use 5.008001;
6 6
 
7 7
 use Carp 'croak';
+8 -2
lib/DBIx/Custom/Where.pm
... ...
@@ -109,11 +109,17 @@ sub _parse {
109 109
         my $c = $self->{_safety_character};
110 110
         
111 111
         my $column;
112
-        if ($clause =~ /(\s|^)\{/ && $self->{_tag_parse}) {
112
+        if ($self->{_tag_parse} && $clause =~ /(\s|^)\{/) {
113 113
             my $columns = $self->dbi->query_builder->build_query($clause)->{columns};
114 114
             $column = $columns->[0];
115 115
         }
116
-        else { ($column) = $clause =~ /:([$c\.]+)/ }
116
+        else {
117
+            my $sql = $clause;
118
+            $sql =~ s/([0-9]):/$1\\:/g;
119
+            if ($sql =~ /[^\\]:([$c\.]+)/s || $sql =~ /^:([$c\.]+)/s) {
120
+                ($column) = $1;
121
+            }
122
+        }
117 123
         unless (defined $column) {
118 124
             push @$where, $clause;
119 125
             $pushed = 1;
+17
t/common.t
... ...
@@ -1788,6 +1788,23 @@ $result = $dbi->execute("select * from $table1 $where", {$key1 => [0, 1]});
1788 1788
 $row = $result->all;
1789 1789
 is_deeply($row, [{$key1 => 1, $key2 => 2}]);
1790 1790
 
1791
+
1792
+$dbi = DBIx::Custom->connect;
1793
+eval { $dbi->execute("drop table $table1") };
1794
+$dbi->execute($create_table1);
1795
+$dbi->insert(table => $table1, param => {$key1 => 1, $key2 => '00:00:00'});
1796
+$dbi->insert(table => $table1, param => {$key1 => 1, $key2 => '3'});
1797
+$where = $dbi->where
1798
+             ->clause(['and', "$key1 = :$key1", "$key2 = '00:00:00'"])
1799
+             ->param({$key1 => 1});
1800
+
1801
+$result = $dbi->select(
1802
+    table => $table1,
1803
+    where => $where
1804
+);
1805
+$row = $result->all;
1806
+is_deeply($row, [{$key1 => 1, $key2 => '00:00:00'}]);
1807
+
1791 1808
 test 'register_tag_processor';
1792 1809
 $dbi = DBIx::Custom->connect;
1793 1810
 $dbi->register_tag_processor(