From: Ben Ostrowsky Date: Thu, 13 Jan 2011 16:27:18 +0000 (+0000) Subject: Adding metarecord spells as functions for convenience X-Git-Url: http://git.equinoxoli.org/?p=migration-tools.git;a=commitdiff_plain;h=6f39c3df86e1edcf159a86283ca343fcdd3af494;hp=812b9bcd7d6996dd35a9e8231a7c259108e81676 Adding metarecord spells as functions for convenience --- diff --git a/sql/base/base.sql b/sql/base/base.sql index f153095..3b3a7a4 100644 --- a/sql/base/base.sql +++ b/sql/base/base.sql @@ -944,3 +944,42 @@ END; $$ LANGUAGE plpgsql; + +CREATE OR REPLACE FUNCTION migration_tools.insert_metarecords_for_pristine_database () RETURNS VOID AS $$ + +BEGIN + INSERT INTO metabib.metarecord (fingerprint, master_record) + SELECT DISTINCT ON (b.fingerprint) b.fingerprint, b.id + FROM biblio.record_entry b + WHERE NOT b.deleted + AND b.id IN (SELECT r.id FROM biblio.record_entry r LEFT JOIN metabib.metarecord_source_map k ON (k.source = r.id) WHERE k.id IS NULL AND r.fingerprint IS NOT NULL) + AND NOT EXISTS ( SELECT 1 FROM metabib.metarecord WHERE fingerprint = b.fingerprint ) + ORDER BY b.fingerprint, b.quality DESC; + INSERT INTO metabib.metarecord_source_map (metarecord, source) + SELECT m.id, r.id + FROM biblio.record_entry r + JOIN metabib.metarecord m USING (fingerprint) + WHERE NOT r.deleted; +END; + +$$ LANGUAGE plpgsql; + +CREATE OR REPLACE FUNCTION migration_tools.insert_metarecords_for_incumbent_database () RETURNS VOID AS $$ + +BEGIN + INSERT INTO metabib.metarecord (fingerprint, master_record) + SELECT DISTINCT ON (b.fingerprint) b.fingerprint, b.id + FROM biblio.record_entry b + WHERE NOT b.deleted + AND b.id IN (SELECT r.id FROM biblio.record_entry r LEFT JOIN metabib.metarecord_source_map k ON (k.source = r.id) WHERE k.id IS NULL AND r.fingerprint IS NOT NULL) + AND NOT EXISTS ( SELECT 1 FROM metabib.metarecord WHERE fingerprint = b.fingerprint ) + ORDER BY b.fingerprint, b.quality DESC; + INSERT INTO metabib.metarecord_source_map (metarecord, source) + SELECT m.id, r.id + FROM biblio.record_entry r + JOIN metabib.metarecord m USING (fingerprint) + WHERE NOT r.deleted + AND r.id IN (SELECT b.id FROM biblio.record_entry b LEFT JOIN metabib.metarecord_source_map k ON (k.source = b.id) WHERE k.id IS NULL); +END; + +$$ LANGUAGE plpgsql;