]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/sql/Pg/upgrade/0411.schema.assume_inserts_only_flag.sql
LP#1917826: add release notes entry
[Evergreen.git] / Open-ILS / src / sql / Pg / upgrade / 0411.schema.assume_inserts_only_flag.sql
1 BEGIN;
2
3 INSERT INTO config.upgrade_log (version) VALUES ('0411'); -- gmc
4
5 INSERT INTO config.internal_flag (name) VALUES ('ingest.assume_inserts_only');
6
7 CREATE OR REPLACE FUNCTION metabib.reingest_metabib_rec_descriptor( bib_id BIGINT ) RETURNS VOID AS $func$
8 BEGIN
9     PERFORM * FROM config.internal_flag WHERE name = 'ingest.assume_inserts_only' AND enabled;
10     IF NOT FOUND THEN
11         DELETE FROM metabib.rec_descriptor WHERE record = bib_id;
12     END IF;
13     INSERT INTO metabib.rec_descriptor (record, item_type, item_form, bib_level, control_type, enc_level, audience, lit_form, type_mat, cat_form, pub_status, item_lang, vr_format, date1, date2)
14         SELECT  bib_id,
15                 biblio.marc21_extract_fixed_field( bib_id, 'Type' ),
16                 biblio.marc21_extract_fixed_field( bib_id, 'Form' ),
17                 biblio.marc21_extract_fixed_field( bib_id, 'BLvl' ),
18                 biblio.marc21_extract_fixed_field( bib_id, 'Ctrl' ),
19                 biblio.marc21_extract_fixed_field( bib_id, 'ELvl' ),
20                 biblio.marc21_extract_fixed_field( bib_id, 'Audn' ),
21                 biblio.marc21_extract_fixed_field( bib_id, 'LitF' ),
22                 biblio.marc21_extract_fixed_field( bib_id, 'TMat' ),
23                 biblio.marc21_extract_fixed_field( bib_id, 'Desc' ),
24                 biblio.marc21_extract_fixed_field( bib_id, 'DtSt' ),
25                 biblio.marc21_extract_fixed_field( bib_id, 'Lang' ),
26                 (   SELECT  v.value
27                       FROM  biblio.marc21_physical_characteristics( bib_id) p
28                             JOIN config.marc21_physical_characteristic_subfield_map s ON (s.id = p.subfield)
29                             JOIN config.marc21_physical_characteristic_value_map v ON (v.id = p.value)
30                       WHERE p.ptype = 'v' AND s.subfield = 'e'    ),
31                 biblio.marc21_extract_fixed_field( bib_id, 'Date1'),
32                 biblio.marc21_extract_fixed_field( bib_id, 'Date2');
33
34     RETURN;
35 END;
36 $func$ LANGUAGE PLPGSQL;
37
38 CREATE OR REPLACE FUNCTION metabib.reingest_metabib_full_rec( bib_id BIGINT ) RETURNS VOID AS $func$
39 BEGIN
40     PERFORM * FROM config.internal_flag WHERE name = 'ingest.assume_inserts_only' AND enabled;
41     IF NOT FOUND THEN
42         DELETE FROM metabib.real_full_rec WHERE record = bib_id;
43     END IF;
44     INSERT INTO metabib.real_full_rec (record, tag, ind1, ind2, subfield, value)
45         SELECT record, tag, ind1, ind2, subfield, value FROM biblio.flatten_marc( bib_id );
46
47     RETURN;
48 END;
49 $func$ LANGUAGE PLPGSQL;
50
51 CREATE OR REPLACE FUNCTION metabib.reingest_metabib_field_entries( bib_id BIGINT ) RETURNS VOID AS $func$
52 DECLARE
53     fclass          RECORD;
54     ind_data        metabib.field_entry_template%ROWTYPE;
55 BEGIN
56     PERFORM * FROM config.internal_flag WHERE name = 'ingest.assume_inserts_only' AND enabled;
57     IF NOT FOUND THEN
58         FOR fclass IN SELECT * FROM config.metabib_class LOOP
59             -- RAISE NOTICE 'Emptying out %', fclass.name;
60             EXECUTE $$DELETE FROM metabib.$$ || fclass.name || $$_field_entry WHERE source = $$ || bib_id;
61         END LOOP;
62         DELETE FROM metabib.facet_entry WHERE source = bib_id;
63     END IF;
64
65     FOR ind_data IN SELECT * FROM biblio.extract_metabib_field_entry( bib_id ) LOOP
66         IF ind_data.field < 0 THEN
67             ind_data.field = -1 * ind_data.field;
68             INSERT INTO metabib.facet_entry (field, source, value)
69                 VALUES (ind_data.field, ind_data.source, ind_data.value);
70         ELSE
71             EXECUTE $$
72                 INSERT INTO metabib.$$ || ind_data.field_class || $$_field_entry (field, source, value)
73                     VALUES ($$ ||
74                         quote_literal(ind_data.field) || $$, $$ ||
75                         quote_literal(ind_data.source) || $$, $$ ||
76                         quote_literal(ind_data.value) ||
77                     $$);$$;
78         END IF;
79
80     END LOOP;
81
82     RETURN;
83 END;
84 $func$ LANGUAGE PLPGSQL;
85
86 COMMIT;