| ... | ... | 
                  @@ -1,5 +1,7 @@  | 
              
| 1 | 
                  +0.1726  | 
              |
| 2 | 
                  + - improved join clause parsing  | 
              |
| 1 | 3 | 
                  0.1725  | 
              
| 2 | 
                  - - improved join clause parsing.  | 
              |
| 4 | 
                  + - improved join clause parsing  | 
              |
| 3 | 5 | 
                  0.1724  | 
              
| 4 | 6 | 
                  - added EXPERIMENTAL like_value method to DBIx::Custom  | 
              
| 5 | 7 | 
                  - sqlfilter option is renamed to after_build_sql, sqlfilter is DEPRECATED!  | 
              
| ... | ... | 
                  @@ -1,7 +1,7 @@  | 
              
| 1 | 1 | 
                  package DBIx::Custom;  | 
              
| 2 | 2 | 
                  use Object::Simple -base;  | 
              
| 3 | 3 | 
                   | 
              
| 4 | 
                  -our $VERSION = '0.1725';  | 
              |
| 4 | 
                  +our $VERSION = '0.1726';  | 
              |
| 5 | 5 | 
                  use 5.008001;  | 
              
| 6 | 6 | 
                   | 
              
| 7 | 7 | 
                  use Carp 'croak';  | 
              
| ... | ... | 
                  @@ -1460,7 +1460,7 @@ sub _push_join {
                 | 
              
| 1460 | 1460 | 
                   | 
              
| 1461 | 1461 | 
                  my @j_clauses = reverse split /\s(and|on)\s/, $j_clause;  | 
              
| 1462 | 1462 | 
                  my $c = $self->safety_character;  | 
              
| 1463 | 
                  - my $join_re = qr/(?:^|\s)($c+)\.$c+\s.+\s($c+)\.$c+/;  | 
              |
| 1463 | 
                  + my $join_re = qr/(?:^|\s)($c+)\.$c+[^$c]+($c+)\.$c+/;  | 
              |
| 1464 | 1464 | 
                               for my $clause (@j_clauses) {
                 | 
              
| 1465 | 1465 | 
                                   if ($clause =~ $join_re) {
                 | 
              
| 1466 | 1466 | 
                  $table1 = $1;  | 
              
| ... | ... | 
                  @@ -2205,14 +2205,14 @@ User name, used when C<connect> method is executed.  | 
              
| 2205 | 2205 | 
                  my $user_column_info = $dbi->user_column_info;  | 
              
| 2206 | 2206 | 
                  $dbi = $dbi->user_column_info($user_column_info);  | 
              
| 2207 | 2207 | 
                   | 
              
| 2208 | 
                  -You can set the following data.  | 
              |
| 2208 | 
                  +You can set the date like the following one.  | 
              |
| 2209 | 2209 | 
                   | 
              
| 2210 | 2210 | 
                  [  | 
              
| 2211 | 2211 | 
                           {table => 'book', column => 'title', info => {...}},
                 | 
              
| 2212 | 2212 | 
                           {table => 'author', column => 'name', info => {...}}
                 | 
              
| 2213 | 2213 | 
                  ]  | 
              
| 2214 | 2214 | 
                   | 
              
| 2215 | 
                  -Usually, you can set return value of C<get_column_info>.  | 
              |
| 2215 | 
                  +Usually, you set return value of C<get_column_info>.  | 
              |
| 2216 | 2216 | 
                   | 
              
| 2217 | 2217 | 
                  my $user_column_info  | 
              
| 2218 | 2218 | 
                  = $dbi->get_column_info(exclude_table => qr/^system/);  | 
              
| ... | ... | 
                  @@ -268,3 +268,21 @@ $rows = $dbi->select(  | 
              
| 268 | 268 | 
                     append => "order by key2 {limit 1}"
                 | 
              
| 269 | 269 | 
                  )->all;  | 
              
| 270 | 270 | 
                   is_deeply($rows, [{key1 => 1, key2 => 2}]);
                 | 
              
| 271 | 
                  +  | 
              |
| 272 | 
                  +test 'join function';  | 
              |
| 273 | 
                  +$dbi = DBIx::Custom->connect;  | 
              |
| 274 | 
                  +eval { $dbi->execute("drop table table1") };
                 | 
              |
| 275 | 
                  +eval { $dbi->execute("drop table table2") };
                 | 
              |
| 276 | 
                  +$dbi->execute($create_table1);  | 
              |
| 277 | 
                  +$dbi->execute("create table table2 (key1, key3)");
                 | 
              |
| 278 | 
                  +$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
                 | 
              |
| 279 | 
                  +$dbi->insert(table => 'table2', param => {key1 => 1, key3 => 4});
                 | 
              |
| 280 | 
                  +$dbi->insert(table => 'table2', param => {key1 => 1, key3 => 1});
                 | 
              |
| 281 | 
                  +$result = $dbi->select(  | 
              |
| 282 | 
                  + table => 'table1',  | 
              |
| 283 | 
                  +    column => [{table2 => ['key3']}],
                 | 
              |
| 284 | 
                  + join => [  | 
              |
| 285 | 
                  + "left outer join table2 on coalesce(table2.key3, 0) > '3' and table1.key1 = table2.key1"  | 
              |
| 286 | 
                  + ]  | 
              |
| 287 | 
                  +);  | 
              |
| 288 | 
                  +is_deeply($result->all, [{"table2.key3" => 4}]);
                 |