fixed where clause parsing bug when time(like 00:00...
...:00) contain
| ... | ... | @@ -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,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'; | 
| ... | ... | @@ -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; | 
| ... | ... | @@ -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( |