From 7dad0a4dbdf0832020ba80e74e7d7536d7f689c5 Mon Sep 17 00:00:00 2001 From: Thibaud Guillot Date: Tue, 14 Jun 2022 14:54:04 +0200 Subject: [PATCH] Bug 39001: Improve perf to get claims list by vendor To view claims, when clicked, an SQL query is performed to search for claims by vendor and build a select list. If you have so many claims, it takes too long or even creates a timeout problem. Test plan: 1) Be sure to have vendors and claims on serials 2) Click on "claims", the more claims you have, the longer it will take to appear 3) Apply patch 4) Restart step 2n https://bugs.koha-community.org/show_bug.cgi?id=31009 --- C4/Serials.pm | 3 ++- serials/claims.pl | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/C4/Serials.pm b/C4/Serials.pm index 93c8a759d9..c63363f1ad 100644 --- a/C4/Serials.pm +++ b/C4/Serials.pm @@ -134,7 +134,7 @@ sub GetSuppliersWithLateIssues { my $dbh = C4::Context->dbh; my $statuses = join(',', ( LATE, MISSING_STATUSES, CLAIMED ) ); my $query = qq| - SELECT DISTINCT id, name + SELECT COUNT(*) as count, id, name FROM subscription LEFT JOIN serial ON serial.subscriptionid=subscription.subscriptionid LEFT JOIN aqbooksellers ON subscription.aqbooksellerid = aqbooksellers.id @@ -144,6 +144,7 @@ sub GetSuppliersWithLateIssues { OR serial.STATUS IN ( $statuses ) ) AND subscription.closed = 0 + GROUP BY aqbooksellers.id ORDER BY name|; return $dbh->selectall_arrayref($query, { Slice => {} }); } diff --git a/serials/claims.pl b/serials/claims.pl index 5b5479f749..8c8e85f27c 100755 --- a/serials/claims.pl +++ b/serials/claims.pl @@ -47,7 +47,6 @@ my ($template, $loggedinuser, $cookie) # supplierlist is returned in name order my $supplierlist = GetSuppliersWithLateIssues(); for my $s (@{$supplierlist} ) { - $s->{count} = scalar GetLateOrMissingIssues($s->{id}); if ($supplierid && $s->{id} == $supplierid) { $s->{selected} = 1; } -- 2.25.1