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

Reply via email to