Bugzilla – Attachment 190062 Details for
Bug 41343
Overdue report is too intensive on systems with many overdues
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 41343: Don't fetch patron objects per overdue
Bug-41343-Dont-fetch-patron-objects-per-overdue.patch (text/plain), 7.01 KB, created by
Nick Clemens (kidclamp)
on 2025-12-01 20:19:53 UTC
(
hide
)
Description:
Bug 41343: Don't fetch patron objects per overdue
Filename:
MIME Type:
Creator:
Nick Clemens (kidclamp)
Created:
2025-12-01 20:19:53 UTC
Size:
7.01 KB
patch
obsolete
>From 0cff21fd24f082589219e08500bc31d0e1d0600e Mon Sep 17 00:00:00 2001 >From: Nick Clemens <nick@bywatersolutions.com> >Date: Mon, 1 Dec 2025 19:51:52 +0000 >Subject: [PATCH] Bug 41343: Don't fetch patron objects per overdue > >We use SQL here to get all the needed info - the query says it is slow, but isn't so bad. >Worse is fetching the patron for each borrower with overdues (and more than once if they have several) > >It appears we started grabbing the patron so we could use patron title, but we can just pass the info already fetched. > >I additionally fetch the patron category types and update patron-title to allow for hide_patron_infos_if_needed to work >without a patron object - we can just use the branchcode as ultimately that's all we need > >To test: >1 - Add many items to your catalog (can use my handy repo randitems.pl) > https://github.com/kidclamp/handy-koha-script >2 - Add many issues (can use randissues.pl from above) >3 - I tested with about 1000 >4 - Browse to Circulation->Overdues >5 - Note load time >6 - Apply patch >7 - Restart all >8 - Note load time is faster >--- > circ/overdue.pl | 17 ++++++++++++++++- > .../prog/en/includes/patron-title.inc | 5 +++-- > .../prog/en/modules/circ/overdue.tt | 8 ++++---- > 3 files changed, 23 insertions(+), 7 deletions(-) > >diff --git a/circ/overdue.pl b/circ/overdue.pl >index 2d58dd27ee4..0bd118d8a99 100755 >--- a/circ/overdue.pl >+++ b/circ/overdue.pl >@@ -247,6 +247,8 @@ if ($noreport) { > borrowers.cardnumber, > borrowers.borrowernumber, > borrowers.branchcode, >+ borrowers.categorycode, >+ categories.category_type, > issues.itemnumber, > issues.issuedate, > items.datelastborrowed, >@@ -269,6 +271,7 @@ if ($noreport) { > return_claims.id AS return_claim_id > FROM issues > LEFT JOIN borrowers ON (issues.borrowernumber=borrowers.borrowernumber ) >+ LEFT JOIN categories ON (categories.categorycode = borrowers.categorycode ) > LEFT JOIN items ON (issues.itemnumber=items.itemnumber) > LEFT JOIN biblioitems ON (biblioitems.biblioitemnumber=items.biblioitemnumber) > LEFT JOIN biblio ON (biblio.biblionumber=items.biblionumber ) >@@ -349,7 +352,19 @@ if ($noreport) { > } > > push @overduedata, { >- patron => Koha::Patrons->find( $data->{borrowernumber} ), >+ borrower => { >+ branchcode => $data->{branchcode}, >+ borrowernumber => $data->{borrowernumber}, >+ categorycode => $data->{categorycode}, >+ category_type => $data->{category_type}, >+ surname => $data->{surname}, >+ othernames => $data->{othernames}, >+ firstname => $data->{firstname}, >+ preferred_name => $data->{preferred_name}, >+ middle_name => $data->{middle_name}, >+ cardnumber => $data->{cardnumber}, >+ title => $data->{title} >+ }, > duedate => $data->{date_due}, > borrowernumber => $data->{borrowernumber}, > cardnumber => $data->{cardnumber}, >diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/patron-title.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/patron-title.inc >index 7161ca7a3b9..67bce0be337 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/includes/patron-title.inc >+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/patron-title.inc >@@ -3,6 +3,7 @@ > [%- USE Branches -%] > [%- SET data = {} -%] > [%- IF patron -%] >+ [%- SET data.branchcode = patron.branchcode -%] > [%- SET data.category_type = patron.category.category_type -%] > [%- SET data.surname = patron.surname -%] > [%- SET data.othernames = patron.othernames -%] >@@ -13,6 +14,7 @@ > [%- SET data.borrowernumber = patron.borrowernumber -%] > [%- SET data.title = patron.title -%] > [%- ELSIF ( borrower.borrowernumber ) -%] >+ [%- SET data.branchcode = borrower.branchcode -%] > [%- SET data.category_type = borrower.category_type -%] > [%- SET data.surname = borrower.surname -%] > [%- SET data.othernames = borrower.othernames -%] >@@ -38,8 +40,7 @@ > [%- SET display_cardnumber = 1 -%] > [%- IF no_cardnumber -%][%- SET display_cardnumber = 0 -%][%- END -%] > [%- IF hide_patron_infos_if_needed -%] >- [%# Should only be set if patron is set -%] >- [%- SET can_see_patron_infos = logged_in_user.can_see_patron_infos( patron ) -%] >+ [%- SET can_see_patron_infos = logged_in_user.can_see_patrons_from( data.branchcode ) -%] > [%- UNLESS can_see_patron_infos -%] > [%- SET display_patron_name = 0 -%] > [%- SET display_cardnumber = 0 -%] >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/overdue.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/overdue.tt >index 1bc2b58b50d..a273247e607 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/overdue.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/overdue.tt >@@ -120,8 +120,8 @@ > [% END %] > </td> > <td> >- [% INCLUDE 'patron-title.inc' patron=overdueloo.patron hide_patron_infos_if_needed=1 %] >- [% IF logged_in_user.can_see_patron_infos( overdueloo.patron ) %] >+ [% INCLUDE 'patron-title.inc' borrower=overdueloo.borrower hide_patron_infos_if_needed=1 %] >+ [% IF logged_in_user.can_see_patrons_from( overdueloo.branchcode ) %] > [% IF ( overdueloo.email ) %] > <span class="overdue_email"> [<a href="mailto:[% overdueloo.email | uri %]?subject=[% INCLUDE subject %] [% overdueloo.title | uri %]">email</a>] </span> > [% END %] >@@ -136,8 +136,8 @@ > </span> > [% END %] > </td> >- <td>[% Categories.GetName( overdueloo.patron.categorycode ) | html %]</td> >- <td>[% Branches.GetName( overdueloo.patron.branchcode ) | html %]</td> >+ <td>[% Categories.GetName( overdueloo.borrower.categorycode ) | html %]</td> >+ <td>[% Branches.GetName( overdueloo.borrower.branchcode ) | html %]</td> > <td > >[% INCLUDE 'biblio-title.inc' biblio=overdueloo link = 1 %] > [% IF ( overdueloo.author ) %], by [% overdueloo.author | html %][% END %][% IF ( overdueloo.enumchron ) %], [% overdueloo.enumchron | html %][% END %]</td >-- >2.39.5
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 41343
: 190062 |
190063