diff --git a/CHANGELOG.md b/CHANGELOG.md index 3602213..185fece 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ - Changed text representation for vector elements to match `real` - Changed storage for vector from `plain` to `extended` +- Increased max dimensions for vector from 1024 to 16000 +- Increased max dimensions for index from 1024 to 2000 - Improved accuracy of text parsing for certain inputs - Added `avg` aggregate for vector - Added experimental support for Windows diff --git a/src/ivfflat.h b/src/ivfflat.h index c798088..5bd7622 100644 --- a/src/ivfflat.h +++ b/src/ivfflat.h @@ -23,7 +23,7 @@ #include "portability/instr_time.h" #endif -#define IVFFLAT_MAX_DIM VECTOR_MAX_DIM +#define IVFFLAT_MAX_DIM 2000 /* Support functions */ #define IVFFLAT_DISTANCE_PROC 1 diff --git a/src/vector.h b/src/vector.h index cf14b79..3e41130 100644 --- a/src/vector.h +++ b/src/vector.h @@ -3,7 +3,7 @@ #include "postgres.h" -#define VECTOR_MAX_DIM 1024 +#define VECTOR_MAX_DIM 16000 #define VECTOR_SIZE(_dim) (offsetof(Vector, x) + sizeof(float)*(_dim)) #define DatumGetVector(x) ((Vector *) PG_DETOAST_DATUM(x)) diff --git a/test/expected/cast.out b/test/expected/cast.out index 620d717..0d56de7 100644 --- a/test/expected/cast.out +++ b/test/expected/cast.out @@ -38,8 +38,8 @@ SELECT '[1,2,3]'::vector::real[]; {1,2,3} (1 row) -SELECT array_agg(n)::vector FROM generate_series(1, 1025) n; -ERROR: vector cannot have more than 1024 dimensions +SELECT array_agg(n)::vector FROM generate_series(1, 16001) n; +ERROR: vector cannot have more than 16000 dimensions -- ensure no error SELECT ARRAY[1,2,3] = ARRAY[1,2,3]; ?column? diff --git a/test/sql/cast.sql b/test/sql/cast.sql index 3227b89..df6f444 100644 --- a/test/sql/cast.sql +++ b/test/sql/cast.sql @@ -8,7 +8,7 @@ SELECT '{Infinity}'::real[]::vector; SELECT '{-Infinity}'::real[]::vector; SELECT '{}'::real[]::vector; SELECT '[1,2,3]'::vector::real[]; -SELECT array_agg(n)::vector FROM generate_series(1, 1025) n; +SELECT array_agg(n)::vector FROM generate_series(1, 16001) n; -- ensure no error SELECT ARRAY[1,2,3] = ARRAY[1,2,3]; diff --git a/test/t/001_wal.pl b/test/t/001_wal.pl index 38fa8b3..46060ed 100644 --- a/test/t/001_wal.pl +++ b/test/t/001_wal.pl @@ -56,6 +56,9 @@ if ($dim > 32) { # TODO use wal_keep_segments for Postgres < 13 $node_primary->append_conf('postgresql.conf', qq(wal_keep_size = 1GB)); } +if ($dim > 1500) { + $node_primary->append_conf('postgresql.conf', qq(maintenance_work_mem = 128MB)); +} $node_primary->start; my $backup_name = 'my_backup';