diff --git a/src/hnsw.h b/src/hnsw.h index 1f69bac..d1a53c1 100644 --- a/src/hnsw.h +++ b/src/hnsw.h @@ -258,7 +258,7 @@ typedef struct HnswVacuumState int HnswGetM(Relation index); int HnswGetEfConstruction(Relation index); FmgrInfo *HnswOptionalProcInfo(Relation rel, uint16 procnum); -bool HnswNormValue(FmgrInfo *procinfo, FmgrInfo *normalizeprocinfo, Oid collation, Datum *value, Vector * result); +void HnswNormValue(FmgrInfo *procinfo, FmgrInfo *normalizeprocinfo, Oid collation, Datum *value, Vector * result); void HnswCommitBuffer(Buffer buf, GenericXLogState *state); Buffer HnswNewBuffer(Relation index, ForkNumber forkNum); void HnswInitPage(Buffer buf, Page page); diff --git a/src/hnswbuild.c b/src/hnswbuild.c index 5315c09..b20db10 100644 --- a/src/hnswbuild.c +++ b/src/hnswbuild.c @@ -278,8 +278,7 @@ InsertTuple(Relation index, Datum *values, HnswElement element, HnswBuildState * Datum value = PointerGetDatum(PG_DETOAST_DATUM(values[0])); /* Normalize if needed */ - if (!HnswNormValue(buildstate->normprocinfo, buildstate->normalizeprocinfo, collation, &value, buildstate->normvec)) - return false; + HnswNormValue(buildstate->normprocinfo, buildstate->normalizeprocinfo, collation, &value, buildstate->normvec); /* Copy value to element so accessible outside of memory context */ memcpy(element->vec, DatumGetVector(value), VECTOR_SIZE(buildstate->dimensions)); diff --git a/src/hnswinsert.c b/src/hnswinsert.c index d4b89b3..17ff965 100644 --- a/src/hnswinsert.c +++ b/src/hnswinsert.c @@ -434,8 +434,7 @@ HnswInsertTuple(Relation index, Datum *values, bool *isnull, ItemPointer heap_ti /* Normalize if needed */ normprocinfo = HnswOptionalProcInfo(index, HNSW_NORM_PROC); normalizeprocinfo = HnswOptionalProcInfo(index, HNSW_NORMALIZE_PROC); - if (!HnswNormValue(normprocinfo, normalizeprocinfo, collation, &value, NULL)) - return false; + HnswNormValue(normprocinfo, normalizeprocinfo, collation, &value, NULL); /* Create an element */ element = HnswInitElement(heap_tid, m, ml, HnswGetMaxLevel(m)); diff --git a/src/hnswutils.c b/src/hnswutils.c index 36dc46d..2fc2361 100644 --- a/src/hnswutils.c +++ b/src/hnswutils.c @@ -47,14 +47,12 @@ HnswOptionalProcInfo(Relation rel, uint16 procnum) } /* - * Divide by the norm - * - * Returns false if value should not be indexed + * Normalize a vector * * The caller needs to free the pointer stored in value * if it's different than the original value */ -bool +void HnswNormValue(FmgrInfo *procinfo, FmgrInfo *normalizeprocinfo, Oid collation, Datum *value, Vector * result) { double norm; @@ -62,11 +60,11 @@ HnswNormValue(FmgrInfo *procinfo, FmgrInfo *normalizeprocinfo, Oid collation, Da if (normalizeprocinfo != NULL) { *value = FunctionCall1Coll(normalizeprocinfo, collation, *value); - return true; + return; } if (procinfo == NULL) - return true; + return; norm = DatumGetFloat8(FunctionCall1Coll(procinfo, collation, *value)); @@ -81,11 +79,7 @@ HnswNormValue(FmgrInfo *procinfo, FmgrInfo *normalizeprocinfo, Oid collation, Da result->x[i] = v->x[i] / norm; *value = PointerGetDatum(result); - - return true; } - - return false; } /*