Forward port 2.5.4 upgrade script
[working/Evergreen.git] / Open-ILS / src / sql / Pg / version-upgrade / 2.5.3-2.5.4-upgrade-db.sql
1 --Upgrade Script for 2.5.3 to 2.5.4
2 \set eg_version '''2.5.4'''
3 BEGIN;
4 INSERT INTO config.upgrade_log (version, applied_to) VALUES ('2.5.4', :eg_version);
5
6 SELECT evergreen.upgrade_deps_block_check('0869', :eg_version);
7
8 CREATE OR REPLACE FUNCTION action.hold_copy_calculated_proximity_update () RETURNS TRIGGER AS $f$
9 BEGIN
10     NEW.proximity := action.hold_copy_calculated_proximity(NEW.hold,NEW.target_copy);
11     RETURN NEW;
12 END;
13 $f$ LANGUAGE PLPGSQL;
14
15 CREATE TRIGGER hold_copy_proximity_update_tgr BEFORE INSERT OR UPDATE ON action.hold_copy_map FOR EACH ROW EXECUTE PROCEDURE action.hold_copy_calculated_proximity_update ();
16
17 -- Now, cause the update we need in a HOT-friendly manner (http://pgsql.tapoueh.org/site/html/misc/hot.html)
18 UPDATE action.hold_copy_map SET proximity = proximity WHERE proximity IS NULL;
19
20
21
22 SELECT evergreen.upgrade_deps_block_check('0877', :eg_version);
23
24 -- Don't use Series search field as the browse field
25 UPDATE config.metabib_field SET
26         browse_field = FALSE,
27         browse_xpath = NULL,
28         browse_sort_xpath = NULL,
29         xpath = $$//mods32:mods/mods32:relatedItem[@type="series"]/mods32:titleInfo[not(@type="nfi")]$$
30 WHERE id = 1;
31
32 -- Create a new series browse config
33 INSERT INTO config.metabib_field ( id, field_class, name, label, format, xpath, search_field, authority_xpath, browse_field, browse_sort_xpath ) VALUES
34     (32, 'series', 'browse', oils_i18n_gettext(32, 'Series Title (Browse)', 'cmf', 'label'), 'mods32', $$//mods32:mods/mods32:relatedItem[@type="series"]/mods32:titleInfo[@type="nfi"]$$, FALSE, '//@xlink:href', TRUE, $$*[local-name() != "nonSort"]$$ );
35
36
37 \qecho ---------------------------------------------------------------
38 \qecho We will now do a "quick fix" indexing of series titles for search.
39 \qecho .
40 \qecho Ultimately, a full field-entry reingest of your affected series bib
41 \qecho records should be done.  It might take a while.
42 \qecho Something like this should suffice:
43 \qecho ---------------------------------------------------------------
44 \qecho 'SELECT COUNT(metabib.reingest_metabib_field_entries(id))'
45 \qecho '    FROM ('
46 \qecho '        SELECT DISTINCT(bre.id) AS id'
47 \qecho '        FROM biblio.record_entry bre'
48 \qecho '        JOIN metabib.full_rec mfr'
49 \qecho '            ON mfr.record = bre.id'
50 \qecho '            AND mfr.tag IN (\'490\', \'800\', \'810\', \'811\', \'830\')'
51 \qecho '        WHERE'
52 \qecho '            bre.deleted IS FALSE'
53 \qecho '            AND ('
54 \qecho '                mfr.tag = \'490\' AND mfr.subfield = \'a\''
55 \qecho '                OR mfr.tag IN (\'800\',\'810\',\'811\') AND mfr.subfield = \'t\''
56 \qecho '                OR mfr.tag = \'830\' AND mfr.subfield IN (\'a\',\'t\')'
57 \qecho '            )'
58 \qecho '    ) x'
59 \qecho ';'
60 \qecho ---------------------------------------------------------------
61
62 -- "Quick Fix" indexing of series for search
63 INSERT INTO metabib.series_field_entry (field,source,value)
64     SELECT 1,record,value FROM metabib.full_rec WHERE tag = '490' AND subfield = 'a';
65
66 INSERT INTO metabib.series_field_entry (field,source,value)
67     SELECT 1,record,value FROM metabib.full_rec WHERE tag IN ('800','810','811') AND subfield = 't';
68
69 INSERT INTO metabib.series_field_entry (field,source,value)
70     SELECT 1,record,value FROM metabib.full_rec WHERE tag = '830' AND subfield IN ('a','t');
71
72 DELETE FROM metabib.combined_series_field_entry;
73 INSERT INTO metabib.combined_series_field_entry(record, metabib_field, index_vector)
74         SELECT source, field, strip(COALESCE(string_agg(index_vector::TEXT,' '),'')::tsvector)
75         FROM metabib.series_field_entry GROUP BY source, field;
76 INSERT INTO metabib.combined_series_field_entry(record, index_vector)
77         SELECT source, strip(COALESCE(string_agg(index_vector::TEXT,' '),'')::tsvector)
78         FROM metabib.series_field_entry GROUP BY source;
79 COMMIT;