diff --git a/src/vector.c b/src/vector.c index ebb071a..4ea5c34 100644 --- a/src/vector.c +++ b/src/vector.c @@ -950,6 +950,7 @@ vector_avg(PG_FUNCTION_ARGS) /* Create vector */ dim = STATE_DIMS(statearray); + CheckDim(dim); result = InitVector(dim); for (int i = 0; i < dim; i++) { diff --git a/test/expected/functions.out b/test/expected/functions.out index edf6bed..bbcea4d 100644 --- a/test/expected/functions.out +++ b/test/expected/functions.out @@ -102,3 +102,5 @@ SELECT avg(v) FROM unnest(ARRAY[]::vector[]) v; SELECT avg(v) FROM unnest(ARRAY['[1,2]'::vector, '[3]']) v; ERROR: expected 2 dimensions, not 1 +SELECT vector_avg(array_agg(n)) FROM generate_series(1, 16002) n; +ERROR: vector cannot have more than 16000 dimensions diff --git a/test/sql/functions.sql b/test/sql/functions.sql index f6949a0..91f0570 100644 --- a/test/sql/functions.sql +++ b/test/sql/functions.sql @@ -24,3 +24,4 @@ SELECT avg(v) FROM unnest(ARRAY['[1,2,3]'::vector, '[3,5,7]']) v; SELECT avg(v) FROM unnest(ARRAY['[1,2,3]'::vector, '[3,5,7]', NULL]) v; SELECT avg(v) FROM unnest(ARRAY[]::vector[]) v; SELECT avg(v) FROM unnest(ARRAY['[1,2]'::vector, '[3]']) v; +SELECT vector_avg(array_agg(n)) FROM generate_series(1, 16002) n;