Fix empty statuses filter
authorThomas Berezansky <tsbere@mvlc.org>
Tue, 11 Sep 2012 13:42:38 +0000 (09:42 -0400)
committerLebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Fri, 15 Feb 2013 20:39:48 +0000 (15:39 -0500)
By adding a check that was overlooked.

Also remove a leftover TODO note and add another test query.

Signed-off-by: Thomas Berezansky <tsbere@mvlc.org>
Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Driver/Pg/QueryParser.pm
Open-ILS/src/support-scripts/test-scripts/query_tests.pl

index de68579..8a13776 100644 (file)
@@ -613,7 +613,6 @@ sub toSQL {
     my $key = 'm.source';
     $key = 'm.metarecord' if (grep {$_->name eq 'metarecord' or $_->name eq 'metabib'} @{$self->modifiers});
 
-    #TODO: Examine how we want to do limits. And offsets. And other annoying crap like that.
     my $core_limit = $self->QueryParser->core_limit || 25000;
 
     my $flat_where = $$flat_plan{where};
@@ -1086,10 +1085,12 @@ sub flatten {
                     }
                 }
                 case 'statuses' {
+                    if (@{$filter->args} > 0) {
                         $where .= $joiner if $where ne '(';
                         $where .= "(${NOT}EXISTS(SELECT 1 FROM asset.call_number acn JOIN asset.copy acp ON acn.id = acp.call_number WHERE m.source = acn.record AND acp.circ_lib IN (SELECT * FROM search_org_list) AND NOT acn.deleted AND NOT acp.deleted AND acp.status IN (" . join(',', map { $self->QueryParser->quote_value($_) } @{ $filter->args }) . ") LIMIT 1)";
                         $where .= $filter->negate ? ' AND ' : ' OR ';
                         $where .= "${NOT}EXISTS(SELECT 1 FROM biblio.peer_bib_copy_map pr JOIN asset.copy acp ON pr.target_copy = acp.id WHERE m.source = pr.peer_record AND acp.circ_lib IN (SELECT * FROM search_org_list) AND NOT acp.deleted AND acp.status IN (" . join(',', map { $self->QueryParser->quote_value($_) } @{ $filter->args }) . ") LIMIT 1))";
+                    }
                 }
             }
         }
index c8a2715..042d88d 100755 (executable)
@@ -26,6 +26,7 @@ my @default_queries = (
     '-"keyword1"',
     'keyword:"keyword1"',
     'keyword:"keyword1" title:"keyword2"',
+    'keyword locations() statuses()',
 # A small set of searches that errored out in a production install
     'keyword: subject:Graphical user interfaces (Computer systems) depth(0) subject|topic[Authoring programs]',
     'keyword: subject:Assassins New York (State) depth(0) subject|geographic[Buffalo (N.Y.)]',