| ... | ... | 
                  @@ -410,6 +410,17 @@ sub _build_bind_values {
                 | 
              
| 410 | 410 | 
                   | 
              
| 411 | 411 | 
                  # binding values  | 
              
| 412 | 412 | 
                  my @bind_values;  | 
              
| 413 | 
                  +  | 
              |
| 414 | 
                  + # Filter  | 
              |
| 415 | 
                  +    $filter ||= {};
                 | 
              |
| 416 | 
                  +  | 
              |
| 417 | 
                  + # Parameter  | 
              |
| 418 | 
                  +    $params ||= {};
                 | 
              |
| 419 | 
                  +  | 
              |
| 420 | 
                  + # Check filter  | 
              |
| 421 | 
                  + $self->_check_filter($self->filters, $filter,  | 
              |
| 422 | 
                  + $self->default_bind_filter, $params)  | 
              |
| 423 | 
                  + if $self->filter_check;  | 
              |
| 413 | 424 | 
                   | 
              
| 414 | 425 | 
                  # Build bind values  | 
              
| 415 | 426 | 
                       my $count = {};
                 | 
              
| ... | ... | 
                  @@ -423,9 +434,6 @@ sub _build_bind_values {
                 | 
              
| 423 | 434 | 
                                     ? $params->{$column}->[$count->{$column} || 0]
                 | 
              
| 424 | 435 | 
                                     : $params->{$column};
                 | 
              
| 425 | 436 | 
                   | 
              
| 426 | 
                  - # Filter  | 
              |
| 427 | 
                  -        $filter ||= {};
                 | 
              |
| 428 | 
                  -  | 
              |
| 429 | 437 | 
                  # Filter name  | 
              
| 430 | 438 | 
                           my $fname = $filter->{$column} || $self->default_bind_filter || '';
                 | 
              
| 431 | 439 | 
                   | 
              
| ... | ... | 
                  @@ -454,6 +462,27 @@ sub _build_bind_values {
                 | 
              
| 454 | 462 | 
                  return \@bind_values;  | 
              
| 455 | 463 | 
                  }  | 
              
| 456 | 464 | 
                   | 
              
| 465 | 
                  +sub _check_filter {
                 | 
              |
| 466 | 
                  + my ($self, $filters, $filter, $default_filter, $params) = @_;  | 
              |
| 467 | 
                  +  | 
              |
| 468 | 
                  + # Filter name not exists  | 
              |
| 469 | 
                  +    foreach my $fname (values %$filter) {
                 | 
              |
| 470 | 
                  +        croak qq{Bind filter "$fname" is not registered}
                 | 
              |
| 471 | 
                  +          unless exists $filters->{$fname};
                 | 
              |
| 472 | 
                  + }  | 
              |
| 473 | 
                  +  | 
              |
| 474 | 
                  + # Default filter name not exists  | 
              |
| 475 | 
                  +    croak qq{Default bind filter "$default_filter" is not registered}
                 | 
              |
| 476 | 
                  +      if $default_filter && ! exists $filters->{$default_filter};
                 | 
              |
| 477 | 
                  +  | 
              |
| 478 | 
                  + # Column name not exists  | 
              |
| 479 | 
                  +    foreach my $column (keys %$filter) {
                 | 
              |
| 480 | 
                  +  | 
              |
| 481 | 
                  +        croak qq{Column name "$column" in bind filter is not found in paramters}
                 | 
              |
| 482 | 
                  +          unless exists $params->{$column};
                 | 
              |
| 483 | 
                  + }  | 
              |
| 484 | 
                  +}  | 
              |
| 485 | 
                  +  | 
              |
| 457 | 486 | 
                  =head1 NAME  | 
              
| 458 | 487 | 
                   | 
              
| 459 | 488 | 
                  DBIx::Custom - DBI interface, having hash parameter binding and filtering system  | 
              
| ... | ... | 
                  @@ -513,11 +513,20 @@ eval{$result->fetch_hash_first};
                 | 
              
| 513 | 513 | 
                  ok(!$@, "$test : hash : filter_check off");  | 
              
| 514 | 514 | 
                   | 
              
| 515 | 515 | 
                   | 
              
| 516 | 
                  -test 'filter_check in binding parameter';  | 
              |
| 516 | 
                  +test 'filter_check in parameter binding';  | 
              |
| 517 | 517 | 
                   $dbi = DBIx::Custom->connect($NEW_ARGS->{0});
                 | 
              
| 518 | 518 | 
                   $dbi->execute($CREATE_TABLE->{0});
                 | 
              
| 519 | 519 | 
                   $dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
                 | 
              
| 520 | 520 | 
                   | 
              
| 521 | 
                  +$dbi->default_bind_filter('not_exists');
                 | 
              |
| 522 | 
                  +eval{$dbi->select(table => 'table1')};
                 | 
              |
| 523 | 
                  +like($@, qr/\QDefault bind filter "not_exists" is not registered/, "$test : default_bind_filter");  | 
              |
| 521 | 524 | 
                   | 
              
| 525 | 
                  +$dbi->default_bind_filter(undef);  | 
              |
| 526 | 
                  +eval{$dbi->select(table => 'table1', filter => {key1 => 'not_exists'})};
                 | 
              |
| 527 | 
                  +like($@, qr/\QBind filter "not_exists" is not registered/, "$test : bind_filter");  | 
              |
| 522 | 528 | 
                   | 
              
| 529 | 
                  +eval{$dbi->select(table => 'table1', filter => {not_exists => 'encode_utf8'})};
                 | 
              |
| 530 | 
                  +like($@, qr/\QColumn name "not_exists" in bind filter is not found in paramters/,  | 
              |
| 531 | 
                  + "$test : fetch_filter");  | 
              |
| 523 | 532 | 
                   |