]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/src/sql/Pg/upgrade/0970.schema.limit_facets_pg91_compat.sql
LP#1638299: Stamping upgrade scripts for authority infrastructure work
[working/Evergreen.git] / Open-ILS / src / sql / Pg / upgrade / 0970.schema.limit_facets_pg91_compat.sql
1 BEGIN;
2
3 SELECT evergreen.upgrade_deps_block_check('0970', :eg_version); -- Dyrcona/gmcharlt
4
5 CREATE OR REPLACE FUNCTION search.facets_for_record_set(ignore_facet_classes TEXT[], hits BIGINT[]) RETURNS TABLE (id INT, value TEXT, count BIGINT) AS $$
6     SELECT id, value, count FROM (
7         SELECT mfae.field AS id,
8                mfae.value,
9                COUNT(DISTINCT mmrsm.source),
10                row_number() OVER (
11                 PARTITION BY mfae.field ORDER BY COUNT(distinct mmrsm.source) DESC
12                ) AS rownum
13         FROM metabib.facet_entry mfae
14         JOIN metabib.metarecord_source_map mmrsm ON (mfae.source = mmrsm.source)
15         JOIN config.metabib_field cmf ON (cmf.id = mfae.field)
16         WHERE mmrsm.source IN (SELECT * FROM unnest($2))
17         AND cmf.facet_field
18         AND cmf.field_class NOT IN (SELECT * FROM unnest($1))
19         GROUP by 1, 2
20     ) all_facets
21     WHERE rownum <= (SELECT COALESCE((SELECT value::INT FROM config.global_flag WHERE name = 'search.max_facets_per_field' AND enabled), 1000));
22 $$ LANGUAGE SQL;
23
24 CREATE OR REPLACE FUNCTION search.facets_for_metarecord_set(ignore_facet_classes TEXT[], hits BIGINT[]) RETURNS TABLE (id INT, value TEXT, count BIGINT) AS $$
25     SELECT id, value, count FROM (
26         SELECT mfae.field AS id,
27                mfae.value,
28                COUNT(DISTINCT mmrsm.metarecord),
29                row_number() OVER (
30                 PARTITION BY mfae.field ORDER BY COUNT(distinct mmrsm.metarecord) DESC
31                ) AS rownum
32         FROM metabib.facet_entry mfae
33         JOIN metabib.metarecord_source_map mmrsm ON (mfae.source = mmrsm.source)
34         JOIN config.metabib_field cmf ON (cmf.id = mfae.field)
35         WHERE mmrsm.metarecord IN (SELECT * FROM unnest($2))
36         AND cmf.facet_field
37         AND cmf.field_class NOT IN (SELECT * FROM unnest($1))
38         GROUP by 1, 2
39     ) all_facets
40     WHERE rownum <= (SELECT COALESCE((SELECT value::INT FROM config.global_flag WHERE name = 'search.max_facets_per_field' AND enabled), 1000));
41 $$ LANGUAGE SQL;
42
43 COMMIT;