]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/src/sql/Pg/upgrade/1014.metarecord_constituents_search_result_page_should_use_standard_search_code.sql
LP1615805 No inputs after submit in patron search (AngularJS)
[working/Evergreen.git] / Open-ILS / src / sql / Pg / upgrade / 1014.metarecord_constituents_search_result_page_should_use_standard_search_code.sql
1 BEGIN;
2
3 SELECT evergreen.upgrade_deps_block_check('1014', :eg_version);
4
5 CREATE OR REPLACE FUNCTION unapi.mmr_mra (
6     obj_id BIGINT,
7     format TEXT,
8     ename TEXT,
9     includes TEXT[],
10     org TEXT,
11     depth INT DEFAULT NULL,
12     slimit HSTORE DEFAULT NULL,
13     soffset HSTORE DEFAULT NULL,
14     include_xmlns BOOL DEFAULT TRUE,
15     pref_lib INT DEFAULT NULL
16 ) RETURNS XML AS $F$
17     SELECT  XMLELEMENT(
18         name attributes,
19         XMLATTRIBUTES(
20             CASE WHEN $9 THEN 'http://open-ils.org/spec/indexing/v1' ELSE NULL END AS xmlns,
21             'tag:open-ils.org:U2@mmr/' || $1 AS metarecord
22         ),
23         (SELECT XMLAGG(foo.y)
24           FROM (
25             WITH sourcelist AS (
26                 WITH aou AS (SELECT COALESCE(id, (evergreen.org_top()).id) AS id
27                     FROM actor.org_unit WHERE shortname = $5 LIMIT 1)
28                 SELECT source
29                 FROM metabib.metarecord_source_map, aou
30                 WHERE metarecord = $1 AND (
31                     EXISTS (
32                         SELECT 1 FROM asset.opac_visible_copies
33                         WHERE record = source AND circ_lib IN (
34                             SELECT id FROM actor.org_unit_descendants(aou.id, $6))
35                         LIMIT 1
36                     )
37                     OR EXISTS (SELECT 1 FROM located_uris(source, aou.id, $10) LIMIT 1)
38                 )
39             )
40             SELECT  cmra.aid,
41                     XMLELEMENT(
42                         name field,
43                         XMLATTRIBUTES(
44                             cmra.attr AS name,
45                             cmra.value AS "coded-value",
46                             cmra.aid AS "cvmid",
47                             rad.composite,
48                             rad.multi,
49                             rad.filter,
50                             rad.sorter,
51                             cmra.source_list
52                         ),
53                         cmra.value
54                     )
55               FROM  (
56                 SELECT DISTINCT aid, attr, value, STRING_AGG(x.id::TEXT, ',') AS source_list
57                   FROM (
58                     SELECT  v.source AS id,
59                             c.id AS aid,
60                             c.ctype AS attr,
61                             c.code AS value
62                       FROM  metabib.record_attr_vector_list v
63                             JOIN config.coded_value_map c ON ( c.id = ANY( v.vlist ) )
64                     ) AS x
65                     JOIN sourcelist ON (x.id = sourcelist.source)
66                     GROUP BY 1, 2, 3
67                 ) AS cmra
68                 JOIN config.record_attr_definition rad ON (cmra.attr = rad.name)
69                 UNION ALL
70             SELECT  umra.aid,
71                     XMLELEMENT(
72                         name field,
73                         XMLATTRIBUTES(
74                             umra.attr AS name,
75                             rad.composite,
76                             rad.multi,
77                             rad.filter,
78                             rad.sorter
79                         ),
80                         umra.value
81                     )
82               FROM  (
83                 SELECT DISTINCT aid, attr, value
84                   FROM (
85                     SELECT  v.source AS id,
86                             m.id AS aid,
87                             m.attr AS attr,
88                             m.value AS value
89                       FROM  metabib.record_attr_vector_list v
90                             JOIN metabib.uncontrolled_record_attr_value m ON ( m.id = ANY( v.vlist ) )
91                     ) AS x
92                     JOIN sourcelist ON (x.id = sourcelist.source)
93                 ) AS umra
94                 JOIN config.record_attr_definition rad ON (umra.attr = rad.name)
95                 ORDER BY 1
96
97             )foo(id,y)
98         )
99     )
100 $F$ LANGUAGE SQL STABLE;
101   
102 COMMIT;
103