On 09.04.26 13:28, Bertrand Drouvot wrote:
Hi,
On Tue, Apr 07, 2026 at 02:27:40PM +0300, Heikki Linnakangas wrote:
On 03/03/2026 19:31, David Geier wrote:
Attached are the patches rebased on latest master.
I've removed the ASCII fast-path patch 0006 as it turned out to be more
complicated to make work than expected.
I kept the radix sort patch because it gives a decent speedup but I
would like to focus for now on getting patches 0001 - 0004 merged.
They're all simple and, the way I see it, uncontroversial.
I remeasured the savings of 0001 - 0004, which comes on top of the
already committed patch that inlined the comparison function, which gave
another ~5%:
Data set | Patched (ms) | Master (ms) | Speedup
--------------------|--------------|--------------|----------
movies(plot) | 8,058 | 10,311 | 1.27x
lineitem(l_comment) | 223,233 | 256,986 | 1.19x
I've also registered the change at the commit fest, see
https://commitfest.postgresql.org/patch/6418/.
Attached is v5 that removes an incorrect assertion from the radix sort code.
v5-0001-Optimize-sort-and-deduplication-in-ginExtractEntr.patch
v5-0002-Optimize-generate_trgm-with-sort_template.h.patch
v5-0003-Make-btint4cmp-branchless.patch
v5-0004-Faster-qunique-comparator-in-generate_trgm.patch
v5-0005-Optimize-generate_trgm-with-radix-sort.patch
Pushed 0001 as commit 6f5ad00ab7.
This commit makes use of StaticAssertStmt() that has been deprecated in
d50c86e74375. The attached, fixes it.
I think the position of the static assertion is correct, because it
refers to the palloc0_array() that follows. Maybe the comment could be
a bit clearer, like "using palloc0_array requires GIN_CAT_NORM_KEY==0"?