Re: ERROR: cannot start subtransactions during a parallel operation
От | Mai Peng |
---|---|
Тема | Re: ERROR: cannot start subtransactions during a parallel operation |
Дата | |
Msg-id | 7772057A-8318-49AA-A6EB-221C94A871D6@webedia-group.com обсуждение исходный текст |
Ответ на | Re: ERROR: cannot start subtransactions during a parallel operation (Mai Peng <maily.peng@webedia-group.com>) |
Список | pgsql-hackers |
Hi all,
LANGUAGE plpgsql VOLATILE;
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$ |
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.peng@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 <andres@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
В списке pgsql-hackers по дате отправления: