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