LP 1827250: Fix Last Captured Hold Check for Holds Shelf
authorJason Stephenson <jason@sigio.com>
Thu, 2 May 2019 12:36:15 +0000 (08:36 -0400)
committerGalen Charlton <gmc@equinoxinitiative.org>
Thu, 3 Oct 2019 21:53:13 +0000 (17:53 -0400)
When the current copy on an on shelf hold is the same as that on some
uncaptured holds, the hold fails to appear on the hold shelf when it
should.  This comes down to some SQL in the storage function to
retrieve wide holds: open-ils.storage.action.live_holds.wide_hash.

The intent of the new code is to check that the current hold matches
the most recently captured hold for the copy.  However, the order by
in the query fails to take into account holds with a NULL capture time
on the same copy will sort before the captured holds.  This patch
rectifies this situation by adding "NULLS LAST" to the order by.

Signed-off-by: Jason Stephenson <jason@sigio.com>
Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Publisher/action.pm

index f987d3b..213ed59 100644 (file)
@@ -2146,7 +2146,7 @@ sub wide_hold_data {
                 SELECT  id
                   FROM  action.hold_request recheck
                   WHERE recheck.current_copy = cp.id
-                  ORDER BY capture_time DESC
+                  ORDER BY capture_time DESC NULLS LAST
                   LIMIT 1
             )))
         SQL