]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/sql/Pg/version-upgrade/2.3.11-2.3.12-upgrade-db.sql
LP1779158 Angular7 and ng-lint updates
[Evergreen.git] / Open-ILS / src / sql / Pg / version-upgrade / 2.3.11-2.3.12-upgrade-db.sql
1 --Upgrade Script for 2.3.11 to 2.3.12
2 \set eg_version '''2.3.12'''
3 BEGIN;
4 INSERT INTO config.upgrade_log (version, applied_to) VALUES ('2.3.12', :eg_version);
5
6 -- check whether patch can be applied
7 SELECT evergreen.upgrade_deps_block_check('0838', :eg_version);
8
9 DELETE FROM config.metabib_field_index_norm_map
10     WHERE field = 25 AND norm IN (
11         SELECT id
12         FROM config.index_normalizer
13         WHERE func IN ('search_normalize','split_date_range')
14     );
15
16 \qecho If your site's bibcn searches are affected by this issue, you may wish
17 \qecho to reingest your bib records now.  It's probably not worth it for many
18 \qecho sites.
19
20
21 SELECT evergreen.upgrade_deps_block_check('0840', :eg_version);
22
23 INSERT INTO config.usr_setting_type (name,grp,opac_visible,label,description,datatype) VALUES (
24     'ui.grid_columns.conify.config.circ_matrix_matchpoint',
25     'gui',
26     FALSE,
27     oils_i18n_gettext(
28         'ui.grid_columns.conify.config.circ_matrix_matchpoint',
29         'Circulation Policy Configuration',
30         'cust',
31         'label'
32     ),
33     oils_i18n_gettext(
34         'ui.grid_columns.conify.config.circ_matrix_matchpoint',
35         'Circulation Policy Configuration Column Settings',
36         'cust',
37         'description'
38     ),
39     'string'
40 );
41
42
43 -- check whether patch can be applied
44 SELECT evergreen.upgrade_deps_block_check('0841', :eg_version);
45
46 ALTER TABLE config.metabib_search_alias DROP CONSTRAINT metabib_search_alias_field_fkey;
47 ALTER TABLE metabib.browse_entry_def_map DROP CONSTRAINT browse_entry_def_map_def_fkey;
48
49 ALTER TABLE config.metabib_search_alias ADD CONSTRAINT metabib_search_alias_field_fkey FOREIGN KEY (field) REFERENCES config.metabib_field(id) ON UPDATE CASCADE DEFERRABLE INITIALLY DEFERRED;
50 ALTER TABLE metabib.browse_entry_def_map ADD CONSTRAINT browse_entry_def_map_def_fkey FOREIGN KEY (def) REFERENCES config.metabib_field(id) ON UPDATE CASCADE DEFERRABLE INITIALLY DEFERRED;
51
52
53 DROP FUNCTION IF EXISTS config.modify_metabib_field(source INT, target INT);
54 CREATE FUNCTION config.modify_metabib_field(v_source INT, target INT) RETURNS INT AS $func$
55 DECLARE
56     f_class TEXT;
57     check_id INT;
58     target_id INT;
59 BEGIN
60     SELECT field_class INTO f_class FROM config.metabib_field WHERE id = v_source;
61     IF NOT FOUND THEN
62         RETURN 0;
63     END IF;
64     IF target IS NULL THEN
65         target_id = v_source + 1000;
66     ELSE
67         target_id = target;
68     END IF;
69     SELECT id FROM config.metabib_field INTO check_id WHERE id = target_id;
70     IF FOUND THEN
71         RAISE NOTICE 'Cannot bump config.metabib_field.id from % to %; the target ID already exists.', v_source, target_id;
72         RETURN 0;
73     END IF;
74     UPDATE config.metabib_field SET id = target_id WHERE id = v_source;
75     EXECUTE ' UPDATE metabib.' || f_class || '_field_entry SET field = ' || target_id || ' WHERE field = ' || v_source;
76     UPDATE config.metabib_field_index_norm_map SET field = target_id WHERE field = v_source;
77     UPDATE search.relevance_adjustment SET field = target_id WHERE field = v_source;
78     UPDATE config.metabib_search_alias SET field = target_id WHERE field = v_source;
79     UPDATE metabib.browse_entry_def_map SET def = target_id WHERE def = v_source;
80     RETURN 1;
81 END;
82 $func$ LANGUAGE PLPGSQL;
83
84 SELECT config.modify_metabib_field(id, NULL)
85     FROM config.metabib_field
86     WHERE id > 30;
87
88 SELECT SETVAL('config.metabib_field_id_seq', GREATEST(1000, (SELECT MAX(id) FROM config.metabib_field)));
89
90
91 SELECT evergreen.upgrade_deps_block_check('0846', :eg_version);
92
93 CREATE OR REPLACE FUNCTION vandelay.add_field ( target_xml TEXT, source_xml TEXT, field TEXT, force_add INT ) RETURNS TEXT AS $_$
94
95     use MARC::Record;
96     use MARC::File::XML (BinaryEncoding => 'UTF-8');
97     use MARC::Charset;
98     use strict;
99
100     MARC::Charset->assume_unicode(1);
101
102     my $target_xml = shift;
103     my $source_xml = shift;
104     my $field_spec = shift;
105     my $force_add = shift || 0;
106
107     my $target_r = MARC::Record->new_from_xml( $target_xml );
108     my $source_r = MARC::Record->new_from_xml( $source_xml );
109
110     return $target_xml unless ($target_r && $source_r);
111
112     my @field_list = split(',', $field_spec);
113
114     my %fields;
115     for my $f (@field_list) {
116         $f =~ s/^\s*//; $f =~ s/\s*$//;
117         if ($f =~ /^(.{3})(\w*)(?:\[([^]]*)\])?$/) {
118             my $field = $1;
119             $field =~ s/\s+//;
120             my $sf = $2;
121             $sf =~ s/\s+//;
122             my $match = $3;
123             $match =~ s/^\s*//; $match =~ s/\s*$//;
124             $fields{$field} = { sf => [ split('', $sf) ] };
125             if ($match) {
126                 my ($msf,$mre) = split('~', $match);
127                 if (length($msf) > 0 and length($mre) > 0) {
128                     $msf =~ s/^\s*//; $msf =~ s/\s*$//;
129                     $mre =~ s/^\s*//; $mre =~ s/\s*$//;
130                     $fields{$field}{match} = { sf => $msf, re => qr/$mre/ };
131                 }
132             }
133         }
134     }
135
136     for my $f ( keys %fields) {
137         if ( @{$fields{$f}{sf}} ) {
138             for my $from_field ($source_r->field( $f )) {
139                 my @tos = $target_r->field( $f );
140                 if (!@tos) {
141                     next if (exists($fields{$f}{match}) and !$force_add);
142                     my @new_fields = map { $_->clone } $source_r->field( $f );
143                     $target_r->insert_fields_ordered( @new_fields );
144                 } else {
145                     for my $to_field (@tos) {
146                         if (exists($fields{$f}{match})) {
147                             next unless (grep { $_ =~ $fields{$f}{match}{re} } $to_field->subfield($fields{$f}{match}{sf}));
148                         }
149                         for my $old_sf ($from_field->subfields) {
150                             $to_field->add_subfields( @$old_sf ) if grep(/$$old_sf[0]/,@{$fields{$f}{sf}});
151                         }
152                     }
153                 }
154             }
155         } else {
156             my @new_fields = map { $_->clone } $source_r->field( $f );
157             $target_r->insert_fields_ordered( @new_fields );
158         }
159     }
160
161     $target_xml = $target_r->as_xml_record;
162     $target_xml =~ s/^<\?.+?\?>$//mo;
163     $target_xml =~ s/\n//sgo;
164     $target_xml =~ s/>\s+</></sgo;
165
166     return $target_xml;
167
168 $_$ LANGUAGE PLPERLU;
169
170
171 COMMIT;