Added dimension checks [skip ci]

This commit is contained in:
Andrew Kane
2024-03-30 10:23:56 -07:00
parent 4d041d9282
commit d82f6634fe
2 changed files with 24 additions and 20 deletions

View File

@@ -723,24 +723,6 @@ halfvec_to_float4(PG_FUNCTION_ARGS)
PG_RETURN_POINTER(result); PG_RETURN_POINTER(result);
} }
/*
* Convert half vector to vector
*/
PGDLLEXPORT PG_FUNCTION_INFO_V1(halfvec_to_vector);
Datum
halfvec_to_vector(PG_FUNCTION_ARGS)
{
HalfVector *vec = PG_GETARG_HALFVEC_P(0);
/* TODO Check vector dims in InitVector */
Vector *result = InitVector(vec->dim);
for (int i = 0; i < vec->dim; i++)
result->x[i] = HalfToFloat4(vec->x[i]);
PG_RETURN_POINTER(result);
}
/* /*
* Convert vector to half vec * Convert vector to half vec
*/ */
@@ -749,9 +731,11 @@ Datum
vector_to_halfvec(PG_FUNCTION_ARGS) vector_to_halfvec(PG_FUNCTION_ARGS)
{ {
Vector *vec = PG_GETARG_VECTOR_P(0); Vector *vec = PG_GETARG_VECTOR_P(0);
HalfVector *result;
/* TODO Check halfvec dims in InitHalfVector */ CheckDim(vec->dim);
HalfVector *result = InitHalfVector(vec->dim);
result = InitHalfVector(vec->dim);
for (int i = 0; i < vec->dim; i++) for (int i = 0; i < vec->dim; i++)
{ {

View File

@@ -533,6 +533,26 @@ vector_to_float4(PG_FUNCTION_ARGS)
PG_RETURN_POINTER(result); PG_RETURN_POINTER(result);
} }
/*
* Convert half vector to vector
*/
PGDLLEXPORT PG_FUNCTION_INFO_V1(halfvec_to_vector);
Datum
halfvec_to_vector(PG_FUNCTION_ARGS)
{
HalfVector *vec = PG_GETARG_HALFVEC_P(0);
Vector *result;
CheckDim(vec->dim);
result = InitVector(vec->dim);
for (int i = 0; i < vec->dim; i++)
result->x[i] = HalfToFloat4(vec->x[i]);
PG_RETURN_POINTER(result);
}
/* /*
* Get the L2 distance between vectors * Get the L2 distance between vectors
*/ */