Re: Reduce build times of pg_trgm GIN indexes
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Heikki Linnakangas <hlinnaka@iki.fi>
Cc: Peter Eisentraut <peter@eisentraut.org>,
David Geier <geidav.pg@gmail.com>,
Matthias van de Meent <boekewurm+postgres@gmail.com>,
pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2026-04-16T14:37:51Z
Lists: pgsql-hackers
Heikki Linnakangas <hlinnaka@iki.fi> writes: > On 16/04/2026 11:45, Peter Eisentraut wrote: >> What I'm missing here is, essentially where the previous thread stopped: >> What is the overall message that we want to communicate with the API? Good point. >> If the default assumption is that what pointers converted to Datums >> point to should not be modified on the other side (where the Datum is >> converted back to a pointer), then the current declaration of >> PointerGetDatum() is suitable, and the GIN code can be considered an >> exception and we make a special API for that. The previous thread >> proposed NonconstPointerGetDatum(). I think there can be no doubt that most functions receiving a pass-by-ref Datum are not supposed to scribble on the pointed-to data. So it makes sense to me that PointerGetDatum should carry an implication of const-ness, and then we need to invent a new notation to use in the small number of places where that's not appropriate. I'd capitalize it as NonConstPointerGetDatum, but other than that nit that naming suggestion seems fine to me. Of course, then the *real* question is why DatumGetPointer doesn't deliver a const pointer. But I don't see how to get there without extremely invasive changes. > We could have all three: Not excited about making massive changes for this. I remain far less certain than Peter is that this discussion has anything to do with why Coverity is complaining about ginExtractEntries. I still think we should make some minimum-effort change to see if the complaint goes away before expending a lot of brain cells on choosing a final fix. regards, tom lane
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