Ensure we get a name and are duplicate free
authorMike Rylander <mrylander@gmail.com>
Mon, 10 Feb 2014 20:10:38 +0000 (15:10 -0500)
committerJason Etheridge <jason@esilibrary.com>
Wed, 2 Jul 2014 19:06:36 +0000 (15:06 -0400)
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Open-ILS/src/sql/Pg/upgrade/XXXX.function.located_uris_act_as_copies.sql

index 6c1a968..ceb2c26 100644 (file)
@@ -35,7 +35,8 @@ CREATE OR REPLACE FUNCTION evergreen.located_uris (
     pref_lib INT DEFAULT NULL
 ) RETURNS TABLE (id BIGINT, name TEXT, label_sortkey TEXT, rank INT) AS $$
     WITH all_orgs AS (SELECT COALESCE( enabled, FALSE ) AS flag FROM config.global_flag WHERE name = 'opac.located_uri.act_as_copy')
-    SELECT acn.id, aou.name, acn.label_sortkey, evergreen.rank_ou(aou.id, $2, $3) AS pref_ou
+    SELECT DISTINCT ON (id) * FROM (
+    SELECT acn.id, COALESCE(aou.name,aoud.name), acn.label_sortkey, evergreen.rank_ou(aou.id, $2, $3) AS pref_ou
       FROM asset.call_number acn
            INNER JOIN asset.uri_call_number_map auricnm ON acn.id = auricnm.call_number
            INNER JOIN asset.uri auri ON auri.id = auricnm.uri
@@ -47,7 +48,7 @@ CREATE OR REPLACE FUNCTION evergreen.located_uris (
           AND auri.active IS TRUE
           AND ((NOT all_orgs.flag AND aou.id IS NOT NULL) OR COALESCE(aou.id,aoud.id) IS NOT NULL)
     UNION
-    SELECT acn.id, aou.name, acn.label_sortkey, evergreen.rank_ou(aou.id, $2, $3) AS pref_ou
+    SELECT acn.id, COALESCE(aou.name,aoud.name) AS name, acn.label_sortkey, evergreen.rank_ou(aou.id, $2, $3) AS pref_ou
       FROM asset.call_number acn
            INNER JOIN asset.uri_call_number_map auricnm ON acn.id = auricnm.call_number
            INNER JOIN asset.uri auri ON auri.id = auricnm.uri
@@ -57,7 +58,8 @@ CREATE OR REPLACE FUNCTION evergreen.located_uris (
       WHERE acn.record = $1
           AND acn.deleted IS FALSE
           AND auri.active IS TRUE
-          AND ((NOT all_orgs.flag AND aou.id IS NOT NULL) OR COALESCE(aou.id,aoud.id) IS NOT NULL)
+          AND ((NOT all_orgs.flag AND aou.id IS NOT NULL) OR COALESCE(aou.id,aoud.id) IS NOT NULL))x
+    ORDER BY id, pref_ou DESC;
 $$
 LANGUAGE SQL STABLE;