Bugzilla – Attachment 75251 Details for
Bug 19820
Add unsafe param to GetMarcSubfieldStructure
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 19820: Add unsafe param to GetMarcSubfieldStructure
Bug-19820-Add-unsafe-param-to-GetMarcSubfieldStruc.patch (text/plain), 4.03 KB, created by
Josef Moravec
on 2018-05-11 06:39:21 UTC
(
hide
)
Description:
Bug 19820: Add unsafe param to GetMarcSubfieldStructure
Filename:
MIME Type:
Creator:
Josef Moravec
Created:
2018-05-11 06:39:21 UTC
Size:
4.03 KB
patch
obsolete
>From 0b4c15ed5298d5635c35eed96b4d1f32a7e3b7f3 Mon Sep 17 00:00:00 2001 >From: David Gustafsson <david.gustafsson@ub.gu.se> >Date: Fri, 15 Dec 2017 14:19:49 +0100 >Subject: [PATCH] Bug 19820: Add unsafe param to GetMarcSubfieldStructure > >Add unsafe param to GetMarcSubfieldStructure and use this options >where it's safe to do so to increase performance > >Sponsored-by: Gothenburg University Library > >Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org> > >Signed-off-by: Josef Moravec <josef.moravec@gmail.com> >--- > C4/Biblio.pm | 46 ++++++++++++++++++++++++++++++++++++++++------ > 1 file changed, 40 insertions(+), 6 deletions(-) > >diff --git a/C4/Biblio.pm b/C4/Biblio.pm >index eaff256..0a3b0a1 100644 >--- a/C4/Biblio.pm >+++ b/C4/Biblio.pm >@@ -1000,18 +1000,52 @@ sub GetUsedMarcStructure { > return $sth->fetchall_arrayref( {} ); > } > >+=pod >+ > =head2 GetMarcSubfieldStructure > >+ my $structure = GetMarcSubfieldStructure($frameworkcode, [$params]); >+ >+Returns a reference to hash representing MARC subfield structure >+for framework with framework code C<$frameworkcode>, C<$params> is >+optional and may contain additional options. >+ >+=over 4 >+ >+=item C<$frameworkcode> >+ >+The framework code. >+ >+=item C<$params> >+ >+An optional hash reference with additional options. >+The following options are supported: >+ >+=over 4 >+ >+=item unsafe >+ >+Pass { unsafe => 1 } do disable cached object cloning, >+and instead get a shared reference, resulting in better >+performance (but care must be taken so that retured object >+is never modified). >+ >+Note: If you call GetMarcSubfieldStructure with unsafe => 1, do not modify or >+even autovivify its contents. It is a cached/shared data structure. Your >+changes would be passed around in subsequent calls. >+ >+=back >+ > =cut > > sub GetMarcSubfieldStructure { >- my ( $frameworkcode ) = @_; >+ my ( $frameworkcode, $params ) = @_; > > $frameworkcode //= ''; > > my $cache = Koha::Caches->get_instance(); > my $cache_key = "MarcSubfieldStructure-$frameworkcode"; >- my $cached = $cache->get_from_cache($cache_key); >+ my $cached = $cache->get_from_cache($cache_key, { unsafe => ($params && $params->{unsafe}) }); > return $cached if $cached; > > my $dbh = C4::Context->dbh; >@@ -1055,7 +1089,7 @@ sub GetMarcFromKohaField { > return unless $kohafield; > # The next call uses the Default framework since it is AUTHORITATIVE > # for all Koha to MARC mappings. >- my $mss = GetMarcSubfieldStructure( '' ); # Do not change framework >+ my $mss = GetMarcSubfieldStructure( '', { unsafe => 1 } ); # Do not change framework > my @retval; > foreach( @{ $mss->{$kohafield} } ) { > push @retval, $_->{tagfield}, $_->{tagsubfield}; >@@ -1082,7 +1116,7 @@ sub GetMarcSubfieldStructureFromKohaField { > > # The next call uses the Default framework since it is AUTHORITATIVE > # for all Koha to MARC mappings. >- my $mss = GetMarcSubfieldStructure(''); # Do not change framework >+ my $mss = GetMarcSubfieldStructure( '', { unsafe => 1 } ); # Do not change framework > return unless $mss->{$kohafield}; > return wantarray ? @{$mss->{$kohafield}} : $mss->{$kohafield}->[0]; > } >@@ -2118,7 +2152,7 @@ sub TransformKohaToMarc { > > # In the next call we use the Default framework, since it is considered > # authoritative for Koha to Marc mappings. >- my $mss = GetMarcSubfieldStructure( '' ); # do not change framework >+ my $mss = GetMarcSubfieldStructure( '', { unsafe => 1 } ); # do not change framewok > my $tag_hr = {}; > while ( my ($kohafield, $value) = each %$hash ) { > foreach my $fld ( @{ $mss->{$kohafield} } ) { >@@ -2536,7 +2570,7 @@ sub TransformMarcToKoha { > > # The next call acknowledges Default as the authoritative framework > # for Koha to MARC mappings. >- my $mss = GetMarcSubfieldStructure(''); # Do not change framework >+ my $mss = GetMarcSubfieldStructure( '', { unsafe => 1 } ); # Do not change framework > foreach my $kohafield ( keys %{ $mss } ) { > my ( $table, $column ) = split /[.]/, $kohafield, 2; > next unless $tables{$table}; >-- >2.1.4
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 19820
:
69823
|
71573
|
74089
| 75251 |
75252