From fa08592991a875b81f5cc3c6bec555b0e5f866b8 Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Wed, 18 Sep 2019 10:28:33 -0400 Subject: [PATCH] Bug 23086: Search for collection is broken It appears that we are quoting the ccode values deep in the search code. Under ICU chains this breaks searching by limits To recreate 1 - Setup Koha using Zebra and icuchains 2 - Add ccode to AdvancedSearchTypes 3 - In koha-conf.xml set zebra debug level to include request none,fatal,warn,request,info 4 - Set some items into different ccodes 5 - On opac perform a search for: ccode:NFIC 6 - It works 7 - tail -n 50 /var/log/koha/kohadev/zebra-output.log 8 - Note search request like: Search biblios OK 26 1 1+0 RPN @attrset Bib-1 @attr 1=8009 NFIC 9 - On opac go to advanced search, select Collection, and limit to smae code a s above 10 - No results 11 - Check the zebra-output.log: Search biblios OK 0 1 1+0 RPN @attrset Bib-1 @attr 1=8009 'NFIC' 12 - Apply patch 13 - Restart all 14 - Repeat search by collection limit 15 - Success! 16 - Check the zebra-output.log: Search biblios OK 0 1 1+0 RPN @attrset Bib-1 @attr 1=8009 NFIC 17 - Add a new ccode value: N)N 18 - Set some items to that ccode 19 - Confirm searching by that ccode works Signed-off-by: Katrin Fischer Signed-off-by: Alex Arnaud Signed-off-by: Jonathan Druart (cherry picked from commit bc1b76be4a35403239fbce6f349ee343435cc8a0) Signed-off-by: Lucas Gass (cherry picked from commit 4733a2a4215c9351a398945ea2546542e4027d43) Signed-off-by: Aleisha Amohia --- C4/Search.pm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/C4/Search.pm b/C4/Search.pm index b6da30d4f0..7eabeae078 100644 --- a/C4/Search.pm +++ b/C4/Search.pm @@ -1423,7 +1423,6 @@ See verbose embedded documentation. sub buildQuery { my ( $operators, $operands, $indexes, $limits, $sort_by, $scan, $lang) = @_; - warn "---------\nEnter buildQuery\n---------" if $DEBUG; my $query_desc; @@ -1702,7 +1701,7 @@ sub buildQuery { if ( $k !~ /mc-i(tem)?type/ ) { # in case the mc-ccode value has complicating chars like ()'s inside it we wrap in quotes $this_limit =~ tr/"//d; - $this_limit = $k.":'".$v."'"; + $this_limit = $k.':"'.$v.'"'; } $group_OR_limits{$k} .= " or " if $group_OR_limits{$k}; -- 2.39.5