mirror of
https://github.com/pgvector/pgvector.git
synced 2026-07-13 16:16:56 +08:00
Added dimension checks [skip ci]
This commit is contained in:
@@ -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++)
|
||||||
{
|
{
|
||||||
|
|||||||
20
src/vector.c
20
src/vector.c
@@ -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
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user