Re: Reduce build times of pg_trgm GIN indexes
Peter Eisentraut <peter@eisentraut.org>
From: Peter Eisentraut <peter@eisentraut.org>
To: Bertrand Drouvot <bertranddrouvot.pg@gmail.com>,
Heikki Linnakangas <hlinnaka@iki.fi>
Cc: David Geier <geidav.pg@gmail.com>,
Matthias van de Meent <boekewurm+postgres@gmail.com>,
pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2026-04-13T09:41:02Z
Lists: pgsql-hackers
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"?
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Change PointerGetDatum() back to a macro
- d65995cbc6e1 19 (unreleased) landed
-
Replace deprecated StaticAssertStmt() with StaticAssertDecl()
- 66ad764c8d51 19 (unreleased) landed
-
Optimize sorting and deduplicating trigrams
- 9f3755ea07aa 19 (unreleased) landed
-
Optimize sort and deduplication in ginExtractEntries()
- 6f5ad00ab763 19 (unreleased) landed
-
Inline ginCompareAttEntries for speed
- bba81f9d3d4f 19 (unreleased) landed