]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/sql/Pg/upgrade/0330.schema.facet_entry_table.sql
LP1779158 Vandelay workstation setting repairs/additions
[Evergreen.git] / Open-ILS / src / sql / Pg / upgrade / 0330.schema.facet_entry_table.sql
1 BEGIN;
2
3 INSERT INTO config.upgrade_log (version) VALUES ('0330');
4
5 CREATE TABLE metabib.facet_entry (
6         id              BIGSERIAL       PRIMARY KEY,
7         source          BIGINT          NOT NULL,
8         field           INT             NOT NULL,
9         value           TEXT            NOT NULL
10 );
11
12 INSERT INTO metabib.facet_entry (source, field, value)
13     SELECT source, field, value FROM (
14         SELECT * FROM metabib.author_field_entry
15             UNION ALL
16         SELECT * FROM metabib.keyword_field_entry
17             UNION ALL
18         SELECT * FROM metabib.identifier_field_entry
19             UNION ALL
20         SELECT * FROM metabib.title_field_entry
21             UNION ALL
22         SELECT * FROM metabib.subject_field_entry
23             UNION ALL
24         SELECT * FROM metabib.series_field_entry
25         )x
26     WHERE x.index_vector = '';
27         
28 DELETE FROM metabib.author_field_entry WHERE index_vector = '';
29 DELETE FROM metabib.keyword_field_entry WHERE index_vector = '';
30 DELETE FROM metabib.identifier_field_entry WHERE index_vector = '';
31 DELETE FROM metabib.title_field_entry WHERE index_vector = '';
32 DELETE FROM metabib.subject_field_entry WHERE index_vector = '';
33 DELETE FROM metabib.series_field_entry WHERE index_vector = '';
34
35 CREATE INDEX metabib_facet_entry_field_idx ON metabib.facet_entry (field);
36 CREATE INDEX metabib_facet_entry_value_idx ON metabib.facet_entry (SUBSTRING(value,1,1024));
37 CREATE INDEX metabib_facet_entry_source_idx ON metabib.facet_entry (source);
38
39 CREATE OR REPLACE FUNCTION metabib.reingest_metabib_field_entries( bib_id BIGINT ) RETURNS VOID AS $func$
40 DECLARE
41     fclass          RECORD;
42     ind_data        metabib.field_entry_template%ROWTYPE;
43 BEGIN
44     FOR fclass IN SELECT * FROM config.metabib_class LOOP
45         -- RAISE NOTICE 'Emptying out %', fclass.name;
46         EXECUTE $$DELETE FROM metabib.$$ || fclass.name || $$_field_entry WHERE source = $$ || bib_id;
47     END LOOP;
48
49     DELETE FROM metabib.facet_entry WHERE source = bib_id;
50
51     FOR ind_data IN SELECT * FROM biblio.extract_metabib_field_entry( bib_id ) LOOP
52         IF ind_data.field < 0 THEN
53             ind_data.field = -1 * ind_data.field;
54             INSERT INTO metabib.facet_entry (field, source, value)
55                 VALUES (ind_data.field, ind_data.source, ind_data.value);
56         ELSE
57             EXECUTE $$
58                 INSERT INTO metabib.$$ || ind_data.field_class || $$_field_entry (field, source, value)
59                     VALUES ($$ ||
60                         quote_literal(ind_data.field) || $$, $$ ||
61                         quote_literal(ind_data.source) || $$, $$ ||
62                         quote_literal(ind_data.value) ||
63                     $$);$$;
64         END IF;
65
66     END LOOP;
67
68     RETURN;
69 END;
70 $func$ LANGUAGE PLPGSQL;
71
72 COMMIT;
73