Re: A qsort template
Thomas Munro <thomas.munro@gmail.com>
From: Thomas Munro <thomas.munro@gmail.com>
To: Peter Geoghegan <pg@bowt.ie>
Cc: John Naylor <john.naylor@enterprisedb.com>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2021-08-02T00:01:33Z
Lists: pgsql-hackers
Attachments
- v3-0001-WIP-Accelerate-tuple-sorting-for-common-types.patch (text/x-patch) patch v3-0001
On Fri, Jul 30, 2021 at 7:11 PM Peter Geoghegan <pg@bowt.ie> wrote: > If you're going to specialize the sort routine for unsigned integer > style abbreviated keys then you might as well cover all relevant > opclasses/types. Almost all abbreviated key schemes produce > conditioned datums that are designed to use simple 3-way unsigned int > comparator. It's not just text. (Actually, the only abbreviated key > scheme that doesn't do it that way is numeric.) Right, that was the plan, but this was just experimenting with an idea. Looks like John's also seeing evidence that it may be worth pursuing. (Re numeric, I guess it must be possible to rearrange things so it can use ssup_datum_signed_cmp; maybe something like NaN -> INT64_MAX, +inf -> INT64_MAX - 1, -inf -> INT64_MIN, and then -1 - (whatever we're doing now for normal values).) > Offhand I know that UUID, macaddr, and inet all have abbreviated keys > that can use your new ssup_datum_binary_cmp() comparator instead of > their own duplicated comparator (which will make them use the > corresponding specialized sort routine inside tuplesort.c). Thanks, I've added these ones, and also gist_bbox_zorder_cmp_abbrev. I also renamed that function to ssup_datum_unsigned_cmp(), because "binary" was misleading.
Commits
-
Remove debug messages from tuplesort_sort_memtuples()
- 6e647ef0e750 15.0 landed
-
Fix performance regression in tuplesort specializations
- 99c754129d78 15.0 landed
-
Fix tuplesort optimization for CLUSTER-on-expression.
- cc58eecc5d75 15.0 landed
-
Initial pgindent and pgperltidy run for v14.
- def5b065ff22 14.0 cited
-
Specialize checkpointer sort functions.
- 1b88b8908e75 14.0 landed
-
Use sort_template.h for qsort() and qsort_arg().
- f374f4d66425 14.0 landed
-
Use sort_template.h for qsort_tuple() and qsort_ssup().
- 8eda3eba3063 14.0 landed
-
Add sort_template.h for making sort functions.
- 0a1f1d3cac6b 14.0 landed
-
Use abbreviated keys for faster sorting of text datums.
- 4ea51cdfe85c 9.5.0 cited