Bugzilla – Attachment 99486 Details for
Bug 24527
misc/cronjobs/update_totalissues.pl problem with multiple items
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 24527: misc/cronjobs/update_totalissues.pl problem with multiple items
Bug-24527-misccronjobsupdatetotalissuespl-problem-.patch (text/plain), 3.88 KB, created by
Jonathan Druart
on 2020-02-24 11:32:08 UTC
(
hide
)
Description:
Bug 24527: misc/cronjobs/update_totalissues.pl problem with multiple items
Filename:
MIME Type:
Creator:
Jonathan Druart
Created:
2020-02-24 11:32:08 UTC
Size:
3.88 KB
patch
obsolete
>From 5acb50e5b046f65405b7a1c0f83815080e47744f Mon Sep 17 00:00:00 2001 >From: Fridolin Somers <fridolin.somers@biblibre.com> >Date: Tue, 28 Jan 2020 16:09:20 +0100 >Subject: [PATCH] Bug 24527: misc/cronjobs/update_totalissues.pl problem with > multiple items > >misc/cronjobs/update_totalissues.pl when issuing statistics table, no-incremental, has a problem for biblio with multiple items. >The first SQL query gets the biblios linked to items with issues in statistics : > >SELECT biblio.biblionumber, COUNT(statistics.itemnumber) FROM biblio LEFT JOIN items ON (biblio.biblionumber=items.biblionumber) LEFT JOIN statistics ON (items.itemnumber=statistics.itemnumber) WHERE statistics.type = 'issue' $limit GROUP BY biblio.biblionumber > >The second SQL query is : >SELECT biblio.biblionumber, 0 FROM biblio LEFT JOIN items ON (biblio.biblionumber=items.biblionumber) LEFT JOIN statistics ON (items.itemnumber=statistics.itemnumber) WHERE statistics.itemnumber IS NULL GROUP BY biblio.biblionumber > >The problem is that this second query will set to 0 where ANY item has no entry in statistics table. >So when running it sets 0 to the biblio that had a value from first >query. > >I think the best fix is to use "WHERE statistics.type = 'issue'" inside que JOIN : >LEFT JOIN statistics ON (items.itemnumber=statistics.itemnumber AND statistics.type = 'issue') > >Test plan : >1) Begin with an empty database >2) Create a biblio 1 with no items >3) Create a biblio 2 with 3 items >4) Create a biblio 3 with 2 items >5) Checkout and checkin all items of biblio 2 >6) Checkout and checkin the firt item of biblio 3 >7) run misc/cronjobs/update_totalissues.pl --use-stats -v >8) Check biblio 1 has biblioitems.totalissues = 0 >9) Check biblio 2 has biblioitems.totalissues = 3 >10) Without patch the biblio 3 has biblioitems.totalissues = 0 >11) With patch the biblio 3 has biblioitems.totalissues = 1 >12) Check misc/cronjobs/update_totalissues.pl --incremental is OK > >Signed-off-by: Bernardo Gonzalez Kriegel <bgkriegel@gmail.com> >Work as described following test plan. >totalissues is calculated correctly, incremental works ok. >No errors > >Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org> >--- > misc/cronjobs/update_totalissues.pl | 18 ++++++------------ > 1 file changed, 6 insertions(+), 12 deletions(-) > >diff --git a/misc/cronjobs/update_totalissues.pl b/misc/cronjobs/update_totalissues.pl >index eb11861f8d..7e24d0788d 100755 >--- a/misc/cronjobs/update_totalissues.pl >+++ b/misc/cronjobs/update_totalissues.pl >@@ -138,22 +138,16 @@ sub process_stats { > $dt->subtract( $units{$unit} => $1 ) ); > } > my $limit = ''; >- $limit = " AND statistics.datetime >= ?" if ( $interval || $since ); >+ $limit = " WHERE statistics.datetime >= ?" if ( $interval || $since ); > > my $query = >-"SELECT biblio.biblionumber, COUNT(statistics.itemnumber) FROM biblio LEFT JOIN items ON (biblio.biblionumber=items.biblionumber) LEFT JOIN statistics ON (items.itemnumber=statistics.itemnumber) WHERE statistics.type = 'issue' $limit GROUP BY biblio.biblionumber;"; >+"SELECT biblio.biblionumber, COUNT(statistics.itemnumber) FROM biblio\ >+ LEFT JOIN items ON (biblio.biblionumber=items.biblionumber)\ >+ LEFT JOIN statistics ON (items.itemnumber=statistics.itemnumber AND statistics.type = 'issue') >+ $limit\ >+ GROUP BY biblio.biblionumber"; > process_query( $query, $limit ); > >- unless ($incremental) { >- $query = >-"SELECT biblio.biblionumber, 0 FROM biblio LEFT JOIN items ON (biblio.biblionumber=items.biblionumber) LEFT JOIN statistics ON (items.itemnumber=statistics.itemnumber) WHERE statistics.itemnumber IS NULL GROUP BY biblio.biblionumber;"; >- process_query( $query, '' ); >- >- $query = >-"SELECT biblio.biblionumber, 0 FROM biblio LEFT JOIN items ON (biblio.biblionumber=items.biblionumber) WHERE items.itemnumber IS NULL GROUP BY biblio.biblionumber;"; >- process_query( $query, '' ); >- } >- > $dbh->commit(); > } > >-- >2.11.0
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 24527
:
98040
|
99474
| 99486