]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/sql/Pg/version-upgrade/2.3.8-2.3.9-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.3.8-2.3.9-upgrade-db.sql
1 --Upgrade Script for 2.3.8 to 2.3.9
2 \set eg_version '''2.3.9'''
3 BEGIN;
4 INSERT INTO config.upgrade_log (version, applied_to) VALUES ('2.3.9', :eg_version);
5
6 SELECT evergreen.upgrade_deps_block_check('0803', :eg_version);
7
8 UPDATE config.org_unit_setting_type 
9 SET description = oils_i18n_gettext('circ.holds.default_shelf_expire_interval',
10         'The amount of time an item will be held on the shelf before the hold expires. For example: "2 weeks" or "5 days"',
11         'coust', 'description')
12 WHERE name = 'circ.holds.default_shelf_expire_interval';
13
14
15 SELECT evergreen.upgrade_deps_block_check('0804', :eg_version);
16
17 UPDATE config.coded_value_map
18 SET value = oils_i18n_gettext('169', 'Gwich''in', 'ccvm', 'value')
19 WHERE ctype = 'item_lang' AND code = 'gwi';
20
21 -- Evergreen DB patch XXXX.schema.usrname_index.sql
22 --
23 -- Create search index on actor.usr.usrname
24 --
25
26 SELECT evergreen.upgrade_deps_block_check('0808', :eg_version);
27
28 CREATE INDEX actor_usr_usrname_idx ON actor.usr (evergreen.lowercase(usrname));
29
30
31 -- check whether patch can be applied
32 SELECT evergreen.upgrade_deps_block_check('0810', :eg_version);
33
34 UPDATE authority.control_set_authority_field
35     SET name = REGEXP_REPLACE(name, '^See Also', 'See From')
36     WHERE tag LIKE '4__' AND control_set = 1;
37
38
39 -- check whether patch can be applied
40 SELECT evergreen.upgrade_deps_block_check('0811', :eg_version);
41
42 DROP FUNCTION action.copy_related_hold_stats(integer);
43
44 CREATE OR REPLACE FUNCTION action.copy_related_hold_stats(copy_id bigint)
45   RETURNS action.hold_stats AS
46 $BODY$
47 DECLARE
48     output          action.hold_stats%ROWTYPE;
49     hold_count      INT := 0;
50     copy_count      INT := 0;
51     available_count INT := 0;
52     hold_map_data   RECORD;
53 BEGIN
54
55     output.hold_count := 0;
56     output.copy_count := 0;
57     output.available_count := 0;
58
59     SELECT  COUNT( DISTINCT m.hold ) INTO hold_count
60       FROM  action.hold_copy_map m
61             JOIN action.hold_request h ON (m.hold = h.id)
62       WHERE m.target_copy = copy_id
63             AND NOT h.frozen;
64
65     output.hold_count := hold_count;
66
67     IF output.hold_count > 0 THEN
68         FOR hold_map_data IN
69             SELECT  DISTINCT m.target_copy,
70                     acp.status
71               FROM  action.hold_copy_map m
72                     JOIN asset.copy acp ON (m.target_copy = acp.id)
73                     JOIN action.hold_request h ON (m.hold = h.id)
74               WHERE m.hold IN ( SELECT DISTINCT hold FROM action.hold_copy_map WHERE target_copy = copy_id ) AND NOT h.frozen
75         LOOP
76             output.copy_count := output.copy_count + 1;
77             IF hold_map_data.status IN (0,7,12) THEN
78                 output.available_count := output.available_count + 1;
79             END IF;
80         END LOOP;
81         output.total_copy_ratio = output.copy_count::FLOAT / output.hold_count::FLOAT;
82         output.available_copy_ratio = output.available_count::FLOAT / output.hold_count::FLOAT;
83
84     END IF;
85
86     RETURN output;
87
88 END;
89 $BODY$
90   LANGUAGE plpgsql VOLATILE
91   COST 100;
92
93
94 COMMIT;