From 8b21682c332b63afd3be74073e5eeaf531dadeac Mon Sep 17 00:00:00 2001 From: =?utf8?q?Joonas=20Kylm=C3=A4l=C3=A4?= Date: Fri, 13 Nov 2020 12:07:22 +0200 Subject: [PATCH] Bug 27012: Fix incorrect SQL syntax in hold merging If you merge two records with holds in them following error happens without this patch: [WARN] DBD::mysql::st execute failed: called with 4 bind variables when 3 are needed [for Statement "SELECT * FROM reserves WHERE biblionumber = ? AND (found <> ? AND found <> ? OR found is NULL) ORDER BY reservedate ASC" with ParamValues: 0=Null!, 1=Null!, 2=Null!] at /kohadevbox/koha/C4/Reserves.pm line 2002. To test: 1) Notice prove t/db_dependent/Reserves.t fails with above error 2) Apply patch 3) Notice prove t/db_dependent/Reserves.t passes Signed-off-by: Victor Grousset/tuxayo Signed-off-by: Josef Moravec Signed-off-by: Jonathan Druart --- C4/Reserves.pm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/C4/Reserves.pm b/C4/Reserves.pm index fbd42f0be4..c5a8d4ab53 100644 --- a/C4/Reserves.pm +++ b/C4/Reserves.pm @@ -1993,13 +1993,13 @@ sub MergeHolds { # don't reorder those already waiting $sth = $dbh->prepare( -"SELECT * FROM reserves WHERE biblionumber = ? AND (found <> ? AND found <> ? OR found is NULL) ORDER BY reservedate ASC" +"SELECT * FROM reserves WHERE biblionumber = ? AND (found NOT IN ('W', 'T', 'P') OR found is NULL) ORDER BY reservedate ASC" ); my $upd_sth = $dbh->prepare( "UPDATE reserves SET priority = ? WHERE biblionumber = ? AND borrowernumber = ? AND reservedate = ? AND (itemnumber = ? or itemnumber is NULL) " ); - $sth->execute( $to_biblio, 'W', 'T', 'P' ); + $sth->execute( $to_biblio ); my $priority = 1; while ( my $reserve = $sth->fetchrow_hashref() ) { $upd_sth->execute( -- 2.39.5