| ... | ... |
@@ -1,6 +1,7 @@ |
| 1 | 1 |
0.1631 |
| 2 | 2 |
added experimental DBIx::Custom::Result end_filter method |
| 3 | 3 |
experimental extended select method's where option |
| 4 |
+ fix select method empty where failed bug |
|
| 4 | 5 |
0.1630 |
| 5 | 6 |
fix test bug |
| 6 | 7 |
0.1629 |
| ... | ... |
@@ -507,25 +507,36 @@ sub select {
|
| 507 | 507 |
|
| 508 | 508 |
# Where clause |
| 509 | 509 |
my $param; |
| 510 |
+ my $wexists; |
|
| 510 | 511 |
if (ref $where eq 'HASH' && keys %$where) {
|
| 511 | 512 |
$param = $where; |
| 512 |
- $source .= 'where (';
|
|
| 513 |
- foreach my $where_key (keys %$where) {
|
|
| 514 |
- $source .= "{= $where_key} and ";
|
|
| 513 |
+ $wexists = keys %$where; |
|
| 514 |
+ |
|
| 515 |
+ if ($wexists) {
|
|
| 516 |
+ $source .= 'where (';
|
|
| 517 |
+ foreach my $where_key (keys %$where) {
|
|
| 518 |
+ $source .= "{= $where_key} and ";
|
|
| 519 |
+ } |
|
| 520 |
+ $source =~ s/ and $//; |
|
| 521 |
+ $source .= ') '; |
|
| 515 | 522 |
} |
| 516 |
- $source =~ s/ and $//; |
|
| 517 |
- $source .= ') '; |
|
| 518 | 523 |
} |
| 519 | 524 |
elsif (ref $where eq 'ARRAY') {
|
| 520 |
- my$where_str = $where->[0] || ''; |
|
| 525 |
+ my $w = $where->[0] || ''; |
|
| 521 | 526 |
$param = $where->[1]; |
| 522 | 527 |
|
| 523 |
- $source .= "where ($where_str) "; |
|
| 528 |
+ if (ref $w eq 'HASH') {
|
|
| 529 |
+ |
|
| 530 |
+ } |
|
| 531 |
+ else {
|
|
| 532 |
+ $wexists = $w =~ /\S/; |
|
| 533 |
+ $source .= "where ($w) " if $wexists; |
|
| 534 |
+ } |
|
| 524 | 535 |
} |
| 525 | 536 |
|
| 526 | 537 |
# Relation |
| 527 | 538 |
if ($relation) {
|
| 528 |
- $source .= $where ? "and " : "where "; |
|
| 539 |
+ $source .= $wexists ? "and " : "where "; |
|
| 529 | 540 |
foreach my $rkey (keys %$relation) {
|
| 530 | 541 |
$source .= "$rkey = " . $relation->{$rkey} . " and ";
|
| 531 | 542 |
} |
| ... | ... |
@@ -786,3 +786,16 @@ $result->filter(key1 => sub { $_[0] * 2 }, key2 => sub { $_[0] * 4 });
|
| 786 | 786 |
$result->end_filter(key1 => sub { $_[0] * 3 }, key2 => sub { $_[0] * 5 });
|
| 787 | 787 |
$row = $result->fetch_hash_first; |
| 788 | 788 |
is_deeply($row, {key1 => 6, key2 => 40});
|
| 789 |
+ |
|
| 790 |
+ |
|
| 791 |
+test 'empty where select'; |
|
| 792 |
+$dbi = DBIx::Custom->connect($NEW_ARGS->{0});
|
|
| 793 |
+$dbi->execute($CREATE_TABLE->{0});
|
|
| 794 |
+$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
|
|
| 795 |
+$result = $dbi->select(table => 'table1', where => {});
|
|
| 796 |
+$row = $result->fetch_hash_first; |
|
| 797 |
+is_deeply($row, {key1 => 1, key2 => 2});
|
|
| 798 |
+ |
|
| 799 |
+$result = $dbi->select(table => 'table1', where => [' ', {}]);
|
|
| 800 |
+$row = $result->fetch_hash_first; |
|
| 801 |
+is_deeply($row, {key1 => 1, key2 => 2});
|