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);
}
/*
* 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
*/
@@ -749,9 +731,11 @@ Datum
vector_to_halfvec(PG_FUNCTION_ARGS)
{
Vector *vec = PG_GETARG_VECTOR_P(0);
HalfVector *result;
/* TODO Check halfvec dims in InitHalfVector */
HalfVector *result = InitHalfVector(vec->dim);
CheckDim(vec->dim);
result = InitHalfVector(vec->dim);
for (int i = 0; i < vec->dim; i++)
{

View File

@@ -533,6 +533,26 @@ vector_to_float4(PG_FUNCTION_ARGS)
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
*/