[open-ils-commits] [GIT] Evergreen ILS branch master updated. 52402b4d28643ca013d83f87de6fecb8e0d81813

Evergreen Git git at git.evergreen-ils.org
Fri Jul 1 11:55:10 EDT 2011


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Evergreen ILS".

The branch, master has been updated
       via  52402b4d28643ca013d83f87de6fecb8e0d81813 (commit)
      from  192dbb95ba88f5c0e8f37992b54cc5ee2ad54e8c (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 52402b4d28643ca013d83f87de6fecb8e0d81813
Author: Mike Rylander <mrylander at gmail.com>
Date:   Fri Jul 1 11:50:25 2011 -0400

    Normalize facet values
    
    Spotted by Lebbeous Fogle-Weekley, facet values were not being normalized.  This is due to changes in how facets are stored in 2.1+.  This alternate implementation mirrors the way search_field index definitions work, which is a bit cleaner than inserting normalization into the field extraction process.
    
    Signed-off-by: Mike Rylander <mrylander at gmail.com>

diff --git a/Open-ILS/src/sql/Pg/002.schema.config.sql b/Open-ILS/src/sql/Pg/002.schema.config.sql
index 320534e..80b7a65 100644
--- a/Open-ILS/src/sql/Pg/002.schema.config.sql
+++ b/Open-ILS/src/sql/Pg/002.schema.config.sql
@@ -86,7 +86,7 @@ CREATE TRIGGER no_overlapping_deps
     BEFORE INSERT OR UPDATE ON config.db_patch_dependencies
     FOR EACH ROW EXECUTE PROCEDURE evergreen.array_overlap_check ('deprecates');
 
-INSERT INTO config.upgrade_log (version, applied_to) VALUES ('0570', :eg_version); -- senator
+INSERT INTO config.upgrade_log (version, applied_to) VALUES ('0571', :eg_version); -- miker
 
 CREATE TABLE config.bib_source (
 	id		SERIAL	PRIMARY KEY,
diff --git a/Open-ILS/src/sql/Pg/030.schema.metabib.sql b/Open-ILS/src/sql/Pg/030.schema.metabib.sql
index 17a2383..fb2c4cb 100644
--- a/Open-ILS/src/sql/Pg/030.schema.metabib.sql
+++ b/Open-ILS/src/sql/Pg/030.schema.metabib.sql
@@ -135,6 +135,43 @@ CREATE INDEX metabib_facet_entry_field_idx ON metabib.facet_entry (field);
 CREATE INDEX metabib_facet_entry_value_idx ON metabib.facet_entry (SUBSTRING(value,1,1024));
 CREATE INDEX metabib_facet_entry_source_idx ON metabib.facet_entry (source);
 
+CREATE OR REPLACE FUNCTION metabib.facet_normalize_trigger () RETURNS TRIGGER AS $$
+DECLARE
+    normalizer  RECORD;
+    facet_text  TEXT;
+BEGIN
+    facet_text := NEW.value;
+
+    FOR normalizer IN
+        SELECT  n.func AS func,
+                n.param_count AS param_count,
+                m.params AS params
+          FROM  config.index_normalizer n
+                JOIN config.metabib_field_index_norm_map m ON (m.norm = n.id)
+          WHERE m.field = NEW.field AND m.pos < 0
+          ORDER BY m.pos LOOP
+
+            EXECUTE 'SELECT ' || normalizer.func || '(' ||
+                quote_literal( facet_text ) ||
+                CASE
+                    WHEN normalizer.param_count > 0
+                        THEN ',' || REPLACE(REPLACE(BTRIM(normalizer.params,'[]'),E'\'',E'\\\''),E'"',E'\'')
+                        ELSE ''
+                    END ||
+                ')' INTO facet_text;
+
+    END LOOP;
+
+    NEW.value = facet_text;
+
+    RETURN NEW;
+END;
+$$ LANGUAGE PLPGSQL;
+
+CREATE TRIGGER facet_normalize_tgr
+	BEFORE UPDATE OR INSERT ON metabib.facet_entry
+	FOR EACH ROW EXECUTE PROCEDURE metabib.facet_normalize_trigger();
+
 CREATE OR REPLACE FUNCTION evergreen.facet_force_nfc() RETURNS TRIGGER AS $$
 BEGIN
     NEW.value := force_unicode_normal_form(NEW.value,'NFC');
diff --git a/Open-ILS/src/sql/Pg/upgrade/0571.schema.facet_normalizer.sql b/Open-ILS/src/sql/Pg/upgrade/0571.schema.facet_normalizer.sql
new file mode 100644
index 0000000..51f552e
--- /dev/null
+++ b/Open-ILS/src/sql/Pg/upgrade/0571.schema.facet_normalizer.sql
@@ -0,0 +1,51 @@
+-- Evergreen DB patch 0571.schema.facet_normalizer.sql
+--
+-- Alternate implementation of a regression fix for facet normalization
+--
+BEGIN;
+
+
+-- check whether patch can be applied
+SELECT evergreen.upgrade_deps_block_check('0571', :eg_version);
+
+-- FIXME: add/check SQL statements to perform the upgrade
+CREATE OR REPLACE FUNCTION metabib.facet_normalize_trigger () RETURNS TRIGGER AS $$
+DECLARE
+    normalizer  RECORD;
+    facet_text  TEXT;
+BEGIN
+    facet_text := NEW.value;
+
+    FOR normalizer IN
+        SELECT  n.func AS func,
+                n.param_count AS param_count,
+                m.params AS params
+          FROM  config.index_normalizer n
+                JOIN config.metabib_field_index_norm_map m ON (m.norm = n.id)
+          WHERE m.field = NEW.field AND m.pos < 0
+          ORDER BY m.pos LOOP
+
+            EXECUTE 'SELECT ' || normalizer.func || '(' ||
+                quote_literal( facet_text ) ||
+                CASE
+                    WHEN normalizer.param_count > 0
+                        THEN ',' || REPLACE(REPLACE(BTRIM(normalizer.params,'[]'),E'\'',E'\\\''),E'"',E'\'')
+                        ELSE ''
+                    END ||
+                ')' INTO facet_text;
+
+    END LOOP;
+
+    NEW.value = facet_text;
+
+    RETURN NEW;
+END;
+$$ LANGUAGE PLPGSQL;
+
+CREATE TRIGGER facet_normalize_tgr
+    BEFORE UPDATE OR INSERT ON metabib.facet_entry
+    FOR EACH ROW EXECUTE PROCEDURE metabib.facet_normalize_trigger();
+
+
+
+COMMIT;

-----------------------------------------------------------------------

Summary of changes:
 Open-ILS/src/sql/Pg/002.schema.config.sql          |    2 +-
 Open-ILS/src/sql/Pg/030.schema.metabib.sql         |   37 ++++++++++++++
 .../Pg/upgrade/0571.schema.facet_normalizer.sql    |   51 ++++++++++++++++++++
 3 files changed, 89 insertions(+), 1 deletions(-)
 create mode 100644 Open-ILS/src/sql/Pg/upgrade/0571.schema.facet_normalizer.sql


hooks/post-receive
-- 
Evergreen ILS


More information about the open-ils-commits mailing list