]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/src/sql/Pg/upgrade/XXXX.lp790329_opac_lasso_counts.sql
LP#790329 org_lasso search is broken
[working/Evergreen.git] / Open-ILS / src / sql / Pg / upgrade / XXXX.lp790329_opac_lasso_counts.sql
1 -- Evergreen DB patch XXXX.lp790329_opac_lasso_counts.sql
2 --
3 -- Resolves an error in calculating copy counts for org lassos
4 -- Per LP 790329
5 --
6 BEGIN;
7
8
9 -- check whether patch can be applied
10 SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version);
11
12 -- FIXME: add/check SQL statements to perform the upgrade
13 CREATE OR REPLACE FUNCTION asset.opac_lasso_record_copy_count (i_lasso INT, rid BIGINT) RETURNS TABLE (depth INT, org_unit INT, visible BIGINT, available BIGINT, unshadow BIGINT, transcendant INT) AS $f$
14 DECLARE
15     ans RECORD;
16     trans INT;
17 BEGIN
18     SELECT 1 INTO trans FROM biblio.record_entry b JOIN config.bib_source src ON (b.source = src.id) WHERE src.transcendant AND b.id = rid;
19
20     FOR ans IN SELECT u.org_unit AS id FROM actor.org_lasso_map AS u WHERE lasso = i_lasso LOOP
21         RETURN QUERY
22         SELECT  -1,
23                 ans.id,
24                 COUNT( av.id ),
25                 SUM( CASE WHEN cp.status IN (0,7,12) THEN 1 ELSE 0 END ),
26                 COUNT( av.id ),
27                 trans
28           FROM
29                 actor.org_unit_descendants(ans.id) d
30                 JOIN asset.opac_visible_copies av ON (av.record = rid AND av.circ_lib = d.id)
31                 JOIN asset.copy cp ON (cp.id = av.copy_id)
32           GROUP BY 1,2,6;
33
34         IF NOT FOUND THEN
35             RETURN QUERY SELECT -1, ans.id, 0::BIGINT, 0::BIGINT, 0::BIGINT, trans;
36         END IF;
37
38     END LOOP;   
39                 
40     RETURN;     
41 END;            
42 $f$ LANGUAGE PLPGSQL;
43
44
45
46 COMMIT;