| ... | ... | 
                  @@ -56,7 +56,7 @@ sub fetch_hash {
                 | 
              
| 56 | 56 | 
                  # Filter  | 
              
| 57 | 57 | 
                       my $row_hash = {};
                 | 
              
| 58 | 58 | 
                       for (my $i = 0; $i < @$columns; $i++) {
                 | 
              
| 59 | 
                  -        my $fname  = $filter->{$columns->[$i]} || $filters->{$default_filter} || '';
                 | 
              |
| 59 | 
                  +        my $fname  = $filter->{$columns->[$i]} || $default_filter || '';
                 | 
              |
| 60 | 60 | 
                           my $filter = $filters->{$fname};
                 | 
              
| 61 | 61 | 
                           $row_hash->{$columns->[$i]} = $filter
                 | 
              
| 62 | 62 | 
                  ? $filter->($row->[$i])  | 
              
| ... | ... | 
                  @@ -37,7 +37,7 @@ my $NEW_ARGS = {
                 | 
              
| 37 | 37 | 
                       0 => {data_source => 'dbi:SQLite:dbname=:memory:'}
                 | 
              
| 38 | 38 | 
                  };  | 
              
| 39 | 39 | 
                   | 
              
| 40 | 
                  -# Variables for test  | 
              |
| 40 | 
                  +# Variables  | 
              |
| 41 | 41 | 
                  my $dbi;  | 
              
| 42 | 42 | 
                  my $sth;  | 
              
| 43 | 43 | 
                  my $tmpl;  | 
              
| ... | ... | 
                  @@ -48,6 +48,7 @@ my $update_tmpl;  | 
              
| 48 | 48 | 
                  my $params;  | 
              
| 49 | 49 | 
                  my $sql;  | 
              
| 50 | 50 | 
                  my $result;  | 
              
| 51 | 
                  +my $row;  | 
              |
| 51 | 52 | 
                  my @rows;  | 
              
| 52 | 53 | 
                  my $rows;  | 
              
| 53 | 54 | 
                  my $query;  | 
              
| ... | ... | 
                  @@ -310,11 +311,16 @@ $rows = $result->fetch_hash_all;  | 
              
| 310 | 311 | 
                   is_deeply($rows, [{key1 => 1, key2 => 2}, {key1 => 3, key2 => 4}], "$test : basic");
                 | 
              
| 311 | 312 | 
                   | 
              
| 312 | 313 | 
                   $dbi->execute('delete from table1');
                 | 
              
| 313 | 
                  -$dbi->resist_filter(three_times => sub { $_[0] * 3});
                 | 
              |
| 314 | 
                  +$dbi->resist_filter(  | 
              |
| 315 | 
                  +    twice       => sub { $_[0] * 2 },
                 | 
              |
| 316 | 
                  +    three_times => sub { $_[0] * 3 }
                 | 
              |
| 317 | 
                  +);  | 
              |
| 318 | 
                  +$dbi->default_query_filter('twice');
                 | 
              |
| 314 | 319 | 
                   $dbi->insert('table1', {key1 => 1, key2 => 2}, {filter => {key1 => 'three_times'}});
                 | 
              
| 315 | 320 | 
                   $result = $dbi->execute($SELECT_TMPLS->{0});
                 | 
              
| 316 | 321 | 
                  $rows = $result->fetch_hash_all;  | 
              
| 317 | 
                  -is_deeply($rows, [{key1 => 3, key2 => 2}], "$test : filter");
                 | 
              |
| 322 | 
                  +is_deeply($rows, [{key1 => 3, key2 => 4}], "$test : filter");
                 | 
              |
| 323 | 
                  +$dbi->default_query_filter(undef);  | 
              |
| 318 | 324 | 
                   | 
              
| 319 | 325 | 
                   $dbi->execute($DROP_TABLE->{0});
                 | 
              
| 320 | 326 | 
                   $dbi->execute($CREATE_TABLE->{0});
                 | 
              
| ... | ... | 
                  @@ -518,4 +524,17 @@ $query->filter('bbb');
                 | 
              
| 518 | 524 | 
                  $query = $dbi->create_query($tmpls[0]);  | 
              
| 519 | 525 | 
                  ok(!$query->filter, "$test : only cached sql and columns");  | 
              
| 520 | 526 | 
                   | 
              
| 527 | 
                  +test 'fetch filter';  | 
              |
| 528 | 
                  +$dbi = DBIx::Custom->new($NEW_ARGS->{0});
                 | 
              |
| 529 | 
                  +$dbi->resist_filter(  | 
              |
| 530 | 
                  +    twice       => sub { $_[0] * 2 },
                 | 
              |
| 531 | 
                  +    three_times => sub { $_[0] * 3 }
                 | 
              |
| 532 | 
                  +);  | 
              |
| 533 | 
                  +$dbi->default_fetch_filter('twice');
                 | 
              |
| 534 | 
                  +$dbi->execute($CREATE_TABLE->{0});
                 | 
              |
| 535 | 
                  +$dbi->insert('table1', {key1 => 1, key2 => 2});
                 | 
              |
| 536 | 
                  +$result = $dbi->select('table1');
                 | 
              |
| 537 | 
                  +$result->filter({key1 => 'three_times'});
                 | 
              |
| 538 | 
                  +$row = $result->fetch_hash_single;  | 
              |
| 539 | 
                  +is_deeply($row, {key1 => 3, key2 => 4}, "$test: default_fetch_filter and filter");
                 | 
              |
| 521 | 540 | 
                   |