mirror of
https://github.com/pgvector/pgvector.git
synced 2026-06-06 05:51:21 +08:00
Fixed infinite values with vector addition and subtraction
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
## 0.4.3 (unreleased)
|
||||
|
||||
- Fixed infinite values with vector addition and subtraction
|
||||
- Fixed compilation error when `float8` is pass by reference
|
||||
- Fixed compilation error on PowerPC
|
||||
- Fixed segmentation fault with index creation on i386
|
||||
|
||||
@@ -656,6 +656,10 @@ vector_add(PG_FUNCTION_ARGS)
|
||||
for (int i = 0, imax = a->dim; i < imax; i++)
|
||||
rx[i] = ax[i] + bx[i];
|
||||
|
||||
for (int i = 0, imax = a->dim; i < imax; i++)
|
||||
if (isinf(rx[i]))
|
||||
float_overflow_error();
|
||||
|
||||
PG_RETURN_POINTER(result);
|
||||
}
|
||||
|
||||
@@ -682,6 +686,10 @@ vector_sub(PG_FUNCTION_ARGS)
|
||||
for (int i = 0, imax = a->dim; i < imax; i++)
|
||||
rx[i] = ax[i] - bx[i];
|
||||
|
||||
for (int i = 0, imax = a->dim; i < imax; i++)
|
||||
if (isinf(rx[i]))
|
||||
float_overflow_error();
|
||||
|
||||
PG_RETURN_POINTER(result);
|
||||
}
|
||||
|
||||
|
||||
@@ -4,12 +4,16 @@ SELECT '[1,2,3]'::vector + '[4,5,6]';
|
||||
[5,7,9]
|
||||
(1 row)
|
||||
|
||||
SELECT '[3e38]'::vector + '[3e38]';
|
||||
ERROR: value out of range: overflow
|
||||
SELECT '[1,2,3]'::vector - '[4,5,6]';
|
||||
?column?
|
||||
------------
|
||||
[-3,-3,-3]
|
||||
(1 row)
|
||||
|
||||
SELECT '[-3e38]'::vector - '[3e38]';
|
||||
ERROR: value out of range: overflow
|
||||
SELECT vector_dims('[1,2,3]');
|
||||
vector_dims
|
||||
-------------
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
SELECT '[1,2,3]'::vector + '[4,5,6]';
|
||||
SELECT '[3e38]'::vector + '[3e38]';
|
||||
SELECT '[1,2,3]'::vector - '[4,5,6]';
|
||||
SELECT '[-3e38]'::vector - '[3e38]';
|
||||
|
||||
SELECT vector_dims('[1,2,3]');
|
||||
|
||||
|
||||
Reference in New Issue
Block a user