From 0dbc0088e8d593b93b8f303b33669e24d212a092 Mon Sep 17 00:00:00 2001 From: miker Date: Sat, 26 Apr 2008 16:49:25 +0000 Subject: [PATCH] base materialized simple record on old super_simple_record git-svn-id: svn://svn.open-ils.org/ILS/trunk@9458 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- Open-ILS/examples/fm_IDL.xml | 24 +++++++++++++++- Open-ILS/src/sql/Pg/reporter-schema.sql | 7 +++-- Open-ILS/src/sql/Pg/upgrade_simple_record.sql | 28 +++++++++++++++++-- 3 files changed, 53 insertions(+), 6 deletions(-) diff --git a/Open-ILS/examples/fm_IDL.xml b/Open-ILS/examples/fm_IDL.xml index 642395f8d8..aa31d33b12 100644 --- a/Open-ILS/examples/fm_IDL.xml +++ b/Open-ILS/examples/fm_IDL.xml @@ -1080,7 +1080,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - + @@ -3231,6 +3231,28 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + + + + + + + + + + + + + + + + + + + + + + diff --git a/Open-ILS/src/sql/Pg/reporter-schema.sql b/Open-ILS/src/sql/Pg/reporter-schema.sql index 74662ba25a..d7f63326a2 100644 --- a/Open-ILS/src/sql/Pg/reporter-schema.sql +++ b/Open-ILS/src/sql/Pg/reporter-schema.sql @@ -132,7 +132,7 @@ SELECT r.id, WHERE r.deleted IS FALSE GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14; -CREATE OR REPLACE VIEW reporter.super_simple_record AS +CREATE OR REPLACE VIEW reporter.old_super_simple_record AS SELECT r.id, r.fingerprint, r.quality, @@ -154,8 +154,9 @@ SELECT r.id, WHERE r.deleted IS FALSE GROUP BY 1,2,3,4,5,6,8,9; -CREATE TABLE reporter.materialized_simple_record AS SELECT * FROM reporter.simple_record WHERE 1=0; +CREATE TABLE reporter.materialized_simple_record AS SELECT * FROM reporter.old_super_simple_record WHERE 1=0; ALTER TABLE reporter.materialized_simple_record ADD PRIMARY KEY (id); +CREATE VIEW reporter.super_simple_record AS SELECT * FROM reporter.materialized_simple_record; CREATE OR REPLACE FUNCTION reporter.simple_rec_sync () RETURNS TRIGGER AS $$ BEGIN @@ -164,7 +165,7 @@ BEGIN END IF; IF TG_OP IN ('INSERT','UPDATE') AND NOT NEW.deleted THEN - INSERT INTO reporter.materialized_simple_record SELECT * FROM reporter.simple_record WHERE id = NEW.record; + INSERT INTO reporter.materialized_simple_record SELECT * FROM reporter.old_super_simple_record WHERE id = NEW.record; END IF; END; diff --git a/Open-ILS/src/sql/Pg/upgrade_simple_record.sql b/Open-ILS/src/sql/Pg/upgrade_simple_record.sql index a328f0023e..b0ceb3c7b4 100644 --- a/Open-ILS/src/sql/Pg/upgrade_simple_record.sql +++ b/Open-ILS/src/sql/Pg/upgrade_simple_record.sql @@ -1,7 +1,7 @@ BEGIN; -CREATE TABLE reporter.materialized_simple_record AS SELECT * FROM reporter.simple_record WHERE 1=0; +CREATE TABLE reporter.materialized_simple_record AS SELECT * FROM reporter.super_simple_record WHERE 1=0; INSERT INTO reporter.materialized_simple_record (id,fingerprint,quality,tcn_source,tcn_value,title,author,publisher,pubdate,isbn,issn) @@ -9,6 +9,30 @@ INSERT INTO reporter.materialized_simple_record ALTER TABLE reporter.materialized_simple_record ADD PRIMARY KEY (id); +CREATE OR REPLACE VIEW reporter.super_simple_record AS SELECT * FROM reporter.materialized_simple_record; + +CREATE OR REPLACE VIEW reporter.old_super_simple_record AS +SELECT r.id, + r.fingerprint, + r.quality, + r.tcn_source, + r.tcn_value, + title.value AS title, + FIRST(author.value) AS author, + publisher.value AS publisher, + SUBSTRING(pubdate.value FROM $$\d+$$) AS pubdate, + ARRAY_ACCUM( SUBSTRING(isbn.value FROM $$^\S+$$) ) AS isbn, + ARRAY_ACCUM( SUBSTRING(issn.value FROM $$^\S+$$) ) AS issn + FROM biblio.record_entry r + LEFT JOIN metabib.full_rec title ON (r.id = title.record AND title.tag = '245' AND title.subfield = 'a') + LEFT JOIN metabib.full_rec author ON (r.id = author.record AND author.tag IN ('100','110','111') AND author.subfield = 'a') + LEFT JOIN metabib.full_rec publisher ON (r.id = publisher.record AND publisher.tag = '260' AND publisher.subfield = 'b') + LEFT JOIN metabib.full_rec pubdate ON (r.id = pubdate.record AND pubdate.tag = '260' AND pubdate.subfield = 'c') + LEFT JOIN metabib.full_rec isbn ON (r.id = isbn.record AND isbn.tag IN ('024', '020') AND isbn.subfield IN ('a','z')) + LEFT JOIN metabib.full_rec issn ON (r.id = issn.record AND issn.tag = '022' AND issn.subfield = 'a') + WHERE r.deleted IS FALSE + GROUP BY 1,2,3,4,5,6,8,9; + CREATE OR REPLACE FUNCTION reporter.simple_rec_sync () RETURNS TRIGGER AS $$ BEGIN IF TG_OP IN ('UPDATE','DELETE') THEN @@ -16,7 +40,7 @@ BEGIN END IF; IF TG_OP IN ('INSERT','UPDATE') AND NOT NEW.deleted THEN - INSERT INTO reporter.materialized_simple_record SELECT * FROM reporter.simple_record WHERE id = NEW.record; + INSERT INTO reporter.materialized_simple_record SELECT * FROM reporter.old_super_simple_record WHERE id = NEW.record; END IF; END; -- 2.43.2