metabib.display_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.display_entry_id_seq'::regclass)

source

bigint

No

field

integer

No

value

text

No

Primary Key

(id)

Indexes

Index Method Definition

display_entry_pkey PK

btree

CREATE UNIQUE INDEX display_entry_pkey ON metabib.display_entry USING btree (id)

metabib_display_entry_field_idx

btree

CREATE INDEX metabib_display_entry_field_idx ON metabib.display_entry USING btree (field)

metabib_display_entry_source_idx

btree

CREATE INDEX metabib_display_entry_source_idx ON metabib.display_entry USING btree (source)

Triggers

Trigger Timing Event Level Function

display_field_force_nfc_tgr

BEFORE

INSERT OR UPDATE

ROW

evergreen.display_field_force_nfc()

display_field_normalize_tgr

BEFORE

INSERT OR UPDATE

ROW

metabib.display_field_normalize_trigger()

Trigger Bodies

display_field_force_nfc_tgr

Function: evergreen.display_field_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;

display_field_normalize_tgr

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

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

DECLARE
    normalizer  RECORD;
    display_field_text  TEXT;
BEGIN
    display_field_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( display_field_text ) ||
                CASE
                    WHEN normalizer.param_count > 0
                        THEN ',' || REPLACE(REPLACE(BTRIM(
                            normalizer.params,'[]'),E'\'',E'\\\''),E'"',E'\'')
                        ELSE ''
                    END ||
                ')' INTO display_field_text;

    END LOOP;

    NEW.value = display_field_text;

    RETURN NEW;
END;