On Thu, Jul 7, 2016 at 1:23 PM, Fujii Masao <masao.fujii@gmail.com> wrote:
> Hi,
>
> I found $SUBJECT while trying to test parallel queries. Is this a bug?
>
>
> In not parallel mode, EXPLAIN ANALYZE reports the information about
> Sort Method as follows.
>
> =# EXPLAIN ANALYZE SELECT * FROM pgbench_accounts ORDER BY bid;
> QUERY PLAN
>
-----------------------------------------------------------------------------------------------------------------------------------
> Sort (cost=180739.34..183239.34 rows=1000000 width=97) (actual
> time=1501.342..1836.057 rows=1000000 loops=1)
> Sort Key: bid
> Sort Method: external sort Disk: 104600kB
> -> Seq Scan on pgbench_accounts (cost=0.00..26394.00 rows=1000000
> width=97) (actual time=0.013..179.315 rows=1000000 loops=1)
>
>
> However, in parallel mode, it's not reported, as follows.
>
> =# SET force_parallel_mode TO on;
> =# EXPLAIN ANALYZE SELECT * FROM pgbench_accounts ORDER BY bid;
> QUERY
> PLAN
>
-----------------------------------------------------------------------------------------------------------------------------------------
> Gather (cost=181739.34..284239.34 rows=1000000 width=97) (actual
> time=1507.138..2394.028 rows=1000000 loops=1)
> Workers Planned: 1
> Workers Launched: 1
> Single Copy: true
> -> Sort (cost=180739.34..183239.34 rows=1000000 width=97) (actual
> time=1503.112..1901.117 rows=1000000 loops=1)
> Sort Key: bid
> -> Seq Scan on pgbench_accounts (cost=0.00..26394.00
> rows=1000000 width=97) (actual time=0.021..181.079 rows=1000000
> loops=1)
>
I think this can never happen for force_parallel_mode TO off, because
we don't generate a gather on top of sort node. The reason why we are
able to push Sort below gather, because it is marked as parallel_safe
(create_sort_path). I think we should not mark it as parallel_safe.
Will investigate some more and send a patch.
--
With Regards,
Amit Kapila.
EnterpriseDB: http://www.enterprisedb.com