From 49bc34caf31a6f561d7bd1da77a8e2315d5781ff Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Thu, 28 Mar 2024 16:41:13 -0700 Subject: [PATCH] Make max dimensions consistent across types [skip ci] --- README.md | 2 +- src/halfvec.h | 2 +- test/expected/halfvec_input.out | 4 +++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index bbe9d75..37077ce 100644 --- a/README.md +++ b/README.md @@ -722,7 +722,7 @@ sum(vector) → vector | sum | 0.5.0 ### Halfvec Type -Each half vector takes `2 * dimensions + 8` bytes of storage. Each element is a half-precision floating-point number, and all elements must be finite (no `NaN`, `Infinity` or `-Infinity`). Half vectors can have up to 32,000 dimensions. +Each half vector takes `2 * dimensions + 8` bytes of storage. Each element is a half-precision floating-point number, and all elements must be finite (no `NaN`, `Infinity` or `-Infinity`). Half vectors can have up to 16,000 dimensions. ### Halfvec Operators diff --git a/src/halfvec.h b/src/halfvec.h index 3d4e821..7ddad00 100644 --- a/src/halfvec.h +++ b/src/halfvec.h @@ -18,7 +18,7 @@ #define HALF_MAX 65504 #endif -#define HALFVEC_MAX_DIM 32000 +#define HALFVEC_MAX_DIM 16000 #define HALFVEC_SIZE(_dim) (offsetof(HalfVector, x) + sizeof(half)*(_dim)) #define DatumGetHalfVector(x) ((HalfVector *) PG_DETOAST_DATUM(x)) diff --git a/test/expected/halfvec_input.out b/test/expected/halfvec_input.out index 3238005..169bd6c 100644 --- a/test/expected/halfvec_input.out +++ b/test/expected/halfvec_input.out @@ -133,7 +133,9 @@ ERROR: dimensions for type halfvec must be at least 1 LINE 1: SELECT '[1,2,3]'::halfvec(0); ^ SELECT '[1,2,3]'::halfvec(16001); -ERROR: expected 16001 dimensions, not 3 +ERROR: dimensions for type halfvec cannot exceed 16000 +LINE 1: SELECT '[1,2,3]'::halfvec(16001); + ^ SELECT unnest('{"[1,2,3]", "[4,5,6]"}'::halfvec[]); unnest ---------