Bug 5866 : Updated patch to speed up holds awaiting pickup github/bug_5866 origin/new/bug_5866
authorChris Cormack <chrisc@catalyst.net.nz>
Thu, 25 Aug 2011 03:21:01 +0000 (15:21 +1200)
committerChris Cormack <chrisc@catalyst.net.nz>
Fri, 26 Aug 2011 03:30:18 +0000 (15:30 +1200)
This reduced execution time on the report from timeout (1400 holds waiting + 200 holds over) to 6 or so seconds, with 1566 holds over (test data, no holds waiting).

Signed-off-by: Liz Rea <lrea@nekls.org>
Signed-off-by: Ian Walls <ian.walls@bywatersolutions.com>
circ/waitingreserves.pl
installer/data/mysql/kohastructure.sql
installer/data/mysql/updatedatabase.pl

index 9850114..c2f868d 100755 (executable)
@@ -111,10 +111,9 @@ foreach my $num (@getreserves) {
     my $gettitle     = GetBiblioFromItemNumber( $num->{'itemnumber'} );
     # fix up item type for display
     $gettitle->{'itemtype'} = C4::Context->preference('item-level_itypes') ? $gettitle->{'itype'} : $gettitle->{'itemtype'};
-    my $getborrower  = GetMemberDetails( $num->{'borrowernumber'} );
+    my $getborrower = GetMember(borrowernumber => $num->{'borrowernumber'});
     my $itemtypeinfo = getitemtypeinfo( $gettitle->{'itemtype'} );  # using the fixed up itype/itemtype
     $getreserv{'waitingdate'} = format_date( $num->{'waitingdate'} );
-
     my ( $waiting_year, $waiting_month, $waiting_day ) = split (/-/, $num->{'waitingdate'});
     ( $waiting_year, $waiting_month, $waiting_day ) =
       Add_Delta_Days( $waiting_year, $waiting_month, $waiting_day,
index 8b84019..13fa53d 100644 (file)
@@ -1555,6 +1555,7 @@ CREATE TABLE `reserves` (
   `waitingdate` date default NULL,
   `expirationdate` DATE DEFAULT NULL,
   `lowestPriority` tinyint(1) NOT NULL,
+  KEY priorityfoundidx (priority,found),
   KEY `borrowernumber` (`borrowernumber`),
   KEY `biblionumber` (`biblionumber`),
   KEY `itemnumber` (`itemnumber`),
index 030897c..1085db9 100755 (executable)
@@ -4432,6 +4432,14 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     SetVersion ($DBversion);
 }
 
+$DBversion = "3.05.00.XXX";
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+    $dbh->do("CREATE INDEX priorityfoundidx ON reserves (priority,found)");
+    print "Create an index on reserves to speed up holds awaiting pickup report bug 5866\n";
+    SetVersion($DBversion);
+}
+
+
 =head1 FUNCTIONS
 
 =head2 DropAllForeignKeys($table)