metabib.facet_entry

Data-Modifying Triggers: This table has BEFORE ROW trigger(s) that modify row data before write. Values you INSERT or UPDATE may differ from what is actually stored. See the Triggers section below.

Columns

Column Type Nullable Default Notes

id PK

bigint

No

nextval('metabib.facet_entry_id_seq'::regclass)

source

bigint

No

field

integer

No

value

text

No

Primary Key

(id)

Indexes

Index Method Definition

facet_entry_pkey PK

btree

CREATE UNIQUE INDEX facet_entry_pkey ON metabib.facet_entry USING btree (id)

metabib_facet_entry_field_idx

btree

CREATE INDEX metabib_facet_entry_field_idx ON metabib.facet_entry USING btree (field)

metabib_facet_entry_source_idx

btree

CREATE INDEX metabib_facet_entry_source_idx ON metabib.facet_entry USING btree (source)

metabib_facet_entry_value_idx

btree

CREATE INDEX metabib_facet_entry_value_idx ON metabib.facet_entry USING btree ("substring"(value, 1, 1024))

Triggers

Trigger Timing Event Level Function

facet_force_nfc_tgr

BEFORE

INSERT OR UPDATE

ROW

evergreen.facet_force_nfc()

facet_normalize_tgr

BEFORE

INSERT OR UPDATE

ROW

metabib.facet_normalize_trigger()

Trigger Bodies

facet_force_nfc_tgr

Function: evergreen.facet_force_nfc()
Timing: BEFORE INSERT OR UPDATE ROW

This trigger modifies the row before it is written (returns a modified NEW).

BEGIN
    NEW.value := force_unicode_normal_form(NEW.value,'NFC');
    RETURN NEW;
END;

facet_normalize_tgr

Function: metabib.facet_normalize_trigger()
Timing: BEFORE INSERT OR UPDATE ROW

This trigger modifies the row before it is written (returns a modified NEW).

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;