diff --git a/src/hnsw.h b/src/hnsw.h index 8990cdc..ff7a8c7 100644 --- a/src/hnsw.h +++ b/src/hnsw.h @@ -59,7 +59,7 @@ #define HNSW_MAX_SIZE (BLCKSZ - MAXALIGN(SizeOfPageHeaderData) - MAXALIGN(sizeof(HnswPageOpaqueData)) - sizeof(ItemIdData)) -#define HNSW_ELEMENT_TUPLE_SIZE(_dim) MAXALIGN(offsetof(HnswElementTupleData, vec) + VECTOR_SIZE(_dim)) +#define HNSW_ELEMENT_TUPLE_SIZE(size) MAXALIGN(offsetof(HnswElementTupleData, vec) + (size)) #define HNSW_NEIGHBOR_TUPLE_SIZE(level, m) MAXALIGN(offsetof(HnswNeighborTupleData, indextids) + ((level) + 2) * (m) * sizeof(ItemPointerData)) #define HnswPageGetOpaque(page) ((HnswPageOpaque) PageGetSpecialPointer(page)) diff --git a/src/hnswbuild.c b/src/hnswbuild.c index ee6c7ad..9621cc2 100644 --- a/src/hnswbuild.c +++ b/src/hnswbuild.c @@ -118,7 +118,7 @@ CreateElementPages(HnswBuildState * buildstate) /* Calculate sizes */ maxSize = HNSW_MAX_SIZE; - etupSize = HNSW_ELEMENT_TUPLE_SIZE(dimensions); + etupSize = HNSW_ELEMENT_TUPLE_SIZE(VECTOR_SIZE(dimensions)); /* Allocate once */ etup = palloc0(etupSize); diff --git a/src/hnswinsert.c b/src/hnswinsert.c index 8394f9b..ec17726 100644 --- a/src/hnswinsert.c +++ b/src/hnswinsert.c @@ -132,7 +132,7 @@ WriteNewElementPages(Relation index, HnswElement e, int m, BlockNumber insertPag BlockNumber newInsertPage = InvalidBlockNumber; /* Calculate sizes */ - etupSize = HNSW_ELEMENT_TUPLE_SIZE(dimensions); + etupSize = HNSW_ELEMENT_TUPLE_SIZE(VECTOR_SIZE(dimensions)); ntupSize = HNSW_NEIGHBOR_TUPLE_SIZE(e->level, m); combinedSize = etupSize + ntupSize + sizeof(ItemIdData); maxSize = HNSW_MAX_SIZE;