Simplified opclasses in TAP tests [skip ci]

This commit is contained in:
Andrew Kane
2023-08-11 19:20:03 -07:00
parent 5616c1d7a7
commit 3e7ee6ea04
4 changed files with 19 additions and 43 deletions

View File

@@ -70,10 +70,12 @@ for (1 .. 20)
# Check each index type
my @operators = ("<->", "<#>", "<=>");
my @opclasses = ("vector_l2_ops", "vector_ip_ops", "vector_cosine_ops");
foreach (@operators)
for my $i (0 .. $#operators)
{
my $operator = $_;
my $operator = $operators[$i];
my $opclass = $opclasses[$i];
# Get exact results
@expected = ();
@@ -83,15 +85,6 @@ foreach (@operators)
push(@expected, $res);
}
my $opclass;
if ($operator eq "<->") {
$opclass = "vector_l2_ops";
} elsif ($operator eq "<#>") {
$opclass = "vector_ip_ops";
} else {
$opclass = "vector_cosine_ops";
}
# Build index serially
$node->safe_psql("postgres", qq(
SET max_parallel_maintenance_workers = 0;

View File

@@ -18,26 +18,21 @@ $node->safe_psql("postgres",
# Check each index type
my @operators = ("<->", "<#>", "<=>");
foreach (@operators)
my @opclasses = ("vector_l2_ops", "vector_ip_ops", "vector_cosine_ops");
for my $i (0 .. $#operators)
{
my $operator = $_;
my $operator = $operators[$i];
my $opclass = $opclasses[$i];
# Add index
my $opclass;
if ($operator eq "<->") {
$opclass = "vector_l2_ops";
} elsif ($operator eq "<#>") {
$opclass = "vector_ip_ops";
} else {
$opclass = "vector_cosine_ops";
}
$node->safe_psql("postgres", "CREATE INDEX ON tst USING ivfflat (v $opclass);");
# Test 100% recall
for (1 .. 20)
{
my $i = int(rand() * 100000);
my $query = $node->safe_psql("postgres", "SELECT v FROM tst WHERE i = $i;");
my $id = int(rand() * 100000);
my $query = $node->safe_psql("postgres", "SELECT v FROM tst WHERE i = $id;");
my $res = $node->safe_psql("postgres", qq(
SET enable_seqscan = off;
SELECT v FROM tst ORDER BY v <-> '$query' LIMIT 1;

View File

@@ -68,10 +68,12 @@ for (1 .. 20)
# Check each index type
my @operators = ("<->", "<#>", "<=>");
my @opclasses = ("vector_l2_ops", "vector_ip_ops", "vector_cosine_ops");
foreach (@operators)
for my $i (0 .. $#operators)
{
my $operator = $_;
my $operator = $operators[$i];
my $opclass = $opclasses[$i];
# Get exact results
@expected = ();
@@ -82,14 +84,6 @@ foreach (@operators)
}
# Add index
my $opclass;
if ($operator eq "<->") {
$opclass = "vector_l2_ops";
} elsif ($operator eq "<#>") {
$opclass = "vector_ip_ops";
} else {
$opclass = "vector_cosine_ops";
}
$node->safe_psql("postgres", "CREATE INDEX ON tst USING hnsw (v $opclass);");
my $min = $operator eq "<#>" ? 0.80 : 0.99;

View File

@@ -65,20 +65,14 @@ for (1 .. 20)
# Check each index type
my @operators = ("<->", "<#>", "<=>");
my @opclasses = ("vector_l2_ops", "vector_ip_ops", "vector_cosine_ops");
foreach (@operators)
for my $i (0 .. $#operators)
{
my $operator = $_;
my $operator = $operators[$i];
my $opclass = $opclasses[$i];
# Add index
my $opclass;
if ($operator eq "<->") {
$opclass = "vector_l2_ops";
} elsif ($operator eq "<#>") {
$opclass = "vector_ip_ops";
} else {
$opclass = "vector_cosine_ops";
}
$node->safe_psql("postgres", "CREATE INDEX idx ON tst USING hnsw (v $opclass);");
# Use concurrent inserts