]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/src/sql/Pg/upgrade/0271.schema.ingest-normalizer-json.sql
LP#1178377: Make bib source optional element from unapi.bre
[working/Evergreen.git] / Open-ILS / src / sql / Pg / upgrade / 0271.schema.ingest-normalizer-json.sql
1 BEGIN;
2
3 -- Create new expression type for IS [NOT] NULL
4
5 INSERT INTO config.upgrade_log (version) VALUES ('0271'); -- miker
6
7 UPDATE  config.metabib_field_index_norm_map
8   SET   params = REPLACE(params,E'\'','"')
9   WHERE params IS NOT NULL AND params <> '';
10
11 CREATE OR REPLACE FUNCTION oils_tsearch2 () RETURNS TRIGGER AS $$
12 DECLARE
13     normalizer      RECORD;
14     value           TEXT := '';
15 BEGIN
16     IF NEW.index_vector = ''::tsvector THEN
17         RETURN NEW;
18     END IF;
19
20     value := NEW.value;
21
22     IF TG_TABLE_NAME::TEXT ~ 'field_entry$' THEN
23         FOR normalizer IN
24             SELECT  n.func AS func,
25                     n.param_count AS param_count,
26                     m.params AS params
27               FROM  config.index_normalizer n
28                     JOIN config.metabib_field_index_norm_map m ON (m.norm = n.id)
29               WHERE field = NEW.field
30               ORDER BY m.pos
31         LOOP
32             EXECUTE 'SELECT ' || normalizer.func || '(' ||
33                 quote_literal( value ) ||
34                 CASE
35                     WHEN normalizer.param_count > 0
36                         THEN ',' || REPLACE(REPLACE(BTRIM(normalizer.params,'[]'),E'\'',E'\\\''),E'"',E'\'')
37                         ELSE ''
38                     END ||
39                 ')' INTO value;
40         END LOOP;
41     END IF;
42
43     IF REGEXP_REPLACE(VERSION(),E'^.+?(\\d+\\.\\d+).*?$',E'\\1')::FLOAT > 8.2 THEN
44         NEW.index_vector = to_tsvector((TG_ARGV[0])::regconfig, value);
45     ELSE
46         NEW.index_vector = to_tsvector(TG_ARGV[0], value);
47     END IF;
48
49     RETURN NEW;
50 END;
51 $$ LANGUAGE PLPGSQL;
52
53 COMMIT;