4 CREATE TABLE reporter.materialized_simple_record AS SELECT * FROM reporter.super_simple_record WHERE 1=0;
6 INSERT INTO reporter.materialized_simple_record
7 (id,fingerprint,quality,tcn_source,tcn_value,title,author,publisher,pubdate,isbn,issn)
8 SELECT DISTINCT ON (id) * FROM reporter.super_simple_record;
10 ALTER TABLE reporter.materialized_simple_record ADD PRIMARY KEY (id);
12 CREATE OR REPLACE VIEW reporter.super_simple_record AS SELECT * FROM reporter.materialized_simple_record;
14 CREATE OR REPLACE VIEW reporter.old_super_simple_record AS
21 FIRST(author.value) AS author,
22 publisher.value AS publisher,
23 SUBSTRING(pubdate.value FROM $$\d+$$) AS pubdate,
24 ARRAY_ACCUM( SUBSTRING(isbn.value FROM $$^\S+$$) ) AS isbn,
25 ARRAY_ACCUM( SUBSTRING(issn.value FROM $$^\S+$$) ) AS issn
26 FROM biblio.record_entry r
27 LEFT JOIN metabib.full_rec title ON (r.id = title.record AND title.tag = '245' AND title.subfield = 'a')
28 LEFT JOIN metabib.full_rec author ON (r.id = author.record AND author.tag IN ('100','110','111') AND author.subfield = 'a')
29 LEFT JOIN metabib.full_rec publisher ON (r.id = publisher.record AND publisher.tag = '260' AND publisher.subfield = 'b')
30 LEFT JOIN metabib.full_rec pubdate ON (r.id = pubdate.record AND pubdate.tag = '260' AND pubdate.subfield = 'c')
31 LEFT JOIN metabib.full_rec isbn ON (r.id = isbn.record AND isbn.tag IN ('024', '020') AND isbn.subfield IN ('a','z'))
32 LEFT JOIN metabib.full_rec issn ON (r.id = issn.record AND issn.tag = '022' AND issn.subfield = 'a')
33 GROUP BY 1,2,3,4,5,6,8,9;
35 CREATE OR REPLACE FUNCTION reporter.simple_rec_sync () RETURNS TRIGGER AS $$
40 IF TG_OP IN ('DELETE') THEN
46 SELECT * INTO new_data FROM reporter.materialized_simple_record WHERE id = r_id FOR UPDATE;
47 DELETE FROM reporter.materialized_simple_record WHERE id = r_id;
49 IF TG_OP IN ('DELETE') THEN
52 INSERT INTO reporter.materialized_simple_record SELECT DISTINCT ON (id) * FROM reporter.old_super_simple_record WHERE id = NEW.record;
59 CREATE TRIGGER zzz_update_materialized_simple_record_tgr
60 AFTER INSERT OR UPDATE OR DELETE ON metabib.full_rec
61 FOR EACH ROW EXECUTE PROCEDURE reporter.simple_rec_sync();