pgvector.git / summary / log / commit / refs

commit    5ffa6d022b211c89bb69bfd1d91cafbfeac8345a
Author:   Andrew Kane <andrew@ankane.org>
Date:     Tue Jul 28 21:01:57 2026 +0000

    Fixed buffer size for empty sparsevec with max dimensions (no impact to users due to Postgres allocation alignment) [skip ci]
    
    Co-authored-by: 0xJi3F


src/sparsevec.c | 4 ++-- test/expected/sparsevec.out | 6 ++++++ test/sql/sparsevec.sql | 1 + 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/sparsevec.c b/src/sparsevec.c index ef4796fc..b0756eca 100644 --- a/src/sparsevec.c +++ b/src/sparsevec.c @@ -438,13 +438,13 @@ sparsevec_out(PG_FUNCTION_ARGS) * nnz * (FLOAT_SHORTEST_DECIMAL_LEN - 1) bytes for * float_to_shortest_decimal_bufn * - * nnz - 1 bytes for , + * max(nnz - 1, 0) bytes for , * * 10 bytes for dimensions * * 4 bytes for {, }, /, and \0 */ - buf = (char *) palloc((11 + FLOAT_SHORTEST_DECIMAL_LEN) * sparsevec->nnz + 13); + buf = (char *) palloc((11 + FLOAT_SHORTEST_DECIMAL_LEN) * sparsevec->nnz + 14); ptr = buf; AppendChar(ptr, '{'); diff --git a/test/expected/sparsevec.out b/test/expected/sparsevec.out index 989ec82b..ee20a970 100644 --- a/test/expected/sparsevec.out +++ b/test/expected/sparsevec.out @@ -187,6 +187,12 @@ SELECT '{}/-1'::sparsevec; ERROR: sparsevec must have at least 1 dimension LINE 1: SELECT '{}/-1'::sparsevec; ^ +SELECT '{}/1000000000'::sparsevec; + sparsevec +--------------- + {}/1000000000 +(1 row) + SELECT '{}/1000000001'::sparsevec; ERROR: sparsevec cannot have more than 1000000000 dimensions LINE 1: SELECT '{}/1000000001'::sparsevec; diff --git a/test/sql/sparsevec.sql b/test/sql/sparsevec.sql index 2e1136b8..d6987d40 100644 --- a/test/sql/sparsevec.sql +++ b/test/sql/sparsevec.sql @@ -38,6 +38,7 @@ SELECT '{1:1,1:1}/2'::sparsevec; SELECT '{1:1,2:1,1:1}/2'::sparsevec; SELECT '{}/5'::sparsevec; SELECT '{}/-1'::sparsevec; +SELECT '{}/1000000000'::sparsevec; SELECT '{}/1000000001'::sparsevec; SELECT '{}/2147483648'::sparsevec; SELECT '{}/-2147483649'::sparsevec; [parent: 751f5a21d8fd]