Bug 34666: Combine queries in _Findgroupreserve
The queries here are the same except for 2 differences: 1 - They check if the hold was on a particular item 2 - The latter confirms that the reserve item group matches the item's item group For 1, it doesn't matter - only 1 item can be mapped ot a reserve, itemnumber is the primary key for hold_fill_targets - so we are either matching it in the first query or the second, either way we get the same reserve - the returns are the same so we don't care which query it came from For 2, this has already been checked when the queue was built. We don't need to verify the match because it wouldn't be in the targets if they didn't match To test: 1 - Apply second unit test patch 2 - prove t/db_dependent/Reserves.t 3 - It should pass 4 - Apply this patch 5 - prove t/db_dependent/Reserves.t 6 - It continues to pass Signed-off-by: David Nind <david@davidnind.com> Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This commit is contained in:
parent
6f7ccdf6c3
commit
72bfb416d3
1 changed files with 3 additions and 44 deletions
|
@ -1717,9 +1717,8 @@ sub _Findgroupreserve {
|
|||
my ( $biblionumber, $itemnumber, $lookahead, $ignore_borrowers) = @_;
|
||||
my $dbh = C4::Context->dbh;
|
||||
|
||||
# TODO: consolidate at least the SELECT portion of the first 2 queries to a common $select var.
|
||||
# check for exact targeted match
|
||||
my $item_level_target_query = qq{
|
||||
# check for targeted match form the holds queue
|
||||
my $hold_target_query = qq{
|
||||
SELECT reserves.biblionumber AS biblionumber,
|
||||
reserves.borrowernumber AS borrowernumber,
|
||||
reserves.reservedate AS reservedate,
|
||||
|
@ -1740,13 +1739,12 @@ sub _Findgroupreserve {
|
|||
JOIN hold_fill_targets USING (reserve_id)
|
||||
WHERE found IS NULL
|
||||
AND priority > 0
|
||||
AND item_level_request = 1
|
||||
AND hold_fill_targets.itemnumber = ?
|
||||
AND reservedate <= DATE_ADD(NOW(),INTERVAL ? DAY)
|
||||
AND suspend = 0
|
||||
ORDER BY priority
|
||||
};
|
||||
my $sth = $dbh->prepare($item_level_target_query);
|
||||
my $sth = $dbh->prepare($hold_target_query);
|
||||
$sth->execute($itemnumber, $lookahead||0);
|
||||
my @results;
|
||||
if ( my $data = $sth->fetchrow_hashref ) {
|
||||
|
@ -1755,45 +1753,6 @@ sub _Findgroupreserve {
|
|||
}
|
||||
return @results if @results;
|
||||
|
||||
# check for title-level targeted match
|
||||
my $title_level_target_query = qq{
|
||||
SELECT reserves.biblionumber AS biblionumber,
|
||||
reserves.borrowernumber AS borrowernumber,
|
||||
reserves.reservedate AS reservedate,
|
||||
reserves.branchcode AS branchcode,
|
||||
reserves.cancellationdate AS cancellationdate,
|
||||
reserves.found AS found,
|
||||
reserves.reservenotes AS reservenotes,
|
||||
reserves.priority AS priority,
|
||||
reserves.timestamp AS timestamp,
|
||||
biblioitems.biblioitemnumber AS biblioitemnumber,
|
||||
reserves.itemnumber AS itemnumber,
|
||||
reserves.reserve_id AS reserve_id,
|
||||
reserves.itemtype AS itemtype,
|
||||
reserves.non_priority AS non_priority,
|
||||
reserves.item_group_id AS item_group_id
|
||||
FROM reserves
|
||||
JOIN biblioitems USING (biblionumber)
|
||||
JOIN hold_fill_targets USING (reserve_id)
|
||||
LEFT JOIN item_group_items ON ( item_group_items.item_id = hold_fill_targets.itemnumber )
|
||||
WHERE found IS NULL
|
||||
AND priority > 0
|
||||
AND item_level_request = 0
|
||||
AND hold_fill_targets.itemnumber = ?
|
||||
AND reservedate <= DATE_ADD(NOW(),INTERVAL ? DAY)
|
||||
AND suspend = 0
|
||||
AND (reserves.item_group_id = item_group_items.item_group_id OR reserves.item_group_id IS NULL)
|
||||
ORDER BY priority
|
||||
};
|
||||
$sth = $dbh->prepare($title_level_target_query);
|
||||
$sth->execute($itemnumber, $lookahead||0);
|
||||
@results = ();
|
||||
if ( my $data = $sth->fetchrow_hashref ) {
|
||||
push( @results, $data )
|
||||
unless any{ $data->{borrowernumber} eq $_ } @$ignore_borrowers ;
|
||||
}
|
||||
return @results if @results;
|
||||
|
||||
my $query = qq{
|
||||
SELECT reserves.biblionumber AS biblionumber,
|
||||
reserves.borrowernumber AS borrowernumber,
|
||||
|
|
Loading…
Reference in a new issue