From b360e0fcd7dcffe3238187209911a6f523057b0c Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Fri, 13 Sep 2019 16:56:58 -0400 Subject: [PATCH] Make tuplesort_set_bound() assertions more comprehensible, hopefully. Add the comments that I griped were missing. Also re-order tests so that parallelism-related tests aren't randomly separated from each other. Discussion: https://postgr.es/m/CAAaqYe9GD__4Crm=ddz+-XXcNhfY_V5gFYdLdmkFNq=2VHO56Q@mail.gmail.com --- src/backend/utils/sort/tuplesort.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/backend/utils/sort/tuplesort.c b/src/backend/utils/sort/tuplesort.c index 152daa72e1c..ab55e69975c 100644 --- a/src/backend/utils/sort/tuplesort.c +++ b/src/backend/utils/sort/tuplesort.c @@ -1187,20 +1187,21 @@ tuplesort_set_bound(Tuplesortstate *state, int64 bound) { /* Assert we're called before loading any tuples */ Assert(state->status == TSS_INITIAL && state->memtupcount == 0); - + /* Can't set the bound twice, either */ Assert(!state->bounded); + /* Also, this shouldn't be called in a parallel worker */ Assert(!WORKER(state)); + /* Parallel leader allows but ignores hint */ + if (LEADER(state)) + return; + #ifdef DEBUG_BOUNDED_SORT /* Honor GUC setting that disables the feature (for easy testing) */ if (!optimize_bounded_sort) return; #endif - /* Parallel leader ignores hint */ - if (LEADER(state)) - return; - /* We want to be able to compute bound * 2, so limit the setting */ if (bound > (int64) (INT_MAX / 2)) return;