Hi all, Sorry for the late reply. I could handle the pb by transforming my function check ( with an exception ) by a simple sql immutable function. Function before CREATE OR REPLACE FUNCTION test_id(ltree[]) RETURNS boolean AS $BODY$ DECLARE id public.ltree; BEGIN FOR id IN SELECT unnest($1) LOOP PERFORMl id::id; IF () THEN RETURN FALSE; END IF; END LOOP; RETURN TRUE; EXCEPTION WHEN OTHERS THEN RETURN FALSE; END; $BODY$ LANGUAGE plpgsql VOLATILE;
AFTER CREATE OR REPLACE FUNCTION test_Id(ltree[]) RETURNS boolean AS $BODY$ SELECT NOT EXISTS ( SELECT 1 FROM unnest ($1) id WHERE id<>id::id ) $BODY$ LANGUAGE sql IMMUTABLE STRICT; > Le 1 juil. 2018 à 11:02, Mai Peng <maily.p...@webedia-group.com> a écrit : > > Hello, how could I relax the subtransaction restriction, I used the Parallel > Unsafe option, but still have the same issue. > Rgds. > > Le ven. 29 juin 2018 20:47, Andres Freund <and...@anarazel.de > <mailto:and...@anarazel.de>> a écrit : > Hi, > > On 2018-06-29 20:37:23 +0200, Tomas Vondra wrote: > > My guess is that it's a PL/pgSQL function with an EXCEPTION block, and > > there's no easy way to "fix" that. > > Obviously not going to immediately help the OP, but I do think we should > be able to relax the subtransaction restriction around parallelism > without too much work. Can't allow xids to be assigned, but that's > probably ok for a lot of exception handling cases. > > Greetings, > > Andres Freund