Re: A qsort template
Thomas Munro <thomas.munro@gmail.com>
From: Thomas Munro <thomas.munro@gmail.com>
To: Andres Freund <andres@anarazel.de>
Cc: Justin Pryzby <pryzby@telsasoft.com>,
John Naylor <john.naylor@enterprisedb.com>, Peter Geoghegan <pg@bowt.ie>, pgsql-hackers <pgsql-hackers@postgresql.org>, Robert Haas <rhaas@postgresql.org>
Date: 2022-04-02T21:45:13Z
Lists: pgsql-hackers
Attachments
- 0001-WIP-Fix-tuplesort-optimizations-for-expression-based.patch (text/x-patch) patch 0001
On Sun, Apr 3, 2022 at 9:03 AM Andres Freund <andres@anarazel.de> wrote: > It's certainly not pretty that copytup_cluster() can use SortTuples without > actually using SortTuples. Afaics it basically only computes isnull1/datum1 if > state->indexInfo->ii_IndexAttrNumbers[0] == 0. I think we just need to decide up front if we're in a situation that can't provide datum1/isnull1 (in this case because it's an expression index), and skip the optimised paths. Here's an experimental patch... still looking into whether there are more cases like this... (There's also room to recognise when you don't even need to look at isnull1 for a less branchy optimised sort, but that was already discussed and put off for later.)
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