mirror of
https://github.com/pgvector/pgvector.git
synced 2026-07-11 23:26:55 +08:00
Check typmod when casting [skip ci]
This commit is contained in:
@@ -731,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);
|
||||||
|
int32 typmod = PG_GETARG_INT32(1);
|
||||||
HalfVector *result;
|
HalfVector *result;
|
||||||
|
|
||||||
CheckDim(vec->dim);
|
CheckDim(vec->dim);
|
||||||
|
CheckExpectedDim(typmod, vec->dim);
|
||||||
|
|
||||||
result = InitHalfVector(vec->dim);
|
result = InitHalfVector(vec->dim);
|
||||||
|
|
||||||
|
|||||||
@@ -541,9 +541,11 @@ Datum
|
|||||||
halfvec_to_vector(PG_FUNCTION_ARGS)
|
halfvec_to_vector(PG_FUNCTION_ARGS)
|
||||||
{
|
{
|
||||||
HalfVector *vec = PG_GETARG_HALFVEC_P(0);
|
HalfVector *vec = PG_GETARG_HALFVEC_P(0);
|
||||||
|
int32 typmod = PG_GETARG_INT32(1);
|
||||||
Vector *result;
|
Vector *result;
|
||||||
|
|
||||||
CheckDim(vec->dim);
|
CheckDim(vec->dim);
|
||||||
|
CheckExpectedDim(typmod, vec->dim);
|
||||||
|
|
||||||
result = InitVector(vec->dim);
|
result = InitVector(vec->dim);
|
||||||
|
|
||||||
|
|||||||
@@ -58,6 +58,10 @@ SELECT '[1,2,3]'::halfvec::vector;
|
|||||||
[1,2,3]
|
[1,2,3]
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
|
SELECT '[1,2,3]'::vector::halfvec(2);
|
||||||
|
ERROR: expected 2 dimensions, not 3
|
||||||
|
SELECT '[1,2,3]'::halfvec::vector(2);
|
||||||
|
ERROR: expected 2 dimensions, not 3
|
||||||
SELECT '[1e-8]'::vector::halfvec;
|
SELECT '[1e-8]'::vector::halfvec;
|
||||||
halfvec
|
halfvec
|
||||||
---------
|
---------
|
||||||
|
|||||||
@@ -12,6 +12,8 @@ SELECT '{{1}}'::real[]::vector;
|
|||||||
SELECT '[1,2,3]'::vector::real[];
|
SELECT '[1,2,3]'::vector::real[];
|
||||||
SELECT '[1,2,3]'::vector::halfvec;
|
SELECT '[1,2,3]'::vector::halfvec;
|
||||||
SELECT '[1,2,3]'::halfvec::vector;
|
SELECT '[1,2,3]'::halfvec::vector;
|
||||||
|
SELECT '[1,2,3]'::vector::halfvec(2);
|
||||||
|
SELECT '[1,2,3]'::halfvec::vector(2);
|
||||||
SELECT '[1e-8]'::vector::halfvec;
|
SELECT '[1e-8]'::vector::halfvec;
|
||||||
SELECT array_agg(n)::vector FROM generate_series(1, 16001) n;
|
SELECT array_agg(n)::vector FROM generate_series(1, 16001) n;
|
||||||
SELECT array_to_vector(array_agg(n), 16001, false) FROM generate_series(1, 16001) n;
|
SELECT array_to_vector(array_agg(n), 16001, false) FROM generate_series(1, 16001) n;
|
||||||
|
|||||||
Reference in New Issue
Block a user