From 158481ff2a3982d9a551745f73782cc65e7e5e45 Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Tue, 23 Apr 2024 20:29:04 -0700 Subject: [PATCH] Improved tests for sparsevec distance functions [skip ci] --- test/expected/sparsevec_functions.out | 36 +++++++++++++++++++++++++++ test/sql/sparsevec_functions.sql | 6 +++++ 2 files changed, 42 insertions(+) diff --git a/test/expected/sparsevec_functions.out b/test/expected/sparsevec_functions.out index 36ec1a5..ff87fb1 100644 --- a/test/expected/sparsevec_functions.out +++ b/test/expected/sparsevec_functions.out @@ -154,6 +154,12 @@ SELECT l2_distance('{2:4}/2'::sparsevec, '{1:3}/2'); 5 (1 row) +SELECT l2_distance('{1:3,2:4}/2'::sparsevec, '{}/2'); + l2_distance +------------- + 5 +(1 row) + SELECT l2_distance('{}/2'::sparsevec, '{2:1}/2'); l2_distance ------------- @@ -174,6 +180,36 @@ SELECT inner_product('{1:1,2:2}/2'::sparsevec, '{1:2,2:4}/2'); SELECT inner_product('{1:1,2:2}/2'::sparsevec, '{1:3}/1'); ERROR: different sparsevec dimensions 2 and 1 +SELECT inner_product('{1:1,3:3}/4'::sparsevec, '{2:2,4:4}/4'); + inner_product +--------------- + 0 +(1 row) + +SELECT inner_product('{2:2,4:4}/4'::sparsevec, '{1:1,3:3}/4'); + inner_product +--------------- + 0 +(1 row) + +SELECT inner_product('{1:1,3:3,5:5}/5'::sparsevec, '{2:4,3:6,4:8}/5'); + inner_product +--------------- + 18 +(1 row) + +SELECT inner_product('{1:1}/2'::sparsevec, '{}/2'); + inner_product +--------------- + 0 +(1 row) + +SELECT inner_product('{}/2'::sparsevec, '{1:1}/2'); + inner_product +--------------- + 0 +(1 row) + SELECT inner_product('{1:3e38}/1'::sparsevec, '{1:3e38}/1'); inner_product --------------- diff --git a/test/sql/sparsevec_functions.sql b/test/sql/sparsevec_functions.sql index cba7854..2ff6cc7 100644 --- a/test/sql/sparsevec_functions.sql +++ b/test/sql/sparsevec_functions.sql @@ -27,11 +27,17 @@ SELECT l2_norm('{1:3e37,2:4e37}/2'::sparsevec)::real; SELECT l2_distance('{}/2'::sparsevec, '{1:3,2:4}/2'); SELECT l2_distance('{1:3}/2'::sparsevec, '{2:4}/2'); SELECT l2_distance('{2:4}/2'::sparsevec, '{1:3}/2'); +SELECT l2_distance('{1:3,2:4}/2'::sparsevec, '{}/2'); SELECT l2_distance('{}/2'::sparsevec, '{2:1}/2'); SELECT '{}/2'::sparsevec <-> '{1:3,2:4}/2'; SELECT inner_product('{1:1,2:2}/2'::sparsevec, '{1:2,2:4}/2'); SELECT inner_product('{1:1,2:2}/2'::sparsevec, '{1:3}/1'); +SELECT inner_product('{1:1,3:3}/4'::sparsevec, '{2:2,4:4}/4'); +SELECT inner_product('{2:2,4:4}/4'::sparsevec, '{1:1,3:3}/4'); +SELECT inner_product('{1:1,3:3,5:5}/5'::sparsevec, '{2:4,3:6,4:8}/5'); +SELECT inner_product('{1:1}/2'::sparsevec, '{}/2'); +SELECT inner_product('{}/2'::sparsevec, '{1:1}/2'); SELECT inner_product('{1:3e38}/1'::sparsevec, '{1:3e38}/1'); SELECT inner_product('{1:1,3:3,5:5}/5'::sparsevec, '{2:4,3:6,4:8}/5'); SELECT '{1:1,2:2}/2'::sparsevec <#> '{1:3,2:4}/2';