diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2021-02-04 19:12:09 -0500 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2021-02-04 19:12:09 -0500 |
commit | 10fcb83da6a7c5328f61ca7fb60f78c57db1bd58 (patch) | |
tree | d21c9b67782c3a03efc446604dc8cb1dabfb031f /src/backend/executor/nodeIncrementalSort.c | |
parent | 57868d957eb8320f924bc8453372cf9954e9a338 (diff) | |
download | postgresql-10fcb83da6a7c5328f61ca7fb60f78c57db1bd58.tar.gz postgresql-10fcb83da6a7c5328f61ca7fb60f78c57db1bd58.zip |
Fix YA incremental sort bug.
switchToPresortedPrefixMode() did the wrong thing if it detected
a batch boundary just at the last tuple of a fullsort group.
The initially-reported symptom was a "retrieved too many tuples in a
bounded sort" error, but the test case added here just silently gives
the wrong answer without this patch.
I (tgl) am not really happy about committing this patch without review
from the incremental-sort authors, but they seem AWOL and we are hard
against a release deadline. This does demonstrably make some cases
better, anyway.
Per bug #16846 from Yoran Heling. Back-patch to v13 where incremental
sort was introduced.
Neil Chen
Discussion: https://postgr.es/m/16846-ae49f51ac379a4cb@postgresql.org
Diffstat (limited to 'src/backend/executor/nodeIncrementalSort.c')
-rw-r--r-- | src/backend/executor/nodeIncrementalSort.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/backend/executor/nodeIncrementalSort.c b/src/backend/executor/nodeIncrementalSort.c index b53f8a01810..360aad32c5c 100644 --- a/src/backend/executor/nodeIncrementalSort.c +++ b/src/backend/executor/nodeIncrementalSort.c @@ -394,6 +394,13 @@ switchToPresortedPrefixMode(PlanState *pstate) * current prefix key group. */ ExecClearTuple(node->group_pivot); + + /* + * Also make sure we take the didn't-consume-all-the-tuples + * path below, even if this happened to be the last tuple of + * the batch. + */ + lastTuple = false; break; } } |