| ... | ... | 
                  @@ -77,62 +77,68 @@ sub AUTOLOAD {
                 | 
              
| 77 | 77 | 
                   sub auto_filter {
                 | 
              
| 78 | 78 | 
                  my $self = shift;  | 
              
| 79 | 79 | 
                   | 
              
| 80 | 
                  +    $self->{auto_filter} ||= {};
                 | 
              |
| 81 | 
                  +  | 
              |
| 80 | 82 | 
                  # Table  | 
              
| 81 | 83 | 
                  my $table = shift;  | 
              
| 82 | 84 | 
                   | 
              
| 83 | 
                  - # Column infomations  | 
              |
| 84 | 
                  - my @cs = @_;  | 
              |
| 85 | 
                  -  | 
              |
| 86 | 
                  - # Initialize filters  | 
              |
| 87 | 
                  -    $self->{_auto_bind_filter} ||= {};
                 | 
              |
| 88 | 
                  -    $self->{_auto_fetch_filter} ||= {};
                 | 
              |
| 89 | 
                  -  | 
              |
| 90 | 
                  - # Create auto filters  | 
              |
| 91 | 
                  -    foreach my $c (@cs) {
                 | 
              |
| 92 | 
                  -        croak "Usage \$dbi->auto_filter(" .
                 | 
              |
| 93 | 
                  - "TABLE, [COLUMN, BIND_FILTER, FETCH_FILTER], [...])"  | 
              |
| 94 | 
                  - unless ref $c eq 'ARRAY' && @$c == 3;  | 
              |
| 85 | 
                  +    if (@_) {
                 | 
              |
| 86 | 
                  + # Column infomations  | 
              |
| 87 | 
                  + my @cs = @_;  | 
              |
| 95 | 88 | 
                   | 
              
| 96 | 
                  - # Column  | 
              |
| 97 | 
                  - my $column = $c->[0];  | 
              |
| 89 | 
                  + # Initialize filters  | 
              |
| 90 | 
                  +        $self->{auto_filter}{bind} ||= {};
                 | 
              |
| 91 | 
                  +        $self->{auto_filter}{fetch} ||= {};
                 | 
              |
| 98 | 92 | 
                   | 
              
| 99 | 
                  - # Bind filter  | 
              |
| 100 | 
                  - my $bind_filter = $c->[1];  | 
              |
| 101 | 
                  -        if (ref $bind_filter eq 'CODE') {
                 | 
              |
| 102 | 
                  -	        $self->{_auto_bind_filter}{$table}{$column}
                 | 
              |
| 103 | 
                  - = $bind_filter;  | 
              |
| 104 | 
                  -	        $self->{_auto_bind_filter}{$table}{"$table.$column"}
                 | 
              |
| 105 | 
                  - = $bind_filter;  | 
              |
| 93 | 
                  + # Create auto filters  | 
              |
| 94 | 
                  +        foreach my $c (@cs) {
                 | 
              |
| 95 | 
                  +            croak "Usage \$dbi->auto_filter(" .
                 | 
              |
| 96 | 
                  + "TABLE, [COLUMN, BIND_FILTER, FETCH_FILTER], [...])"  | 
              |
| 97 | 
                  + unless ref $c eq 'ARRAY' && @$c == 3;  | 
              |
| 98 | 
                  +  | 
              |
| 99 | 
                  + # Column  | 
              |
| 100 | 
                  + my $column = $c->[0];  | 
              |
| 101 | 
                  +  | 
              |
| 102 | 
                  + # Bind filter  | 
              |
| 103 | 
                  + my $bind_filter = $c->[1];  | 
              |
| 104 | 
                  +            if (ref $bind_filter eq 'CODE') {
                 | 
              |
| 105 | 
                  +    	        $self->{auto_filter}{bind}{$table}{$column}
                 | 
              |
| 106 | 
                  + = $bind_filter;  | 
              |
| 107 | 
                  +    	        $self->{auto_filter}{bind}{$table}{"$table.$column"}
                 | 
              |
| 108 | 
                  + = $bind_filter;  | 
              |
| 109 | 
                  + }  | 
              |
| 110 | 
                  +            else {
                 | 
              |
| 111 | 
                  +    	        croak qq{"$bind_filter" is not registered}
                 | 
              |
| 112 | 
                  +    	          unless exists $self->filters->{$bind_filter};
                 | 
              |
| 113 | 
                  +  | 
              |
| 114 | 
                  +    	        $self->{auto_filter}{bind}{$table}{$column}
                 | 
              |
| 115 | 
                  +    	          = $self->filters->{$bind_filter};
                 | 
              |
| 116 | 
                  +    	        $self->{auto_filter}{bind}{$table}{"$table.$column"}
                 | 
              |
| 117 | 
                  +    	          = $self->filters->{$bind_filter};
                 | 
              |
| 118 | 
                  + }  | 
              |
| 119 | 
                  +  | 
              |
| 120 | 
                  + # Fetch filter  | 
              |
| 121 | 
                  + my $fetch_filter = $c->[2];  | 
              |
| 122 | 
                  +            if (ref $fetch_filter eq 'CODE') {
                 | 
              |
| 123 | 
                  +    	        $self->{auto_filter}{fetch}{$table}{$column}
                 | 
              |
| 124 | 
                  + = $fetch_filter;  | 
              |
| 125 | 
                  +    	        $self->{auto_filter}{fetch}{$table}{"$table.$column"}
                 | 
              |
| 126 | 
                  + = $fetch_filter;  | 
              |
| 127 | 
                  + }  | 
              |
| 128 | 
                  +            else {
                 | 
              |
| 129 | 
                  +                croak qq{"$fetch_filter" is not registered}
                 | 
              |
| 130 | 
                  +                  unless exists $self->filters->{$fetch_filter};
                 | 
              |
| 131 | 
                  +                $self->{auto_filter}{fetch}{$table}{$column}
                 | 
              |
| 132 | 
                  +                  = $self->filters->{$fetch_filter};
                 | 
              |
| 133 | 
                  +                $self->{auto_filter}{fetch}{$table}{"$table.$column"}
                 | 
              |
| 134 | 
                  +                  = $self->filters->{$fetch_filter};
                 | 
              |
| 135 | 
                  + }  | 
              |
| 106 | 136 | 
                  }  | 
              
| 107 | 
                  -        else {
                 | 
              |
| 108 | 
                  -	        croak qq{"$bind_filter" is not registered}
                 | 
              |
| 109 | 
                  -	          unless exists $self->filters->{$bind_filter};
                 | 
              |
| 110 | 
                  -  | 
              |
| 111 | 
                  -	        $self->{_auto_bind_filter}{$table}{$column}
                 | 
              |
| 112 | 
                  -	          = $self->filters->{$bind_filter};
                 | 
              |
| 113 | 
                  -	        $self->{_auto_bind_filter}{$table}{"$table.$column"}
                 | 
              |
| 114 | 
                  -	          = $self->filters->{$bind_filter};
                 | 
              |
| 115 | 
                  - }  | 
              |
| 116 | 137 | 
                   | 
              
| 117 | 
                  - # Fetch filter  | 
              |
| 118 | 
                  - my $fetch_filter = $c->[2];  | 
              |
| 119 | 
                  -        if (ref $fetch_filter eq 'CODE') {
                 | 
              |
| 120 | 
                  -	        $self->{_auto_fetch_filter}{$table}{$column}
                 | 
              |
| 121 | 
                  - = $fetch_filter;  | 
              |
| 122 | 
                  -	        $self->{_auto_fetch_filter}{$table}{"$table.$column"}
                 | 
              |
| 123 | 
                  - = $fetch_filter;  | 
              |
| 124 | 
                  - }  | 
              |
| 125 | 
                  -        else {
                 | 
              |
| 126 | 
                  -            croak qq{"$fetch_filter" is not registered}
                 | 
              |
| 127 | 
                  -              unless exists $self->filters->{$fetch_filter};
                 | 
              |
| 128 | 
                  -            $self->{_auto_fetch_filter}{$table}{$column}
                 | 
              |
| 129 | 
                  -              = $self->filters->{$fetch_filter};
                 | 
              |
| 130 | 
                  -            $self->{_auto_fetch_filter}{$table}{"$table.$column"}
                 | 
              |
| 131 | 
                  -              = $self->filters->{$fetch_filter};
                 | 
              |
| 132 | 
                  - }  | 
              |
| 138 | 
                  + return $self;  | 
              |
| 133 | 139 | 
                  }  | 
              
| 134 | 140 | 
                   | 
              
| 135 | 
                  - return $self;  | 
              |
| 141 | 
                  +    return $self->{auto_filter};
                 | 
              |
| 136 | 142 | 
                  }  | 
              
| 137 | 143 | 
                   | 
              
| 138 | 144 | 
                   sub helper {
                 | 
              
| ... | ... | 
                  @@ -228,36 +234,44 @@ sub create_query {
                 | 
              
| 228 | 234 | 
                   | 
              
| 229 | 235 | 
                   sub default_bind_filter {
                 | 
              
| 230 | 236 | 
                  my $self = shift;  | 
              
| 231 | 
                  - my $fname = $_[0];  | 
              |
| 232 | 237 | 
                   | 
              
| 233 | 
                  -    if (@_ && !$fname) {
                 | 
              |
| 234 | 
                  -        $self->{_default_bind_filter} = undef;
                 | 
              |
| 235 | 
                  - }  | 
              |
| 236 | 
                  -    else {
                 | 
              |
| 237 | 
                  -        croak qq{"$fname" is not registered}
                 | 
              |
| 238 | 
                  -          unless exists $self->filters->{$fname};
                 | 
              |
| 239 | 
                  -  | 
              |
| 240 | 
                  -        $self->{_default_bind_filter} = $self->filters->{$fname};
                 | 
              |
| 238 | 
                  +    if (@_) {
                 | 
              |
| 239 | 
                  + my $fname = $_[0];  | 
              |
| 240 | 
                  +  | 
              |
| 241 | 
                  +        if (@_ && !$fname) {
                 | 
              |
| 242 | 
                  +            $self->{default_bind_filter} = undef;
                 | 
              |
| 243 | 
                  + }  | 
              |
| 244 | 
                  +        else {
                 | 
              |
| 245 | 
                  +            croak qq{"$fname" is not registered}
                 | 
              |
| 246 | 
                  +              unless exists $self->filters->{$fname};
                 | 
              |
| 247 | 
                  +  | 
              |
| 248 | 
                  +            $self->{default_bind_filter} = $self->filters->{$fname};
                 | 
              |
| 249 | 
                  + }  | 
              |
| 250 | 
                  + return $self;  | 
              |
| 241 | 251 | 
                  }  | 
              
| 242 | 252 | 
                   | 
              
| 243 | 
                  - return $self;  | 
              |
| 253 | 
                  +    return $self->{default_bind_filter};
                 | 
              |
| 244 | 254 | 
                  }  | 
              
| 245 | 255 | 
                   | 
              
| 246 | 256 | 
                   sub default_fetch_filter {
                 | 
              
| 247 | 257 | 
                  my $self = shift;  | 
              
| 248 | 258 | 
                  my $fname = $_[0];  | 
              
| 249 | 259 | 
                   | 
              
| 250 | 
                  -    if (@_ && !$fname) {
                 | 
              |
| 251 | 
                  -        $self->{_default_fetch_filter} = undef;
                 | 
              |
| 252 | 
                  - }  | 
              |
| 253 | 
                  -    else {
                 | 
              |
| 254 | 
                  -        croak qq{"$fname" is not registered}
                 | 
              |
| 255 | 
                  -          unless exists $self->filters->{$fname};
                 | 
              |
| 256 | 
                  -  | 
              |
| 257 | 
                  -        $self->{_default_fetch_filter} = $self->filters->{$fname};
                 | 
              |
| 260 | 
                  +    if (@_) {
                 | 
              |
| 261 | 
                  +        if (@_ && !$fname) {
                 | 
              |
| 262 | 
                  +            $self->{default_fetch_filter} = undef;
                 | 
              |
| 263 | 
                  + }  | 
              |
| 264 | 
                  +        else {
                 | 
              |
| 265 | 
                  +            croak qq{"$fname" is not registered}
                 | 
              |
| 266 | 
                  +              unless exists $self->filters->{$fname};
                 | 
              |
| 267 | 
                  +  | 
              |
| 268 | 
                  +            $self->{default_fetch_filter} = $self->filters->{$fname};
                 | 
              |
| 269 | 
                  + }  | 
              |
| 270 | 
                  +  | 
              |
| 271 | 
                  + return $self;  | 
              |
| 258 | 272 | 
                  }  | 
              
| 259 | 273 | 
                   | 
              
| 260 | 
                  - return $self;  | 
              |
| 274 | 
                  +    return $self->{default_fetch_filter}
                 | 
              |
| 261 | 275 | 
                  }  | 
              
| 262 | 276 | 
                   | 
              
| 263 | 277 | 
                  our %VALID_DELETE_ARGS  | 
              
| ... | ... | 
                  @@ -339,7 +353,7 @@ sub execute{
                 | 
              
| 339 | 353 | 
                       foreach my $table (@$auto_filter_tables) {
                 | 
              
| 340 | 354 | 
                           $auto_filter = {
                 | 
              
| 341 | 355 | 
                  %$auto_filter,  | 
              
| 342 | 
                  -            %{$self->{_auto_bind_filter}->{$table} || {}}
                 | 
              |
| 356 | 
                  +            %{$self->{auto_filter}{bind}->{$table} || {}}
                 | 
              |
| 343 | 357 | 
                  }  | 
              
| 344 | 358 | 
                  }  | 
              
| 345 | 359 | 
                   | 
              
| ... | ... | 
                  @@ -373,17 +387,17 @@ sub execute{
                 | 
              
| 373 | 387 | 
                   	    foreach my $table (@$auto_filter_tables) {
                 | 
              
| 374 | 388 | 
                   	        $auto_fetch_filter = {
                 | 
              
| 375 | 389 | 
                  %$auto_filter,  | 
              
| 376 | 
                  -	            %{$self->{_auto_fetch_filter}{$table} || {}}
                 | 
              |
| 390 | 
                  +	            %{$self->{auto_filter}{fetch}{$table} || {}}
                 | 
              |
| 377 | 391 | 
                  }  | 
              
| 378 | 392 | 
                  }  | 
              
| 379 | 393 | 
                   | 
              
| 380 | 394 | 
                  # Result  | 
              
| 381 | 395 | 
                  my $result = $self->result_class->new(  | 
              
| 382 | 
                  - sth => $sth,  | 
              |
| 383 | 
                  - filters => $self->filters,  | 
              |
| 384 | 
                  - filter_check => $self->filter_check,  | 
              |
| 385 | 
                  -            _auto_filter   => $auto_fetch_filter || {},
                 | 
              |
| 386 | 
                  -            _default_filter => $self->{_default_fetch_filter}
                 | 
              |
| 396 | 
                  + sth => $sth,  | 
              |
| 397 | 
                  + filters => $self->filters,  | 
              |
| 398 | 
                  + filter_check => $self->filter_check,  | 
              |
| 399 | 
                  +            _auto_filter     => $auto_fetch_filter || {},
                 | 
              |
| 400 | 
                  + _default_filter => $self->default_fetch_filter  | 
              |
| 387 | 401 | 
                  );  | 
              
| 388 | 402 | 
                   | 
              
| 389 | 403 | 
                  return $result;  | 
              
| ... | ... | 
                  @@ -673,7 +687,7 @@ sub _build_bind_values {
                 | 
              
| 673 | 687 | 
                                     : $params->{$column};
                 | 
              
| 674 | 688 | 
                   | 
              
| 675 | 689 | 
                  # Filtering  | 
              
| 676 | 
                  -        my $f = $filter->{$column} || $self->{_default_bind_filter} || '';
                 | 
              |
| 690 | 
                  +        my $f = $filter->{$column} || $self->{default_bind_filter} || '';
                 | 
              |
| 677 | 691 | 
                   | 
              
| 678 | 692 | 
                  push @bind_values, $f ? $f->($value) : $value;  | 
              
| 679 | 693 | 
                   | 
              
| ... | ... | 
                  @@ -1009,12 +1023,14 @@ instead of suger methods.  | 
              
| 1009 | 1023 | 
                   | 
              
| 1010 | 1024 | 
                  =head2 C<(deprecated) default_bind_filter>  | 
              
| 1011 | 1025 | 
                   | 
              
| 1012 | 
                  - $dbi = $dbi->default_bind_filter($fname);  | 
              |
| 1026 | 
                  + my $default_bind_filter = $dbi->default_bind_filter;  | 
              |
| 1027 | 
                  + $dbi = $dbi->default_bind_filter($fname);  | 
              |
| 1013 | 1028 | 
                   | 
              
| 1014 | 1029 | 
                  Default filter when parameter binding is executed.  | 
              
| 1015 | 1030 | 
                   | 
              
| 1016 | 1031 | 
                  =head2 C<(deprecated) default_fetch_filter>  | 
              
| 1017 | 1032 | 
                   | 
              
| 1033 | 
                  + my $default_fetch_filter = $dbi->default_fetch_filter;  | 
              |
| 1018 | 1034 | 
                  $dbi = $dbi->default_fetch_filter($fname);  | 
              
| 1019 | 1035 | 
                   | 
              
| 1020 | 1036 | 
                  =head2 C<execute>  |