From d3760110875ae705b855b3a2cf870126f287b134 Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Wed, 7 Dec 2022 19:45:44 -0800 Subject: [PATCH] Added VectorArrayFree --- src/ivfbuild.c | 4 ++-- src/ivfflat.h | 1 + src/ivfkmeans.c | 2 +- src/ivfutils.c | 9 +++++++++ 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/ivfbuild.c b/src/ivfbuild.c index 408883a..f3f8211 100644 --- a/src/ivfbuild.c +++ b/src/ivfbuild.c @@ -362,7 +362,7 @@ InitBuildState(IvfflatBuildState * buildstate, Relation heap, Relation index, In static void FreeBuildState(IvfflatBuildState * buildstate) { - pfree(buildstate->centers); + VectorArrayFree(buildstate->centers); pfree(buildstate->listInfo); pfree(buildstate->normvec); @@ -401,7 +401,7 @@ ComputeCenters(IvfflatBuildState * buildstate) IvfflatBench("k-means", IvfflatKmeans(buildstate->index, buildstate->samples, buildstate->centers)); /* Free samples before we allocate more memory */ - pfree(buildstate->samples); + VectorArrayFree(buildstate->samples); } /* diff --git a/src/ivfflat.h b/src/ivfflat.h index a72a3ab..32b184a 100644 --- a/src/ivfflat.h +++ b/src/ivfflat.h @@ -212,6 +212,7 @@ typedef IvfflatScanOpaqueData * IvfflatScanOpaque; /* Methods */ void _PG_init(void); VectorArray VectorArrayInit(int maxlen, int dimensions); +void VectorArrayFree(VectorArray arr); void PrintVectorArray(char *msg, VectorArray arr); void IvfflatKmeans(Relation index, VectorArray samples, VectorArray centers); FmgrInfo *IvfflatOptionalProcInfo(Relation rel, uint16 procnum); diff --git a/src/ivfkmeans.c b/src/ivfkmeans.c index 40d8afc..61053af 100644 --- a/src/ivfkmeans.c +++ b/src/ivfkmeans.c @@ -443,7 +443,7 @@ ElkanKmeans(Relation index, VectorArray samples, VectorArray centers) break; } - pfree(newCenters); + VectorArrayFree(newCenters); pfree(centerCounts); pfree(closestCenters); pfree(lowerBound); diff --git a/src/ivfutils.c b/src/ivfutils.c index 3dc39c0..2b5bb7d 100644 --- a/src/ivfutils.c +++ b/src/ivfutils.c @@ -18,6 +18,15 @@ VectorArrayInit(int maxlen, int dimensions) return res; } +/* + * Free a vector array + */ +void +VectorArrayFree(VectorArray arr) +{ + pfree(arr); +} + /* * Print vector array - useful for debugging */