]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/src/sql/Pg/upgrade/XXXX.schema.authority.in-line-headings.sql
3b68093f05f8ee8a5023de4849bb560834e0c5f5
[working/Evergreen.git] / Open-ILS / src / sql / Pg / upgrade / XXXX.schema.authority.in-line-headings.sql
1
2 ALTER TABLE authority.record_entry DISABLE TRIGGER a_marcxml_is_well_formed;
3 ALTER TABLE authority.record_entry DISABLE TRIGGER aaa_auth_ingest_or_delete;
4 ALTER TABLE authority.record_entry DISABLE TRIGGER b_maintain_901;
5 ALTER TABLE authority.record_entry DISABLE TRIGGER c_maintain_control_numbers;
6 ALTER TABLE authority.record_entry DISABLE TRIGGER map_thesaurus_to_control_set;
7
8 BEGIN;
9
10 --SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version);
11
12 ALTER TABLE authority.record_entry ADD COLUMN heading TEXT, ADD COLUMN simple_heading TEXT;
13
14 DROP INDEX IF EXISTS authority.unique_by_heading_and_thesaurus;
15 DROP INDEX IF EXISTS authority.by_heading_and_thesaurus;
16 DROP INDEX IF EXISTS authority.by_heading;
17
18 -- Update without indexes for HOT update
19 UPDATE  authority.record_entry
20   SET   heading = authority.normalize_heading( marc ),
21         simple_heading = authority.simple_normalize_heading( marc );
22
23 CREATE INDEX by_heading_and_thesaurus ON authority.record_entry (heading) WHERE deleted IS FALSE or deleted = FALSE;
24 CREATE INDEX by_heading ON authority.record_entry (simple_heading) WHERE deleted IS FALSE or deleted = FALSE;
25
26 -- Add the trigger
27 CREATE OR REPLACE FUNCTION authority.normalize_heading_for_upsert () RETURNS TRIGGER AS $f$
28 BEGIN
29     NEW.heading := authority.normalize_heading( NEW.marc );
30     NEW.simple_heading := authority.simple_normalize_heading( NEW.marc );
31     RETURN NEW;
32 END;
33 $f$ LANGUAGE PLPGSQL;
34
35 CREATE TRIGGER update_headings_tgr BEFORE INSERT OR UPDATE ON authority.record_entry FOR EACH ROW EXECUTE PROCEDURE authority.normalize_heading_for_upsert();
36
37 ALTER FUNCTION authority.normalize_heading(TEXT, BOOL) STABLE STRICT;
38 ALTER FUNCTION authority.normalize_heading(TEXT) STABLE STRICT;
39 ALTER FUNCTION authority.simple_normalize_heading(TEXT) STABLE STRICT;
40 ALTER FUNCTION authority.simple_heading_set(TEXT) STABLE STRICT;
41
42 COMMIT;
43
44 \qecho .
45 \qecho This index might fail, and is outside the transaction for that reason.
46 \qecho If it fails, you probably did not have it in the first place.
47 \qecho .
48 CREATE UNIQUE INDEX unique_by_heading_and_thesaurus ON authority.record_entry (heading) WHERE deleted IS FALSE or deleted = FALSE;
49
50 ALTER TABLE authority.record_entry ENABLE TRIGGER a_marcxml_is_well_formed;
51 ALTER TABLE authority.record_entry ENABLE TRIGGER aaa_auth_ingest_or_delete;
52 ALTER TABLE authority.record_entry ENABLE TRIGGER b_maintain_901;
53 ALTER TABLE authority.record_entry ENABLE TRIGGER c_maintain_control_numbers;
54 ALTER TABLE authority.record_entry ENABLE TRIGGER map_thesaurus_to_control_set;
55
56