From ea4734287015fdc4ad97f3a2ca87270e30ec0513 Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Sat, 15 Jul 2023 18:53:41 -0700 Subject: [PATCH] Improved variable scoping --- src/ivfbuild.c | 9 +++------ src/ivfkmeans.c | 22 ++++++++-------------- src/ivfutils.c | 14 ++++---------- src/vector.c | 22 +++++++--------------- 4 files changed, 22 insertions(+), 45 deletions(-) diff --git a/src/ivfbuild.c b/src/ivfbuild.c index f74a821..af0bfb3 100644 --- a/src/ivfbuild.c +++ b/src/ivfbuild.c @@ -150,7 +150,6 @@ AddTupleToSort(Relation index, ItemPointer tid, Datum *values, IvfflatBuildState int closestCenter = 0; VectorArray centers = buildstate->centers; TupleTableSlot *slot = buildstate->slot; - int i; /* Detoast once for all calls */ Datum value = PointerGetDatum(PG_DETOAST_DATUM(values[0])); @@ -163,7 +162,7 @@ AddTupleToSort(Relation index, ItemPointer tid, Datum *values, IvfflatBuildState } /* Find the list that minimizes the distance */ - for (i = 0; i < centers->length; i++) + for (int i = 0; i < centers->length; i++) { distance = DatumGetFloat8(FunctionCall2Coll(buildstate->procinfo, buildstate->collation, value, PointerGetDatum(VectorArrayGet(centers, i)))); @@ -266,7 +265,6 @@ InsertTuples(Relation index, IvfflatBuildState * buildstate, ForkNumber forkNum) BlockNumber startPage; BlockNumber insertPage; Size itemsz; - int i; int64 inserted = 0; #if PG_VERSION_NUM >= 120000 @@ -282,7 +280,7 @@ InsertTuples(Relation index, IvfflatBuildState * buildstate, ForkNumber forkNum) GetNextTuple(buildstate->sortstate, tupdesc, slot, &itup, &list); - for (i = 0; i < buildstate->centers->length; i++) + for (int i = 0; i < buildstate->centers->length; i++) { /* Can take a while, so ensure we can interrupt */ /* Needs to be called when no buffer locks are held */ @@ -483,7 +481,6 @@ static void CreateListPages(Relation index, VectorArray centers, int dimensions, int lists, ForkNumber forkNum, ListInfo * *listInfo) { - int i; Buffer buf; Page page; GenericXLogState *state; @@ -497,7 +494,7 @@ CreateListPages(Relation index, VectorArray centers, int dimensions, buf = IvfflatNewBuffer(index, forkNum); IvfflatInitRegisterPage(index, &buf, &page, &state); - for (i = 0; i < lists; i++) + for (int i = 0; i < lists; i++) { /* Load list */ list->startPage = InvalidBlockNumber; diff --git a/src/ivfkmeans.c b/src/ivfkmeans.c index eb94de0..ea34a10 100644 --- a/src/ivfkmeans.c +++ b/src/ivfkmeans.c @@ -16,7 +16,6 @@ InitCenters(Relation index, VectorArray samples, VectorArray centers, float *low { FmgrInfo *procinfo; Oid collation; - int i; int64 j; double distance; double sum; @@ -36,7 +35,7 @@ InitCenters(Relation index, VectorArray samples, VectorArray centers, float *low for (j = 0; j < numSamples; j++) weight[j] = DBL_MAX; - for (i = 0; i < numCenters; i++) + for (int i = 0; i < numCenters; i++) { CHECK_FOR_INTERRUPTS(); @@ -88,13 +87,12 @@ InitCenters(Relation index, VectorArray samples, VectorArray centers, float *low static inline void ApplyNorm(FmgrInfo *normprocinfo, Oid collation, Vector * vec) { - int i; double norm = DatumGetFloat8(FunctionCall1Coll(normprocinfo, collation, PointerGetDatum(vec))); /* TODO Handle zero norm */ if (norm > 0) { - for (i = 0; i < vec->dim; i++) + for (int i = 0; i < vec->dim; i++) vec->x[i] /= norm; } } @@ -114,8 +112,6 @@ CompareVectors(const void *a, const void *b) static void QuickCenters(Relation index, VectorArray samples, VectorArray centers) { - int i; - int j; Vector *vec; int dimensions = centers->dim; Oid collation = index->rd_indcollation[0]; @@ -125,7 +121,7 @@ QuickCenters(Relation index, VectorArray samples, VectorArray centers) if (samples->length > 0) { qsort(samples->items, samples->length, VECTOR_SIZE(samples->dim), CompareVectors); - for (i = 0; i < samples->length; i++) + for (int i = 0; i < samples->length; i++) { vec = VectorArrayGet(samples, i); @@ -145,7 +141,7 @@ QuickCenters(Relation index, VectorArray samples, VectorArray centers) SET_VARSIZE(vec, VECTOR_SIZE(dimensions)); vec->dim = dimensions; - for (j = 0; j < dimensions; j++) + for (int j = 0; j < dimensions; j++) vec->x[j] = RandomDouble(); /* Normalize if needed (only needed for random centers) */ @@ -471,19 +467,17 @@ CheckCenters(Relation index, VectorArray centers) FmgrInfo *normprocinfo; Oid collation; Vector *vec; - int i; - int j; double norm; if (centers->length != centers->maxlen) elog(ERROR, "Not enough centers. Please report a bug."); /* Ensure no NaN or infinite values */ - for (i = 0; i < centers->length; i++) + for (int i = 0; i < centers->length; i++) { vec = VectorArrayGet(centers, i); - for (j = 0; j < vec->dim; j++) + for (int j = 0; j < vec->dim; j++) { if (isnan(vec->x[j])) elog(ERROR, "NaN detected. Please report a bug."); @@ -496,7 +490,7 @@ CheckCenters(Relation index, VectorArray centers) /* Ensure no duplicate centers */ /* Fine to sort in-place */ qsort(centers->items, centers->length, VECTOR_SIZE(centers->dim), CompareVectors); - for (i = 1; i < centers->length; i++) + for (int i = 1; i < centers->length; i++) { if (CompareVectors(VectorArrayGet(centers, i), VectorArrayGet(centers, i - 1)) == 0) elog(ERROR, "Duplicate centers detected. Please report a bug."); @@ -509,7 +503,7 @@ CheckCenters(Relation index, VectorArray centers) { collation = index->rd_indcollation[0]; - for (i = 0; i < centers->length; i++) + for (int i = 0; i < centers->length; i++) { norm = DatumGetFloat8(FunctionCall1Coll(normprocinfo, collation, PointerGetDatum(VectorArrayGet(centers, i)))); if (norm == 0) diff --git a/src/ivfutils.c b/src/ivfutils.c index 7cf6fe6..1232f16 100644 --- a/src/ivfutils.c +++ b/src/ivfutils.c @@ -35,9 +35,7 @@ VectorArrayFree(VectorArray arr) void PrintVectorArray(char *msg, VectorArray arr) { - int i; - - for (i = 0; i < arr->length; i++) + for (int i = 0; i < arr->length; i++) PrintVector(msg, VectorArrayGet(arr, i)); } @@ -78,20 +76,16 @@ IvfflatOptionalProcInfo(Relation rel, uint16 procnum) bool IvfflatNormValue(FmgrInfo *procinfo, Oid collation, Datum *value, Vector * result) { - Vector *v; - int i; - double norm; - - norm = DatumGetFloat8(FunctionCall1Coll(procinfo, collation, *value)); + double norm = DatumGetFloat8(FunctionCall1Coll(procinfo, collation, *value)); if (norm > 0) { - v = DatumGetVector(*value); + Vector *v = DatumGetVector(*value); if (result == NULL) result = InitVector(v->dim); - for (i = 0; i < v->dim; i++) + for (int i = 0; i < v->dim; i++) result->x[i] = v->x[i] / norm; *value = PointerGetDatum(result); diff --git a/src/vector.c b/src/vector.c index 394a478..2bdd3fa 100644 --- a/src/vector.c +++ b/src/vector.c @@ -136,7 +136,6 @@ vector_in(PG_FUNCTION_ARGS) { char *str = PG_GETARG_CSTRING(0); int32 typmod = PG_GETARG_INT32(2); - int i; float x[VECTOR_MAX_DIM]; int dim = 0; char *pt; @@ -231,7 +230,7 @@ vector_in(PG_FUNCTION_ARGS) CheckExpectedDim(typmod, dim); result = InitVector(dim); - for (i = 0; i < dim; i++) + for (int i = 0; i < dim; i++) result->x[i] = x[i]; PG_RETURN_POINTER(result); @@ -248,7 +247,6 @@ vector_out(PG_FUNCTION_ARGS) int dim = vector->dim; char *buf; char *ptr; - int i; int n; #if PG_VERSION_NUM < 120000 @@ -275,7 +273,7 @@ vector_out(PG_FUNCTION_ARGS) *ptr = '['; ptr++; - for (i = 0; i < dim; i++) + for (int i = 0; i < dim; i++) { if (i > 0) { @@ -353,7 +351,6 @@ vector_recv(PG_FUNCTION_ARGS) Vector *result; int16 dim; int16 unused; - int i; dim = pq_getmsgint(buf, sizeof(int16)); unused = pq_getmsgint(buf, sizeof(int16)); @@ -367,7 +364,7 @@ vector_recv(PG_FUNCTION_ARGS) errmsg("expected unused to be 0, not %d", unused))); result = InitVector(dim); - for (i = 0; i < dim; i++) + for (int i = 0; i < dim; i++) { result->x[i] = pq_getmsgfloat4(buf); CheckElement(result->x[i]); @@ -385,12 +382,11 @@ vector_send(PG_FUNCTION_ARGS) { Vector *vec = PG_GETARG_VECTOR_P(0); StringInfoData buf; - int i; pq_begintypsend(&buf); pq_sendint(&buf, vec->dim, sizeof(int16)); pq_sendint(&buf, vec->unused, sizeof(int16)); - for (i = 0; i < vec->dim; i++) + for (int i = 0; i < vec->dim; i++) pq_sendfloat4(&buf, vec->x[i]); PG_RETURN_BYTEA_P(pq_endtypsend(&buf)); @@ -420,7 +416,6 @@ array_to_vector(PG_FUNCTION_ARGS) { ArrayType *array = PG_GETARG_ARRAYTYPE_P(0); int32 typmod = PG_GETARG_INT32(1); - int i; Vector *result; int16 typlen; bool typbyval; @@ -441,7 +436,7 @@ array_to_vector(PG_FUNCTION_ARGS) CheckExpectedDim(typmod, nelemsp); result = InitVector(nelemsp); - for (i = 0; i < nelemsp; i++) + for (int i = 0; i < nelemsp; i++) { if (nullsp[i]) ereport(ERROR, @@ -478,11 +473,10 @@ vector_to_float4(PG_FUNCTION_ARGS) Vector *vec = PG_GETARG_VECTOR_P(0); Datum *datums; ArrayType *result; - int i; datums = (Datum *) palloc(sizeof(Datum) * vec->dim); - for (i = 0; i < vec->dim; i++) + for (int i = 0; i < vec->dim; i++) datums[i] = Float4GetDatum(vec->x[i]); /* Use TYPALIGN_INT for float4 */ @@ -749,11 +743,9 @@ vector_sub(PG_FUNCTION_ARGS) int vector_cmp_internal(Vector * a, Vector * b) { - int i; - CheckDims(a, b); - for (i = 0; i < a->dim; i++) + for (int i = 0; i < a->dim; i++) { if (a->x[i] < b->x[i]) return -1;