]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/sql/Pg/version-upgrade/2.0.4-2.0.5-upgrade-db.sql
LP#1772028 Add some FK violation functions just in case they are missing
[Evergreen.git] / Open-ILS / src / sql / Pg / version-upgrade / 2.0.4-2.0.5-upgrade-db.sql
1 BEGIN;
2
3 INSERT INTO config.upgrade_log (version) VALUES ('2.0.5');
4 INSERT INTO config.upgrade_log (version) VALUES ('0502'); -- dbwells
5
6 -- Dewey fields
7 UPDATE asset.call_number_class
8     SET field = '080ab,082ab,092abef'
9     WHERE id = 2
10 ;
11
12 -- LC fields
13 UPDATE asset.call_number_class
14     SET field = '050ab,055ab,090abef'
15     WHERE id = 3
16 ;
17
18 INSERT INTO config.upgrade_log (version) VALUES ('0505'); --miker
19
20 CREATE OR REPLACE FUNCTION force_unicode_normal_form(string TEXT, form TEXT) RETURNS TEXT AS $func$
21 use Unicode::Normalize 'normalize';
22 return normalize($_[1],$_[0]); # reverse the params
23 $func$ LANGUAGE PLPERLU;
24
25 UPDATE metabib.facet_entry SET value = force_unicode_normal_form(value,'NFC');
26
27 CREATE OR REPLACE FUNCTION facet_force_nfc() RETURNS TRIGGER AS $$
28 BEGIN
29     NEW.value := force_unicode_normal_form(NEW.value,'NFC');
30     RETURN NEW;
31 END;
32 $$ LANGUAGE PLPGSQL;
33
34 CREATE TRIGGER facet_force_nfc_tgr
35         BEFORE UPDATE OR INSERT ON metabib.facet_entry
36         FOR EACH ROW EXECUTE PROCEDURE facet_force_nfc();
37
38
39 INSERT INTO config.upgrade_log (version) VALUES ('0506'); -- miker
40
41 ALTER FUNCTION actor.org_unit_descendants( INT, INT ) ROWS 1;
42 ALTER FUNCTION actor.org_unit_descendants( INT ) ROWS 1;
43 ALTER FUNCTION actor.org_unit_ancestors( INT )  ROWS 1;
44 ALTER FUNCTION actor.org_unit_full_path ( INT )  ROWS 2;
45 ALTER FUNCTION actor.org_unit_full_path ( INT, INT ) ROWS 2;
46 ALTER FUNCTION actor.org_unit_combined_ancestors ( INT, INT ) ROWS 1;
47 ALTER FUNCTION actor.org_unit_common_ancestors ( INT, INT ) ROWS 1;
48 ALTER FUNCTION actor.org_unit_ancestor_setting( TEXT, INT ) ROWS 1;
49 ALTER FUNCTION permission.grp_ancestors ( INT ) ROWS 1;
50 ALTER FUNCTION permission.usr_perms ( INT ) ROWS 10;
51 ALTER FUNCTION permission.usr_has_perm_at_nd ( INT, TEXT) ROWS 1;
52 ALTER FUNCTION permission.usr_has_perm_at_all_nd ( INT, TEXT ) ROWS 1;
53 ALTER FUNCTION permission.usr_has_perm_at ( INT, TEXT ) ROWS 1;
54 ALTER FUNCTION permission.usr_has_perm_at_all ( INT, TEXT ) ROWS 1;
55
56 CREATE OR REPLACE FUNCTION permission.grp_ancestors_distance( INT ) RETURNS TABLE (id INT, distance INT) AS $$
57     WITH RECURSIVE grp_ancestors_distance(id, distance) AS (
58             SELECT $1, 0
59         UNION
60             SELECT pgt.parent, gad.distance+1
61             FROM permission.grp_tree pgt JOIN grp_ancestors_distance gad ON (pgt.id = gad.id)
62             WHERE pgt.parent IS NOT NULL
63     )
64     SELECT * FROM grp_ancestors_distance;
65 $$ LANGUAGE SQL STABLE ROWS 1;
66
67 CREATE OR REPLACE FUNCTION permission.grp_descendants_distance( INT ) RETURNS TABLE (id INT, distance INT) AS $$
68     WITH RECURSIVE grp_descendants_distance(id, distance) AS (
69             SELECT $1, 0
70         UNION
71             SELECT pgt.id, gdd.distance+1
72             FROM permission.grp_tree pgt JOIN grp_descendants_distance gdd ON (pgt.parent = gdd.id)
73     )
74     SELECT * FROM grp_descendants_distance;
75 $$ LANGUAGE SQL STABLE ROWS 1;
76
77 CREATE OR REPLACE FUNCTION actor.org_unit_descendants_distance( INT ) RETURNS TABLE (id INT, distance INT) AS $$
78     WITH RECURSIVE org_unit_descendants_distance(id, distance) AS (
79             SELECT $1, 0
80         UNION
81             SELECT ou.id, oudd.distance+1
82             FROM actor.org_unit ou JOIN org_unit_descendants_distance oudd ON (ou.parent_ou = oudd.id)
83     )
84     SELECT * FROM org_unit_descendants_distance;
85 $$ LANGUAGE SQL STABLE ROWS 1;
86
87 CREATE OR REPLACE FUNCTION actor.org_unit_ancestors_distance( INT ) RETURNS TABLE (id INT, distance INT) AS $$
88     WITH RECURSIVE org_unit_ancestors_distance(id, distance) AS (
89             SELECT $1, 0
90         UNION
91             SELECT ou.parent_ou, ouad.distance+1
92             FROM actor.org_unit ou JOIN org_unit_ancestors_distance ouad ON (ou.id = ouad.id)
93             WHERE ou.parent_ou IS NOT NULL
94     )
95     SELECT * FROM org_unit_ancestors_distance;
96 $$ LANGUAGE SQL STABLE ROWS 1;
97
98 COMMIT;
99