mirror of
https://github.com/pgvector/pgvector.git
synced 2026-07-12 23:56:55 +08:00
Improved test for ef_stream [skip ci]
This commit is contained in:
@@ -14,7 +14,7 @@ $node->start;
|
|||||||
|
|
||||||
# Create table
|
# Create table
|
||||||
$node->safe_psql("postgres", "CREATE EXTENSION vector;");
|
$node->safe_psql("postgres", "CREATE EXTENSION vector;");
|
||||||
$node->safe_psql("postgres", "CREATE TABLE tst (i int4, v vector($dim));");
|
$node->safe_psql("postgres", "CREATE TABLE tst (i int4 PRIMARY KEY, v vector($dim));");
|
||||||
$node->safe_psql("postgres",
|
$node->safe_psql("postgres",
|
||||||
"INSERT INTO tst SELECT i, ARRAY[$array_sql] FROM generate_series(1, 100000) i;"
|
"INSERT INTO tst SELECT i, ARRAY[$array_sql] FROM generate_series(1, 100000) i;"
|
||||||
);
|
);
|
||||||
@@ -32,14 +32,28 @@ my $count = $node->safe_psql("postgres", qq(
|
|||||||
));
|
));
|
||||||
is($count, 10);
|
is($count, 10);
|
||||||
|
|
||||||
$count = $node->safe_psql("postgres", qq(
|
foreach ((30000, 50000, 70000))
|
||||||
SET enable_seqscan = off;
|
{
|
||||||
SET hnsw.streaming = on;
|
my $ef_stream = $_;
|
||||||
SET hnsw.ef_stream = 50000;
|
my $expected = $ef_stream / 10000;
|
||||||
SET work_mem = '8MB';
|
my $sum = 0;
|
||||||
SELECT COUNT(*) FROM (SELECT v FROM tst WHERE i % 10000 = 0 ORDER BY v <-> (SELECT v FROM tst LIMIT 1) LIMIT 11) t;
|
|
||||||
));
|
for my $i (1 .. 20)
|
||||||
isnt($count, 10);
|
{
|
||||||
|
$count = $node->safe_psql("postgres", qq(
|
||||||
|
SET enable_seqscan = off;
|
||||||
|
SET hnsw.streaming = on;
|
||||||
|
SET hnsw.ef_stream = $ef_stream;
|
||||||
|
SET work_mem = '8MB';
|
||||||
|
SELECT COUNT(*) FROM (SELECT v FROM tst WHERE i % 10000 = 0 ORDER BY v <-> (SELECT v FROM tst WHERE i = $i) LIMIT 11) t;
|
||||||
|
));
|
||||||
|
$sum += $count;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $avg = $sum / 20;
|
||||||
|
cmp_ok($avg, '>', $expected - 2);
|
||||||
|
cmp_ok($avg, '<', $expected + 2);
|
||||||
|
}
|
||||||
|
|
||||||
my ($ret, $stdout, $stderr) = $node->psql("postgres", qq(
|
my ($ret, $stdout, $stderr) = $node->psql("postgres", qq(
|
||||||
SET enable_seqscan = off;
|
SET enable_seqscan = off;
|
||||||
|
|||||||
Reference in New Issue
Block a user