From aae50236e4ce95c05a3962be0814c74c5a22206d Mon Sep 17 00:00:00 2001 From: Andres Freund Date: Fri, 8 Nov 2019 00:44:52 -0800 Subject: Pass ItemPointer not HeapTuple to IndexBuildCallback. Not all AMs use HeapTuples internally, making it inconvenient to pass a HeapTuple. As the index callbacks really only need the TID, not the full tuple, modify callback to only take ItemPointer. Author: Ashwin Agrawal Reviewed-By: Andres Freund Discussion: https://postgr.es/m/CALfoeis6=8ehuR=VNtHvj3z16cYfCwPdTcpaxU+sfSUJ5QgR3g@mail.gmail.com --- src/backend/access/spgist/spginsert.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/backend/access/spgist/spginsert.c') diff --git a/src/backend/access/spgist/spginsert.c b/src/backend/access/spgist/spginsert.c index b40bd440cf0..dd9088741cf 100644 --- a/src/backend/access/spgist/spginsert.c +++ b/src/backend/access/spgist/spginsert.c @@ -40,7 +40,7 @@ typedef struct /* Callback to process one heap tuple during table_index_build_scan */ static void -spgistBuildCallback(Relation index, HeapTuple htup, Datum *values, +spgistBuildCallback(Relation index, ItemPointer tid, Datum *values, bool *isnull, bool tupleIsAlive, void *state) { SpGistBuildState *buildstate = (SpGistBuildState *) state; @@ -55,7 +55,7 @@ spgistBuildCallback(Relation index, HeapTuple htup, Datum *values, * lock on some buffer. So we need to be willing to retry. We can flush * any temp data when retrying. */ - while (!spgdoinsert(index, &buildstate->spgstate, &htup->t_self, + while (!spgdoinsert(index, &buildstate->spgstate, tid, *values, *isnull)) { MemoryContextReset(buildstate->tmpCtx); -- cgit v1.2.3