LP#1855329: Hold shelf query speed problem
authorMike Rylander <mrylander@gmail.com>
Thu, 5 Dec 2019 20:12:57 +0000 (15:12 -0500)
committerGalen Charlton <gmc@equinoxinitiative.org>
Mon, 6 Jan 2020 15:23:35 +0000 (10:23 -0500)
In bug 1827250 I suggested Jason Stephenson look at an alternate SQL
formulation to solve the original problem. He did, and deemed it faster,
so went with that. Unfortunately, on PG 9.6, we're seeing some data sets
that decide on a /very/ poor plan for the wide-hold query with the
solution as implemented, but the original suggestion from Jason works
fine.

In the face of evidence controverting my thought that giving PG more
options for planning is better in this case, this commit moves to his
original query change.

Signed-off-by: Mike Rylander <mrylander@gmail.com>
Signed-off-by: Jason Stephenson <jason@sigio.com>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Publisher/action.pm

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