From 0773c439935f172ed571186d45f41bef1a1b8e0e Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Wed, 26 Apr 2017 17:19:06 -0400 Subject: [PATCH] LP#1251394 Display fields schema rebase Rebase modified SQL functions to match their current production verions, plus changes required for this branch. Specifically metabib.reingest_metabib_field_entries and biblio.extract_metabib_field_entry Remove duplicate config.metabib_representative_field_is_valid function declaration from 002.schema.config.sql. Signed-off-by: Bill Erickson Signed-off-by: Mike Rylander --- Open-ILS/src/sql/Pg/002.schema.config.sql | 10 ------- .../XXXX.schema.metabib-display-field.sql | 27 +++++++------------ 2 files changed, 9 insertions(+), 28 deletions(-) diff --git a/Open-ILS/src/sql/Pg/002.schema.config.sql b/Open-ILS/src/sql/Pg/002.schema.config.sql index d9029b74d3..246894866c 100644 --- a/Open-ILS/src/sql/Pg/002.schema.config.sql +++ b/Open-ILS/src/sql/Pg/002.schema.config.sql @@ -183,16 +183,6 @@ INSERT INTO config.biblio_fingerprint (name, xpath, format) 'mods32' ); -CREATE OR REPLACE FUNCTION - config.metabib_representative_field_is_valid(INTEGER, TEXT) RETURNS BOOLEAN AS $$ - SELECT EXISTS (SELECT 1 FROM config.metabib_field WHERE id = $1 AND field_class = $2); -$$ LANGUAGE SQL STRICT IMMUTABLE; - -COMMENT ON FUNCTION config.metabib_representative_field_is_valid(INTEGER, TEXT) IS $$ -Ensure the field_class value on the selected representative field matches -the class name. -$$; - CREATE TABLE config.metabib_class ( name TEXT PRIMARY KEY, label TEXT NOT NULL UNIQUE, diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.metabib-display-field.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.metabib-display-field.sql index 775b5ebf59..1fe26061f2 100644 --- a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.metabib-display-field.sql +++ b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.metabib-display-field.sql @@ -146,24 +146,9 @@ BEGIN -- XXX much of this should be moved into oils_xpath_string... curr_text := ARRAY_TO_STRING(evergreen.array_remove_item_by_value(evergreen.array_remove_item_by_value( - oils_xpath( '//text()', - REGEXP_REPLACE( - REGEXP_REPLACE( -- This escapes all &s not followed by "amp;". Data ise returned from oils_xpath (above) in UTF-8, not entity encoded - REGEXP_REPLACE( -- This escapes embeded [^<]+)(<)([^>]+<)$re$, - E'\\1<\\3', - 'g' - ), - '&(?!amp;)', - '&', - 'g' - ), - E'\\s+', - ' ', - 'g' - ) - ), ' '), ''), + oils_xpath( '//text()', -- get the content of all the nodes within the main selected node + REGEXP_REPLACE( xml_node, E'\\s+', ' ', 'g' ) -- Translate adjacent whitespace to a single space + ), ' '), ''), -- throw away morally empty (bankrupt?) strings joiner ); @@ -340,6 +325,10 @@ BEGIN END IF; FOR ind_data IN SELECT * FROM biblio.extract_metabib_field_entry( bib_id ) LOOP + + -- don't store what has been normalized away + CONTINUE WHEN ind_data.value IS NULL; + IF ind_data.field < 0 THEN ind_data.field = -1 * ind_data.field; END IF; @@ -363,6 +352,8 @@ BEGIN -- expensive to add a comparison of index_vector to index_vector -- to the WHERE clause below. + CONTINUE WHEN ind_data.sort_value IS NULL; + value_prepped := metabib.browse_normalize(ind_data.value, ind_data.field); SELECT INTO mbe_row * FROM metabib.browse_entry WHERE value = value_prepped AND sort_value = ind_data.sort_value; -- 2.43.2