Don't shut down Gather[Merge] early under Limit.
authorAmit Kapila <akapila@postgresql.org>
Mon, 18 Nov 2019 08:47:41 +0000 (14:17 +0530)
committerAmit Kapila <akapila@postgresql.org>
Tue, 26 Nov 2019 03:00:24 +0000 (08:30 +0530)
commit080313f8296fb0bcc74bd70fc8e15cd64f45945e
tree8336eb44d12702d83cf9ec76bfd17e841f2b62c8
parent0d3c3aae3366891f1c3d6bac326070660be36f76
Don't shut down Gather[Merge] early under Limit.

Revert part of commit 19df1702f5.

Early shutdown was added by that commit so that we could collect
statistics from workers, but unfortunately, it interacted badly with
rescans.  The problem is that we ended up destroying the parallel context
which is required for rescans.  This leads to rescans of a Limit node over
a Gather node to produce unpredictable results as it tries to access
destroyed parallel context.  By reverting the early shutdown code, we
might lose statistics in some cases of Limit over Gather [Merge], but that
will require further study to fix.

Reported-by: Jerry Sievers
Diagnosed-by: Thomas Munro
Author: Amit Kapila, testcase by Vignesh C
Backpatch-through: 9.6
Discussion: https://postgr.es/m/87ims2amh6.fsf@jsievers.enova.com
src/backend/executor/nodeLimit.c
src/test/regress/expected/select_parallel.out
src/test/regress/sql/select_parallel.sql