| ... | ... |
@@ -100,15 +100,19 @@ sub auto_filter {
|
| 100 | 100 |
my $bind_filter = $c->[1]; |
| 101 | 101 |
croak qq{"$bind_filter" is not registered}
|
| 102 | 102 |
unless $self->filters->{$bind_filter};
|
| 103 |
- $self->{_auto_bind_filter}{$table}{$column} = $bind_filter;
|
|
| 104 |
- $self->{_auto_bind_filter}{$table}{"$table.$column"} = $bind_filter;
|
|
| 103 |
+ $self->{_auto_bind_filter}{$table}{$column}
|
|
| 104 |
+ = $self->filters->{$bind_filter};
|
|
| 105 |
+ $self->{_auto_bind_filter}{$table}{"$table.$column"}
|
|
| 106 |
+ = $self->filters->{$bind_filter};
|
|
| 105 | 107 |
|
| 106 | 108 |
# Fetch filter |
| 107 | 109 |
my $fetch_filter = $c->[2]; |
| 108 | 110 |
croak qq{"$fetch_filter" is not registered}
|
| 109 | 111 |
unless $self->filters->{$fetch_filter};
|
| 110 |
- $self->{_auto_fetch_filter}{$table}{$column} = $fetch_filter;
|
|
| 111 |
- $self->{_auto_fetch_filter}{$table}{"$table.$column"} = $fetch_filter;
|
|
| 112 |
+ $self->{_auto_fetch_filter}{$table}{$column}
|
|
| 113 |
+ = $self->filters->{$fetch_filter};
|
|
| 114 |
+ $self->{_auto_fetch_filter}{$table}{"$table.$column"}
|
|
| 115 |
+ = $self->filters->{$fetch_filter};
|
|
| 112 | 116 |
} |
| 113 | 117 |
|
| 114 | 118 |
return $self; |
| ... | ... |
@@ -580,11 +584,6 @@ sub _build_bind_values {
|
| 580 | 584 |
# Parameter |
| 581 | 585 |
$params ||= {};
|
| 582 | 586 |
|
| 583 |
- # Check filter |
|
| 584 |
- $self->_check_filter($self->filters, $filter, |
|
| 585 |
- $self->default_bind_filter, $params) |
|
| 586 |
- if $self->filter_check; |
|
| 587 |
- |
|
| 588 | 587 |
# Build bind values |
| 589 | 588 |
my $count = {};
|
| 590 | 589 |
foreach my $column (@{$query->columns}) {
|
| ... | ... |
@@ -596,7 +595,10 @@ sub _build_bind_values {
|
| 596 | 595 |
|
| 597 | 596 |
# Filtering |
| 598 | 597 |
my $fname = $filter->{$column} || $self->default_bind_filter || '';
|
| 599 |
- my $filter_func = $fname ? $self->filters->{$fname} : undef;
|
|
| 598 |
+ my $filter_func = ref $fname ? $fname |
|
| 599 |
+ : $fname ? $self->filters->{$fname}
|
|
| 600 |
+ : undef; |
|
| 601 |
+ |
|
| 600 | 602 |
push @bind_values, $filter_func |
| 601 | 603 |
? $filter_func->($value) |
| 602 | 604 |
: $value; |
| ... | ... |
@@ -608,20 +610,6 @@ sub _build_bind_values {
|
| 608 | 610 |
return \@bind_values; |
| 609 | 611 |
} |
| 610 | 612 |
|
| 611 |
-sub _check_filter {
|
|
| 612 |
- my ($self, $filters, $filter, $default_filter, $params) = @_; |
|
| 613 |
- |
|
| 614 |
- # Filter name not exists |
|
| 615 |
- foreach my $fname (values %$filter) {
|
|
| 616 |
- croak qq{Bind filter "$fname" is not registered}
|
|
| 617 |
- unless exists $filters->{$fname};
|
|
| 618 |
- } |
|
| 619 |
- |
|
| 620 |
- # Default filter name not exists |
|
| 621 |
- croak qq{Default bind filter "$default_filter" is not registered}
|
|
| 622 |
- if $default_filter && ! exists $filters->{$default_filter};
|
|
| 623 |
-} |
|
| 624 |
- |
|
| 625 | 613 |
sub _croak {
|
| 626 | 614 |
my ($self, $error, $append) = @_; |
| 627 | 615 |
$append ||= ""; |
| ... | ... |
@@ -854,10 +842,8 @@ Filter functions. |
| 854 | 842 |
my $filter_check = $dbi->filter_check; |
| 855 | 843 |
$dbi = $dbi->filter_check(0); |
| 856 | 844 |
|
| 857 |
-Enable filter check. |
|
| 858 |
-Default to 1. |
|
| 859 |
-This check maybe damege performance. |
|
| 860 |
-If you require performance, set C<filter_check> attribute to 0. |
|
| 845 |
+B<this attribute is now deprecated and has no mean |
|
| 846 |
+because check is always done>. |
|
| 861 | 847 |
|
| 862 | 848 |
=head2 C<password> |
| 863 | 849 |
|
| ... | ... |
@@ -25,11 +25,6 @@ sub fetch {
|
| 25 | 25 |
# No row |
| 26 | 26 |
return unless @row; |
| 27 | 27 |
|
| 28 |
- # Check filter |
|
| 29 |
- $self->_check_filter($filters, $filter, |
|
| 30 |
- $self->default_filter, $self->sth) |
|
| 31 |
- if $self->{filter_check};
|
|
| 32 |
- |
|
| 33 | 28 |
# Filtering |
| 34 | 29 |
my $columns = $self->{sth}->{NAME_lc};
|
| 35 | 30 |
for (my $i = 0; $i < @$columns; $i++) {
|
| ... | ... |
@@ -41,7 +36,8 @@ sub fetch {
|
| 41 | 36 |
: $self->{default_filter};
|
| 42 | 37 |
|
| 43 | 38 |
# Filtering |
| 44 |
- $row[$i] = $filters->{$fname}->($row[$i])
|
|
| 39 |
+ $row[$i] = ref $fname ? $fname->($row[$i]) |
|
| 40 |
+ : $filters->{$fname}->($row[$i])
|
|
| 45 | 41 |
if $fname; |
| 46 | 42 |
} |
| 47 | 43 |
|
| ... | ... |
@@ -89,11 +85,6 @@ sub fetch_hash {
|
| 89 | 85 |
# Cannot fetch |
| 90 | 86 |
return unless $row; |
| 91 | 87 |
|
| 92 |
- # Check filter |
|
| 93 |
- $self->_check_filter($filters, $filter, |
|
| 94 |
- $self->default_filter, $self->sth) |
|
| 95 |
- if $self->{filter_check};
|
|
| 96 |
- |
|
| 97 | 88 |
# Filter |
| 98 | 89 |
my $row_hash = {};
|
| 99 | 90 |
my $columns = $self->{sth}->{NAME_lc};
|
| ... | ... |
@@ -107,8 +98,9 @@ sub fetch_hash {
|
| 107 | 98 |
|
| 108 | 99 |
# Filtering |
| 109 | 100 |
$row_hash->{$column}
|
| 110 |
- = $fname ? $filters->{$fname}->($row->[$i])
|
|
| 111 |
- : $row->[$i]; |
|
| 101 |
+ = ref $fname ? $fname->($row->[$i]) |
|
| 102 |
+ : $fname ? $filters->{$fname}->($row->[$i])
|
|
| 103 |
+ : $row->[$i]; |
|
| 112 | 104 |
} |
| 113 | 105 |
|
| 114 | 106 |
return $row_hash; |
| ... | ... |
@@ -179,20 +171,6 @@ sub fetch_multi {
|
| 179 | 171 |
return $rows; |
| 180 | 172 |
} |
| 181 | 173 |
|
| 182 |
-sub _check_filter {
|
|
| 183 |
- my ($self, $filters, $filter, $default_filter, $sth) = @_; |
|
| 184 |
- |
|
| 185 |
- # Filter name not exists |
|
| 186 |
- foreach my $fname (values %$filter) {
|
|
| 187 |
- croak qq{Fetch filter "$fname" is not registered}
|
|
| 188 |
- unless exists $filters->{$fname};
|
|
| 189 |
- } |
|
| 190 |
- |
|
| 191 |
- # Default filter name not exists |
|
| 192 |
- croak qq{Default fetch filter "$default_filter" is not registered}
|
|
| 193 |
- if $default_filter && ! exists $filters->{$default_filter};
|
|
| 194 |
-} |
|
| 195 |
- |
|
| 196 | 174 |
1; |
| 197 | 175 |
|
| 198 | 176 |
=head1 NAME |
| ... | ... |
@@ -453,61 +453,6 @@ $dbi->cache(0); |
| 453 | 453 |
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
|
| 454 | 454 |
is(scalar keys %{$dbi->{_cached}}, 0, 'not cache');
|
| 455 | 455 |
|
| 456 |
- |
|
| 457 |
-test 'filter_check in fetching'; |
|
| 458 |
-$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
|
|
| 459 |
-$dbi->execute($CREATE_TABLE->{0});
|
|
| 460 |
-$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
|
|
| 461 |
-$dbi->default_fetch_filter('not_exists');
|
|
| 462 |
-$result = $dbi->select(table => 'table1'); |
|
| 463 |
-eval{$result->fetch_first};
|
|
| 464 |
-like($@, qr/\QDefault fetch filter "not_exists" is not registered/, "$test : array :default_fetch_filter"); |
|
| 465 |
- |
|
| 466 |
-$dbi->default_fetch_filter(undef); |
|
| 467 |
-$result = $dbi->select(table => 'table1'); |
|
| 468 |
-$result->filter({key1 => 'not_exists'});
|
|
| 469 |
-eval{$result->fetch_first};
|
|
| 470 |
-like($@, qr/\QFetch filter "not_exists" is not registered/, "$test : array :fetch_filter"); |
|
| 471 |
- |
|
| 472 |
-$dbi->filter_check(0); |
|
| 473 |
-$result = $dbi->select(table => 'table1'); |
|
| 474 |
-$result->filter({Key1 => 'encode_utf8'});
|
|
| 475 |
-eval{$result->fetch_first};
|
|
| 476 |
-ok(!$@, "$test : array : filter_check off"); |
|
| 477 |
- |
|
| 478 |
-$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
|
|
| 479 |
-$dbi->execute($CREATE_TABLE->{0});
|
|
| 480 |
-$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
|
|
| 481 |
-$dbi->default_fetch_filter('not_exists');
|
|
| 482 |
-$result = $dbi->select(table => 'table1'); |
|
| 483 |
-eval{$result->fetch_hash_first};
|
|
| 484 |
-like($@, qr/\QDefault fetch filter "not_exists" is not registered/, "$test : hash :default_fetch_filter"); |
|
| 485 |
- |
|
| 486 |
-$dbi->default_fetch_filter(undef); |
|
| 487 |
-$result = $dbi->select(table => 'table1'); |
|
| 488 |
-$result->filter({key1 => 'not_exists'});
|
|
| 489 |
-eval{$result->fetch_hash_first};
|
|
| 490 |
-like($@, qr/\QFetch filter "not_exists" is not registered/, "$test : hash :fetch_filter"); |
|
| 491 |
- |
|
| 492 |
-$dbi->filter_check(0); |
|
| 493 |
-$result = $dbi->select(table => 'table1'); |
|
| 494 |
-$result->filter({Key1 => 'encode_utf8'});
|
|
| 495 |
-eval{$result->fetch_hash_first};
|
|
| 496 |
-ok(!$@, "$test : hash : filter_check off"); |
|
| 497 |
- |
|
| 498 |
-test 'filter_check in parameter binding'; |
|
| 499 |
-$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
|
|
| 500 |
-$dbi->execute($CREATE_TABLE->{0});
|
|
| 501 |
-$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
|
|
| 502 |
- |
|
| 503 |
-$dbi->default_bind_filter('not_exists');
|
|
| 504 |
-eval{$dbi->select(table => 'table1')};
|
|
| 505 |
-like($@, qr/\QDefault bind filter "not_exists" is not registered/, "$test : default_bind_filter"); |
|
| 506 |
- |
|
| 507 |
-$dbi->default_bind_filter(undef); |
|
| 508 |
-eval{$dbi->select(table => 'table1', filter => {key1 => 'not_exists'})};
|
|
| 509 |
-like($@, qr/\QBind filter "not_exists" is not registered/, "$test : bind_filter"); |
|
| 510 |
- |
|
| 511 | 456 |
test 'execute'; |
| 512 | 457 |
$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
|
| 513 | 458 |
$dbi->execute($CREATE_TABLE->{0});
|