| ... | ... | 
                  @@ -208,21 +208,24 @@ Object::Simple->build_class;  | 
              
| 208 | 208 | 
                  package DBI::Custom::Result;  | 
              
| 209 | 209 | 
                  use Object::Simple;  | 
              
| 210 | 210 | 
                   | 
              
| 211 | 
                  -sub sth : Attr {}
                 | 
              |
| 212 | 
                  -sub fetch_filter {}
                 | 
              |
| 211 | 
                  +sub sth          : Attr {}
                 | 
              |
| 212 | 
                  +sub fetch_filter : Attr {}
                 | 
              |
| 213 | 213 | 
                   | 
              
| 214 | 214 | 
                   sub fetchrow_arrayref {
                 | 
              
| 215 | 215 | 
                  my $self = shift;  | 
              
| 216 | 216 | 
                       my $sth = $self->{sth};
                 | 
              
| 217 | 217 | 
                   | 
              
| 218 | 
                  + $DB::single = 1;  | 
              |
| 218 | 219 | 
                  my $array = $sth->fetchrow_arrayref;  | 
              
| 219 | 220 | 
                   | 
              
| 220 | 221 | 
                  return $array unless $array;  | 
              
| 221 | 222 | 
                   | 
              
| 222 | 223 | 
                       my $keys = $sth->{NAME_lc};
                 | 
              
| 223 | 
                  -  | 
              |
| 224 | 
                  -    for (my $i = 0; $i < @$keys; $i++) {
                 | 
              |
| 225 | 
                  - $array->[$i] = $self->fetch_filter($keys->[$i], $array->[$i]);  | 
              |
| 224 | 
                  + my $fetch_filter = $self->fetch_filter;  | 
              |
| 225 | 
                  +    if ($fetch_filter) {
                 | 
              |
| 226 | 
                  +        for (my $i = 0; $i < @$keys; $i++) {
                 | 
              |
| 227 | 
                  + $array->[$i] = $fetch_filter->($keys->[$i], $array->[$i]);  | 
              |
| 228 | 
                  + }  | 
              |
| 226 | 229 | 
                  }  | 
              
| 227 | 230 | 
                  return $array;  | 
              
| 228 | 231 | 
                  }  | 
              
| ... | ... | 
                  @@ -237,8 +240,11 @@ sub fetchrow_array {
                 | 
              
| 237 | 240 | 
                   | 
              
| 238 | 241 | 
                       my $keys = $sth->{NAME_lc};
                 | 
              
| 239 | 242 | 
                   | 
              
| 240 | 
                  -    for (my $i = 0; $i < @$keys; $i++) {
                 | 
              |
| 241 | 
                  - $array[$i] = $self->fetch_filter($keys->[$i], $array[$i]);  | 
              |
| 243 | 
                  + my $fetch_filter = $self->fetch_filter;  | 
              |
| 244 | 
                  +    if ($fetch_filter) {
                 | 
              |
| 245 | 
                  +        for (my $i = 0; $i < @$keys; $i++) {
                 | 
              |
| 246 | 
                  + $array[$i] = $fetch_filter->($keys->[$i], $array[$i]);  | 
              |
| 247 | 
                  + }  | 
              |
| 242 | 248 | 
                  }  | 
              
| 243 | 249 | 
                  return @array;  | 
              
| 244 | 250 | 
                  }  | 
              
| ... | ... | 
                  @@ -250,9 +256,12 @@ sub fetchrow_hashref {
                 | 
              
| 250 | 256 | 
                  my $hash = $sth->fetchrow_hashref;  | 
              
| 251 | 257 | 
                   | 
              
| 252 | 258 | 
                  return unless $hash;  | 
              
| 259 | 
                  + my $fetch_filter = $self->fetch_filter;  | 
              |
| 253 | 260 | 
                   | 
              
| 254 | 
                  -    foreach my $key (keys %$hash) {
                 | 
              |
| 255 | 
                  -        $hash->{$key} = $self->fetch_filter($key, $hash->{$key});
                 | 
              |
| 261 | 
                  +    if ($fetch_filter) {
                 | 
              |
| 262 | 
                  +        foreach my $key (keys %$hash) {
                 | 
              |
| 263 | 
                  +            $hash->{$key} = $fetch_filter->($key, $hash->{$key});
                 | 
              |
| 264 | 
                  + }  | 
              |
| 256 | 265 | 
                  }  | 
              
| 257 | 266 | 
                  return $hash;  | 
              
| 258 | 267 | 
                  }  | 
              
| ... | ... | 
                  @@ -264,6 +264,32 @@ our ($U, $P, $D) = connect_info();  | 
              
| 264 | 264 | 
                  is_deeply(\@bind, ['A', 'b'], 'sql template bind' );  | 
              
| 265 | 265 | 
                  }  | 
              
| 266 | 266 | 
                   | 
              
| 267 | 
                  +{
                 | 
              |
| 268 | 
                  + my $dbi = DBI::Custom->new(  | 
              |
| 269 | 
                  +        connect_info => {
                 | 
              |
| 270 | 
                  + user => $U,  | 
              |
| 271 | 
                  + password => $P,  | 
              |
| 272 | 
                  + data_source => "dbi:mysql:$D"  | 
              |
| 273 | 
                  + }  | 
              |
| 274 | 
                  + );  | 
              |
| 275 | 
                  +  | 
              |
| 276 | 
                  +    $dbi->fetch_filter(sub {
                 | 
              |
| 277 | 
                  + my ($key, $value) = @_;  | 
              |
| 278 | 
                  +        if ($key eq 'key1' && $value == 1 ) {
                 | 
              |
| 279 | 
                  + return $value * 3;  | 
              |
| 280 | 
                  + }  | 
              |
| 281 | 
                  + return $value;  | 
              |
| 282 | 
                  + });  | 
              |
| 283 | 
                  +  | 
              |
| 284 | 
                  +    my $result = $dbi->query("select key1, key2 from test1");
                 | 
              |
| 285 | 
                  +  | 
              |
| 286 | 
                  + my $row = $result->fetchrow_arrayref;  | 
              |
| 287 | 
                  + my @values = @$row;  | 
              |
| 288 | 
                  + $result->finish;  | 
              |
| 289 | 
                  +  | 
              |
| 290 | 
                  + is_deeply(\@values, [3, 2]);  | 
              |
| 291 | 
                  +}  | 
              |
| 292 | 
                  +  | 
              |
| 267 | 293 | 
                   sub connect_info {
                 | 
              
| 268 | 294 | 
                  my $file = 'password.tmp';  | 
              
| 269 | 295 | 
                  open my $fh, '<', $file  |