]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/sql/Pg/upgrade/0194.schema.vandelay.internal-id-crosscheck.sql
LP#1564079 Checkout history skips nonexistent items
[Evergreen.git] / Open-ILS / src / sql / Pg / upgrade / 0194.schema.vandelay.internal-id-crosscheck.sql
1 BEGIN;
2
3 INSERT INTO config.upgrade_log (version) VALUES ('0194'); -- miker
4
5 CREATE OR REPLACE FUNCTION vandelay.auto_overlay_bib_record ( import_id BIGINT, merge_profile_id INT ) RETURNS BOOL AS $$
6 DECLARE
7     eg_id           BIGINT;
8     match_count     INT;
9     match_attr      vandelay.bib_attr_definition%ROWTYPE;
10 BEGIN
11     SELECT COUNT(*) INTO match_count FROM vandelay.bib_match WHERE queued_record = import_id;
12
13     IF match_count <> 1 THEN
14         -- RAISE NOTICE 'not an exact match';
15         RETURN FALSE;
16     END IF;
17
18     SELECT  d.* INTO match_attr
19       FROM  vandelay.bib_attr_definition d
20             JOIN vandelay.queued_bib_record_attr a ON (a.field = d.id)
21             JOIN vandelay.bib_match m ON (m.matched_attr = a.id)
22       WHERE m.queued_record = import_id;
23
24     IF NOT (match_attr.xpath ~ '@tag="901"' AND match_attr.xpath ~ '@code="c"') THEN
25         -- RAISE NOTICE 'not a 901c match';
26         RETURN FALSE;
27     END IF;
28
29     SELECT  m.eg_record INTO eg_id
30       FROM  vandelay.bib_match m
31       WHERE m.queued_record = import_id
32       LIMIT 1;
33
34     IF eg_id IS NULL THEN
35         RETURN FALSE;
36     END IF;
37
38     RETURN vandelay.overlay_bib_record( import_id, eg_id, merge_profile_id );
39 END;
40 $$ LANGUAGE PLPGSQL;
41
42 COMMIT;