pgvector.git / summary / log / commit / refs
commit f2bffff4604c80c1183167a6f13f8ffc20ff99ca
Author: Andrew Kane <andrew@ankane.org>
Date: Fri Apr 12 04:14:48 2024 +0000
Improved code for item size [skip ci]
src/ivfbuild.c | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/src/ivfbuild.c b/src/ivfbuild.c
index f9533f1a..8cd54b6d 100644
--- a/src/ivfbuild.c
+++ b/src/ivfbuild.c
@@ -328,6 +328,20 @@ GetMaxDimensions(IvfflatType type)
return maxDimensions;
}
+/*
+ * Get item size
+ */
+static Size
+GetItemSize(IvfflatType type, int dimensions)
+{
+ if (type == IVFFLAT_TYPE_VECTOR)
+ return VECTOR_SIZE(dimensions);
+ else if (type == IVFFLAT_TYPE_HALFVEC)
+ return HALFVEC_SIZE(dimensions);
+ else
+ elog(ERROR, "Unsupported type");
+}
+
/*
* Initialize the build state
*/
@@ -374,7 +388,7 @@ InitBuildState(IvfflatBuildState * buildstate, Relation heap, Relation index, In
buildstate->slot = MakeSingleTupleTableSlot(buildstate->tupdesc, &TTSOpsVirtual);
- buildstate->centers = VectorArrayInit(buildstate->lists, buildstate->dimensions, buildstate->type == IVFFLAT_TYPE_HALFVEC ? HALFVEC_SIZE(buildstate->dimensions) : VECTOR_SIZE(buildstate->dimensions));
+ buildstate->centers = VectorArrayInit(buildstate->lists, buildstate->dimensions, GetItemSize(buildstate->type, buildstate->dimensions));
buildstate->listInfo = palloc(sizeof(ListInfo) * buildstate->lists);
buildstate->tmpCtx = AllocSetContextCreate(CurrentMemoryContext,
[parent: af7d9b74a993]