pgsql: Adjust tuplesort API to have bitwise option flags

From: David Rowley <drowley(at)postgresql(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Adjust tuplesort API to have bitwise option flags
Date: 2022-04-04 10:25:26
Message-ID: E1nbJtl-000Gd3-I3@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Adjust tuplesort API to have bitwise option flags

This replaces the bool flag for randomAccess. An upcoming patch requires
adding another option, so instead of breaking the API for that, then
breaking it again one day if we add more options, let's just break it
once. Any boolean options we add in the future will just make use of an
unused bit in the flags.

Any extensions making use of tuplesorts will need to update their code
to pass TUPLESORT_RANDOMACCESS instead of true for randomAccess.
TUPLESORT_NONE can be used for a set of empty options.

Author: David Rowley
Reviewed-by: Justin Pryzby
Discussion: https://postgr.es/m/CAApHDvoH4ASzsAOyHcxkuY01Qf%2B%2B8JJ0paw%2B03dk%2BW25tQEcNQ%40mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/77bae396df3f6f883f58f1877b7c08eb3ebb6b63

Modified Files
--------------
src/backend/access/gist/gistbuild.c | 2 +-
src/backend/access/hash/hashsort.c | 2 +-
src/backend/access/heap/heapam_handler.c | 2 +-
src/backend/access/nbtree/nbtsort.c | 6 +-
src/backend/catalog/index.c | 2 +-
src/backend/executor/nodeAgg.c | 6 +-
src/backend/executor/nodeIncrementalSort.c | 4 +-
src/backend/executor/nodeSort.c | 8 ++-
src/backend/utils/adt/orderedsetaggs.c | 10 ++-
src/backend/utils/sort/tuplesort.c | 111 ++++++++++++++++-------------
src/include/utils/tuplesort.h | 19 +++--
11 files changed, 99 insertions(+), 73 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message David Rowley 2022-04-04 10:53:35 pgsql: Use Generation memory contexts to store tuples in sorts
Previous Message David Rowley 2022-04-04 08:53:46 pgsql: Improve the generation memory allocator