Compruebe el valor con current_setting ()

Estoy tratando de trabajar concurrent_setting().

Se me ocurrió esto:

CREATE OR REPLACE FUNCTION process_audit() RETURNS TRIGGER AS $audit$
    DECLARE
        user_id integer;
    BEGIN
        BEGIN
            user_id := current_setting('hws.current_user_id');
        EXCEPTION WHEN OTHERS THEN
            user_id := NULL;
        END;
        ...
        RETURN NULL;
   END;
$audit$ LANGUAGE plpgsql;

El ajuste se establece a través de:

SELECT set_config('hws.current_user_id', '5', true); -- true = local setting -> only visible in current transaction

El problema es esecurrent_setting() lanza una excepción si el valor no es válido. No quiero usarEXCEPTION Porque leí que los bloques de excepción son caros.

¿Hay alguna forma de verificar si la configuración tiene un valor sin usar excepciones?

Por cierto: también traté de leer desdepg_settings pero eso no parece funcionar con la configuración local.

Respuestas a la pregunta(1)

Su respuesta a la pregunta