Project

General

Profile

« Previous | Next » 

Revision 6229

schemas/functions.sql: _map(): Raise data_exception if value not in map and no default provided (not the same as a NULL default value)

View differences:

schemas/functions.sql
147 147
    AS $$
148 148
DECLARE
149 149
    match text := map -> value;
150
    default_ text := map -> '*';
151 150
BEGIN
152 151
    IF match IS NOT NULL THEN RETURN match;
153
    ELSIF default_ = '*' THEN RETURN value;
154
    ELSE RETURN default_;
152
    ELSE
153
        DECLARE
154
            default_ text := map -> '*';
155
        BEGIN
156
            IF default_ = '*' THEN RETURN value;
157
            ELSIF default_ IS NOT NULL OR map ? '*' THEN RETURN default_; -- default provided
158
            ELSE RAISE 'Invalid map value: %', value USING ERRCODE = 'data_exception';
159
            END IF;
160
        END;
155 161
    END IF;
156 162
END;
157 163
$$;

Also available in: Unified diff