Thanks for the answer it worked, the third analyze in the sequence below show 
multiple workers planned and none launched.


PREPARE st AS SELECT avg(a) FROM parallel_big;
EXPLAIN ANALYZE EXECUTE st;

BEGIN;
SET TRANSACTION ISOLATION LEVEL READ COMMITTED, READ ONLY;
EXPLAIN ANALYZE EXECUTE st;
COMMIT;

BEGIN;
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE, READ ONLY;
EXPLAIN ANALYZE EXECUTE st;
COMMIT;
DEALLOCATE st;

Cheers,
Luis M



________________________________
From: Alvaro Herrera <alvhe...@alvh.no-ip.org>
Sent: Monday, February 12, 2018 4:19:52 PM
To: Luis Carril
Cc: pgsql-gene...@postgresql.org
Subject: Re: Trying to the behavior of a parallel query with with a change in 
the transaction isolation mode

Luis Carril wrote:

> The transaction isolation level is serializable. This situation does not 
> normally arise, because parallel query plans are not generated when the 
> transaction isolation level is serializable. However, it can happen if the 
> transaction isolation level is changed to serializable after the plan is 
> generated and before it is executed.

> BEGIN;
> SET TRANSACTION ISOLATION LEVEL READ COMMITTED, READ ONLY;
> EXPLAIN (COSTS OFF) SELECT avg(a) FROM parallel_big;
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE, READ ONLY;
> EXPLAIN ANALYZE SELECT avg(a) FROM parallel_big;
> COMMIT;
>
>
>      But complains that after the first SELECT (even if it is in an EXPLAIN) 
> the isolation level cannot be changed, so the transaction is aborted  and the 
> SELECT is never executed (even sequentially).
>
>
>      Is there any way to test the possible behavior described in the 
> documentation?

I think you would do a PREPARE in a regular transaction, then open a
transaction changing the isolation level to serializable and try the
EXPLAIN EXECUTE there.

--
Álvaro Herrera                https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Reply via email to