diff --git a/README.md b/README.md index 88b0931..23b6405 100644 --- a/README.md +++ b/README.md @@ -894,13 +894,13 @@ Operator | Description | Added Function | Description | Added --- | --- | --- cosine_distance(halfvec, halfvec) → double precision | cosine distance | unreleased -halfvec_dims(halfvec) → integer | number of dimensions | unreleased inner_product(halfvec, halfvec) → double precision | inner product | unreleased l1_distance(halfvec, halfvec) → double precision | taxicab distance | unreleased l2_distance(halfvec, halfvec) → double precision | Euclidean distance | unreleased l2_norm(halfvec) → double precision | Euclidean norm | unreleased quantize_binary(halfvec) → bit | quantize | unreleased subvector(halfvec, integer, integer) → halfvec | subvector | unreleased +vector_dims(halfvec) → integer | number of dimensions | unreleased ### Halfvec Aggregate Functions diff --git a/sql/vector.sql b/sql/vector.sql index 687dedb..60e5620 100644 --- a/sql/vector.sql +++ b/sql/vector.sql @@ -364,8 +364,8 @@ CREATE FUNCTION cosine_distance(halfvec, halfvec) RETURNS float8 CREATE FUNCTION l1_distance(halfvec, halfvec) RETURNS float8 AS 'MODULE_PATHNAME', 'halfvec_l1_distance' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; -CREATE FUNCTION halfvec_dims(halfvec) RETURNS integer - AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; +CREATE FUNCTION vector_dims(halfvec) RETURNS integer + AS 'MODULE_PATHNAME', 'halfvec_vector_dims' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION l2_norm(halfvec) RETURNS float8 AS 'MODULE_PATHNAME', 'halfvec_l2_norm' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; diff --git a/src/halfvec.c b/src/halfvec.c index c2c1ee3..874cdc4 100644 --- a/src/halfvec.c +++ b/src/halfvec.c @@ -715,9 +715,9 @@ halfvec_l1_distance(PG_FUNCTION_ARGS) /* * Get the dimensions of a half vector */ -PGDLLEXPORT PG_FUNCTION_INFO_V1(halfvec_dims); +PGDLLEXPORT PG_FUNCTION_INFO_V1(halfvec_vector_dims); Datum -halfvec_dims(PG_FUNCTION_ARGS) +halfvec_vector_dims(PG_FUNCTION_ARGS) { HalfVector *a = PG_GETARG_HALFVEC_P(0); diff --git a/test/expected/halfvec_functions.out b/test/expected/halfvec_functions.out index d2b3e9a..52590bb 100644 --- a/test/expected/halfvec_functions.out +++ b/test/expected/halfvec_functions.out @@ -138,10 +138,10 @@ SELECT halfvec_cmp('[2,3]', '[1,2,3]'); 1 (1 row) -SELECT halfvec_dims('[1,2,3]'::halfvec); - halfvec_dims --------------- - 3 +SELECT vector_dims('[1,2,3]'::halfvec); + vector_dims +------------- + 3 (1 row) SELECT round(l2_norm('[1,1]'::halfvec)::numeric, 5); diff --git a/test/expected/vector_functions.out b/test/expected/vector_functions.out index b489ad0..389a26f 100644 --- a/test/expected/vector_functions.out +++ b/test/expected/vector_functions.out @@ -138,7 +138,7 @@ SELECT vector_cmp('[2,3]', '[1,2,3]'); 1 (1 row) -SELECT vector_dims('[1,2,3]'); +SELECT vector_dims('[1,2,3]'::vector); vector_dims ------------- 3 diff --git a/test/sql/halfvec_functions.sql b/test/sql/halfvec_functions.sql index 67acc67..91a15f0 100644 --- a/test/sql/halfvec_functions.sql +++ b/test/sql/halfvec_functions.sql @@ -27,7 +27,7 @@ SELECT halfvec_cmp('[1,2,3]', '[1,2]'); SELECT halfvec_cmp('[1,2]', '[2,3,4]'); SELECT halfvec_cmp('[2,3]', '[1,2,3]'); -SELECT halfvec_dims('[1,2,3]'::halfvec); +SELECT vector_dims('[1,2,3]'::halfvec); SELECT round(l2_norm('[1,1]'::halfvec)::numeric, 5); SELECT l2_norm('[3,4]'::halfvec); diff --git a/test/sql/vector_functions.sql b/test/sql/vector_functions.sql index 62b1a69..a8a3fed 100644 --- a/test/sql/vector_functions.sql +++ b/test/sql/vector_functions.sql @@ -27,7 +27,7 @@ SELECT vector_cmp('[1,2,3]', '[1,2]'); SELECT vector_cmp('[1,2]', '[2,3,4]'); SELECT vector_cmp('[2,3]', '[1,2,3]'); -SELECT vector_dims('[1,2,3]'); +SELECT vector_dims('[1,2,3]'::vector); SELECT round(vector_norm('[1,1]')::numeric, 5); SELECT vector_norm('[3,4]');