From 64a3caecb701666621a8faafab0c91d43cc9cb49 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Thu, 9 Nov 2017 10:34:08 -0300 Subject: [PATCH] Bug 19599: Speed anonymise_issue_history up The query generated by anonymise_issue_history is unecessary complex and can be very slow on large DB. With this patch we will execute one query per patron instead. See patch "Bug 19599: Simplify the query" on the bug report for an alternative. Signed-off-by: Nick Clemens --- Koha/Patrons.pm | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/Koha/Patrons.pm b/Koha/Patrons.pm index 263cec72a4..fd2b997583 100644 --- a/Koha/Patrons.pm +++ b/Koha/Patrons.pm @@ -168,8 +168,9 @@ sub anonymise_issue_history { # The anonymisation should not fail quietly if AnonymousPatron is not a valid entry # Set it to undef (NULL) my $dtf = Koha::Database->new->schema->storage->datetime_parser; - my $old_issues_to_anonymise = $self->search_related( - 'old_issues', + my $nb_rows = 0; + while ( my $patron = $self->next ) { + my $old_issues_to_anonymise = $patron->old_checkouts->search( { ( $older_than_date @@ -178,9 +179,11 @@ sub anonymise_issue_history { : () ) } - ); - my $anonymous_patron = C4::Context->preference('AnonymousPatron') || undef; - $old_issues_to_anonymise->update( { 'old_issues.borrowernumber' => $anonymous_patron } ); + ); + my $anonymous_patron = C4::Context->preference('AnonymousPatron') || undef; + $nb_rows += $old_issues_to_anonymise->update( { 'old_issues.borrowernumber' => $anonymous_patron } ); + } + return $nb_rows; } =head3 type -- 2.11.0