From 971b7d7fd6647a907c0aa361e4e702110eb29d1c Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Wed, 1 Jul 2026 12:21:08 -0700 Subject: [PATCH] Added IVFFlat memory tests for halfvec [skip ci] --- test/expected/ivfflat_halfvec.out | 24 ++++++++++++++++++++++++ test/sql/ivfflat_halfvec.sql | 19 +++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/test/expected/ivfflat_halfvec.out b/test/expected/ivfflat_halfvec.out index 4893ad1..c9fb7eb 100644 --- a/test/expected/ivfflat_halfvec.out +++ b/test/expected/ivfflat_halfvec.out @@ -93,3 +93,27 @@ CREATE TABLE t (val halfvec(4001)); CREATE INDEX ON t USING ivfflat (val halfvec_l2_ops); ERROR: column cannot have more than 4000 dimensions for ivfflat index DROP TABLE t; +-- memory +CREATE TABLE t (val halfvec(4000)); +CREATE INDEX ON t USING ivfflat (val halfvec_l2_ops) WITH (lists = 8192); +NOTICE: ivfflat index created with little data +DETAIL: This will cause low recall. +HINT: Drop the index until the table has more data. +DROP TABLE t; +SET maintenance_work_mem = '1MB'; +CREATE TABLE t (val halfvec(4000)); +CREATE INDEX ON t USING ivfflat (val halfvec_l2_ops); +NOTICE: ivfflat index created with little data +DETAIL: This will cause low recall. +HINT: Drop the index until the table has more data. +DROP TABLE t; +RESET maintenance_work_mem; +SET maintenance_work_mem = '6MB'; +CREATE TABLE t (val halfvec(4000)); +INSERT INTO t (val) VALUES (array_fill(0, ARRAY[4000])); +CREATE INDEX ON t USING ivfflat (val halfvec_l2_ops); +NOTICE: ivfflat index created with little data +DETAIL: This will cause low recall. +HINT: Drop the index until the table has more data. +DROP TABLE t; +RESET maintenance_work_mem; diff --git a/test/sql/ivfflat_halfvec.sql b/test/sql/ivfflat_halfvec.sql index a81b4ab..9c7297a 100644 --- a/test/sql/ivfflat_halfvec.sql +++ b/test/sql/ivfflat_halfvec.sql @@ -53,3 +53,22 @@ DROP TABLE t; CREATE TABLE t (val halfvec(4001)); CREATE INDEX ON t USING ivfflat (val halfvec_l2_ops); DROP TABLE t; + +-- memory + +CREATE TABLE t (val halfvec(4000)); +CREATE INDEX ON t USING ivfflat (val halfvec_l2_ops) WITH (lists = 8192); +DROP TABLE t; + +SET maintenance_work_mem = '1MB'; +CREATE TABLE t (val halfvec(4000)); +CREATE INDEX ON t USING ivfflat (val halfvec_l2_ops); +DROP TABLE t; +RESET maintenance_work_mem; + +SET maintenance_work_mem = '6MB'; +CREATE TABLE t (val halfvec(4000)); +INSERT INTO t (val) VALUES (array_fill(0, ARRAY[4000])); +CREATE INDEX ON t USING ivfflat (val halfvec_l2_ops); +DROP TABLE t; +RESET maintenance_work_mem;