Bugzilla – Attachment 177386 Details for
Bug 31856
Improve performance of serials subscriptions search
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 31856: Prefetch additional fields for increased performance
Bug-31856-Prefetch-additional-fields-for-increased.patch (text/plain), 2.82 KB, created by
David Gustafsson
on 2025-01-31 13:21:37 UTC
(
hide
)
Description:
Bug 31856: Prefetch additional fields for increased performance
Filename:
MIME Type:
Creator:
David Gustafsson
Created:
2025-01-31 13:21:37 UTC
Size:
2.82 KB
patch
obsolete
>From d1abb677b508cf2a4780c03b43bc1b8eee43a7d4 Mon Sep 17 00:00:00 2001 >From: David Gustafsson <david.gustafsson@ub.gu.se> >Date: Wed, 10 May 2023 16:02:51 +0200 >Subject: [PATCH] Bug 31856: Prefetch additional fields for increased > performance > >--- > C4/Serials.pm | 38 ++++++++++++++++++++------------------ > 1 file changed, 20 insertions(+), 18 deletions(-) > >diff --git a/C4/Serials.pm b/C4/Serials.pm >index adf88da2f34..1816f00151f 100644 >--- a/C4/Serials.pm >+++ b/C4/Serials.pm >@@ -631,7 +631,7 @@ sub SearchSubscriptions { > my $dbh = C4::Context->dbh; > my $sth = $dbh->prepare($query); > $sth->execute(@where_args); >- my $results = $sth->fetchall_arrayref( {} ); >+ my $results = $sth->fetchall_arrayref( {} ); > > my $total_results = @{$results}; > >@@ -639,28 +639,30 @@ sub SearchSubscriptions { > $results = [ splice( @{$results}, 0, $params->{results_limit} ) ]; > } > my %additional_fields_by_id = map { $_->id => $_->name } Koha::AdditionalFields->search( { tablename => 'subscription' } )->as_list; >- >- for my $subscription ( @$results ) { >- $subscription->{cannotedit} = not can_edit_subscription( $subscription ); >- $subscription->{cannotdisplay} = not can_show_subscription( $subscription ); >- >- if (%additional_fields_by_id) { >- my @additional_field_values = Koha::AdditionalFieldValues->search( >- { >- field_id => { -in => [ keys %additional_fields_by_id ] }, >- record_id => $subscription->{subscriptionid} >- } >- )->as_list; >- >- $subscription->{additional_fields} = { >- map { $additional_fields_by_id{$_->field_id} => $_->value } @additional_field_values >- }; >+ if (%additional_fields_by_id) { >+ my %subscriptions_by_id = map { $_->{subscriptionid } => $_ } @{$results}; >+ my $field_values_rs = Koha::AdditionalFieldValues->search( >+ { >+ field_id => { -in => [ keys %additional_fields_by_id ] }, >+ record_id => { -in => [ keys %subscriptions_by_id ] } >+ } >+ ); >+ while (my $field_value = $field_values_rs->next) { >+ my $field_name = $additional_fields_by_id{$field_value->field_id}; >+ $subscriptions_by_id{$field_value->record_id}->{additional_fields}->{$field_name} = $field_value->value; > } >- else { >+ } >+ else { >+ for my $subscription ( @{$results} ) { > $subscription->{additional_fields} = {}; > } > } > >+ for my $subscription ( @{$results} ) { >+ $subscription->{cannotedit} = not can_edit_subscription( $subscription ); >+ $subscription->{cannotdisplay} = not can_show_subscription( $subscription ); >+ } >+ > return wantarray ? @{$results} : { results => $results, total => $total_results }; > } > >-- >2.48.1
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 31856
:
142058
|
142156
|
142157
|
150651
|
150652
|
150653
|
151077
|
151078
|
177383
|
177384
|
177385
|
177386
|
177387
|
177482
|
177483
|
177484
|
177485
|
177486
|
177487
|
177509
|
177510
|
177511
|
177512
|
177514