From d801a843f4c9135baca71ce25e993be5e4fafa20 Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Tue, 16 Jan 2024 17:08:13 -0800 Subject: [PATCH] Removed HnswPtrSetNull to avoid setting relptr_off directly --- src/hnsw.h | 1 - src/hnswbuild.c | 4 ++-- src/hnswutils.c | 7 ++++--- src/hnswvacuum.c | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/hnsw.h b/src/hnsw.h index 55986e2..d055368 100644 --- a/src/hnsw.h +++ b/src/hnsw.h @@ -106,7 +106,6 @@ #define HnswPtrAccess(base, hp) ((base) == NULL ? (hp).ptr : relptr_access(base, (hp).relptr)) #define HnswPtrStore(base, hp, value) ((base) == NULL ? (void) ((hp).ptr = (value)) : (void) relptr_store(base, (hp).relptr, value)) #define HnswPtrIsNull(base, hp) ((base) == NULL ? (hp).ptr == NULL : relptr_is_null((hp).relptr)) -#define HnswPtrSetNull(base, hp) ((base) == NULL ? (void) ((hp).ptr = NULL) : (void) ((hp).relptr.relptr_off = 0)) #define HnswPtrEqual(base, hp1, hp2) ((base) == NULL ? (hp1).ptr == (hp2).ptr : relptr_offset((hp1).relptr) == relptr_offset((hp2).relptr)) /* For code paths dedicated to each type */ diff --git a/src/hnswbuild.c b/src/hnswbuild.c index b3ce6ea..9021591 100644 --- a/src/hnswbuild.c +++ b/src/hnswbuild.c @@ -551,8 +551,8 @@ BuildCallback(Relation index, CALLBACK_ITEM_POINTER, Datum *values, static void InitGraph(HnswGraph * graph, char *base, long memoryTotal) { - HnswPtrSetNull(base, graph->head); - HnswPtrSetNull(base, graph->entryPoint); + HnswPtrStore(base, graph->head, (HnswElement) NULL); + HnswPtrStore(base, graph->entryPoint, (HnswElement) NULL); graph->memoryUsed = 0; graph->memoryTotal = memoryTotal; graph->flushed = false; diff --git a/src/hnswutils.c b/src/hnswutils.c index 811f2ec..b9d722a 100644 --- a/src/hnswutils.c +++ b/src/hnswutils.c @@ -274,7 +274,7 @@ HnswInitElement(char *base, ItemPointer heaptid, int m, double ml, int maxLevel, HnswInitNeighbors(base, element, m, allocator); - HnswPtrSetNull(base, element->value); + HnswPtrStore(base, element->value, (Pointer) NULL); return element; } @@ -295,11 +295,12 @@ HnswElement HnswInitElementFromBlock(BlockNumber blkno, OffsetNumber offno) { HnswElement element = palloc(sizeof(HnswElementData)); + char *base = NULL; element->blkno = blkno; element->offno = offno; - HnswPtrSetNull(NULL, element->neighbors); - HnswPtrSetNull(NULL, element->value); + HnswPtrStore(base, element->neighbors, (HnswNeighborArrayPtr *) NULL); + HnswPtrStore(base, element->value, (Pointer) NULL); return element; } diff --git a/src/hnswvacuum.c b/src/hnswvacuum.c index b55e53d..945fc92 100644 --- a/src/hnswvacuum.c +++ b/src/hnswvacuum.c @@ -301,7 +301,7 @@ RepairGraphEntryPoint(HnswVacuumState * vacuumstate) { /* Reset neighbors from previous update */ if (highestPoint != NULL) - HnswPtrSetNull(NULL, highestPoint->neighbors); + HnswPtrStore((char *) NULL, highestPoint->neighbors, (HnswNeighborArrayPtr *) NULL); RepairGraphElement(vacuumstate, entryPoint, highestPoint); }