From 59e3b957bcf16f82e5664cc8ed58248c95ac0910 Mon Sep 17 00:00:00 2001 From: tjgreen42 Date: Fri, 15 Nov 2024 11:32:16 -0800 Subject: [PATCH] 0.5.0 release (#162) Add upgrade scripts and version bump to 0.5.0. --- pgvectorscale/Cargo.toml | 2 +- .../sql/vectorscale--0.0.2--0.5.0.sql | 1 + .../sql/vectorscale--0.2.0--0.5.0.sql | 1 + .../sql/vectorscale--0.3.0--0.5.0.sql | 1 + .../sql/vectorscale--0.4.0--0.5.0.sql | 105 ++++++++++++++++++ 5 files changed, 109 insertions(+), 1 deletion(-) create mode 120000 pgvectorscale/sql/vectorscale--0.0.2--0.5.0.sql create mode 120000 pgvectorscale/sql/vectorscale--0.2.0--0.5.0.sql create mode 120000 pgvectorscale/sql/vectorscale--0.3.0--0.5.0.sql create mode 100644 pgvectorscale/sql/vectorscale--0.4.0--0.5.0.sql diff --git a/pgvectorscale/Cargo.toml b/pgvectorscale/Cargo.toml index e9b88365..500d4e11 100644 --- a/pgvectorscale/Cargo.toml +++ b/pgvectorscale/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "vectorscale" -version = "0.4.0" +version = "0.5.0" edition = "2021" [lib] diff --git a/pgvectorscale/sql/vectorscale--0.0.2--0.5.0.sql b/pgvectorscale/sql/vectorscale--0.0.2--0.5.0.sql new file mode 120000 index 00000000..572c0fb6 --- /dev/null +++ b/pgvectorscale/sql/vectorscale--0.0.2--0.5.0.sql @@ -0,0 +1 @@ +vectorscale--0.4.0--0.5.0.sql \ No newline at end of file diff --git a/pgvectorscale/sql/vectorscale--0.2.0--0.5.0.sql b/pgvectorscale/sql/vectorscale--0.2.0--0.5.0.sql new file mode 120000 index 00000000..572c0fb6 --- /dev/null +++ b/pgvectorscale/sql/vectorscale--0.2.0--0.5.0.sql @@ -0,0 +1 @@ +vectorscale--0.4.0--0.5.0.sql \ No newline at end of file diff --git a/pgvectorscale/sql/vectorscale--0.3.0--0.5.0.sql b/pgvectorscale/sql/vectorscale--0.3.0--0.5.0.sql new file mode 120000 index 00000000..572c0fb6 --- /dev/null +++ b/pgvectorscale/sql/vectorscale--0.3.0--0.5.0.sql @@ -0,0 +1 @@ +vectorscale--0.4.0--0.5.0.sql \ No newline at end of file diff --git a/pgvectorscale/sql/vectorscale--0.4.0--0.5.0.sql b/pgvectorscale/sql/vectorscale--0.4.0--0.5.0.sql new file mode 100644 index 00000000..48ef55a6 --- /dev/null +++ b/pgvectorscale/sql/vectorscale--0.4.0--0.5.0.sql @@ -0,0 +1,105 @@ +/* */ +/* +This file is auto generated by pgrx. + +The ordering of items is not stable, it is driven by a dependency graph. +*/ +/* */ + +/* */ +-- src/access_method/mod.rs:29 +-- vectorscale::access_method::amhandler + + CREATE OR REPLACE FUNCTION diskann_amhandler(internal) RETURNS index_am_handler PARALLEL SAFE IMMUTABLE STRICT COST 0.0001 LANGUAGE c AS '$libdir/vectorscale-0.5.0', 'amhandler_wrapper'; + + DO $$ + DECLARE + c int; + BEGIN + SELECT count(*) + INTO c + FROM pg_catalog.pg_am a + WHERE a.amname = 'diskann'; + + IF c = 0 THEN + CREATE ACCESS METHOD diskann TYPE INDEX HANDLER diskann_amhandler; + END IF; + END; + $$; +/* */ + +/* */ +-- src/access_method/distance.rs:42 +-- vectorscale::access_method::distance::distance_type_cosine +CREATE FUNCTION "distance_type_cosine"() RETURNS smallint /* i16 */ +IMMUTABLE STRICT PARALLEL SAFE +LANGUAGE c /* Rust */ +AS '$libdir/vectorscale-0.5.0', 'distance_type_cosine_wrapper'; +/* */ + +/* */ +-- src/access_method/distance.rs:47 +-- vectorscale::access_method::distance::distance_type_l2 +CREATE FUNCTION "distance_type_l2"() RETURNS smallint /* i16 */ +IMMUTABLE STRICT PARALLEL SAFE +LANGUAGE c /* Rust */ +AS '$libdir/vectorscale-0.5.0', 'distance_type_l2_wrapper'; +/* */ + +/* */ +-- src/access_method/mod.rs:163 +-- requires: +-- amhandler +-- distance_type_cosine +-- distance_type_l2 + + +DO $$ +DECLARE + have_cos_ops int; + have_l2_ops int; +BEGIN + -- Has cosine operator class been installed previously? + SELECT count(*) + INTO have_cos_ops + FROM pg_catalog.pg_opclass c + WHERE c.opcname = 'vector_cosine_ops' + AND c.opcmethod = (SELECT oid FROM pg_catalog.pg_am am WHERE am.amname = 'diskann') + AND c.opcnamespace = (SELECT oid FROM pg_catalog.pg_namespace where nspname='@extschema@'); + + -- Has L2 operator class been installed previously? + SELECT count(*) + INTO have_l2_ops + FROM pg_catalog.pg_opclass c + WHERE c.opcname = 'vector_l2_ops' + AND c.opcmethod = (SELECT oid FROM pg_catalog.pg_am am WHERE am.amname = 'diskann') + AND c.opcnamespace = (SELECT oid FROM pg_catalog.pg_namespace where nspname='@extschema@'); + + IF have_cos_ops = 0 THEN + -- Fresh install from scratch + CREATE OPERATOR CLASS vector_cosine_ops DEFAULT + FOR TYPE vector USING diskann AS + OPERATOR 1 <=> (vector, vector) FOR ORDER BY float_ops, + FUNCTION 1 distance_type_cosine(); + + CREATE OPERATOR CLASS vector_l2_ops + FOR TYPE vector USING diskann AS + OPERATOR 1 <-> (vector, vector) FOR ORDER BY float_ops, + FUNCTION 1 distance_type_l2(); + ELSIF have_l2_ops = 0 THEN + -- Upgrade to add L2 distance support and update cosine opclass to + -- include the distance_type_cosine function + INSERT INTO pg_amproc (oid, amprocfamily, amproclefttype, amprocrighttype, amprocnum, amproc) + SELECT (select (max(oid)::int + 1)::oid from pg_amproc), c.opcfamily, c.opcintype, c.opcintype, 1, '@extschema@.distance_type_l2'::regproc + FROM pg_opclass c, pg_am a + WHERE a.oid = c.opcmethod AND c.opcname = 'vector_cosine_ops' AND a.amname = 'diskann'; + + CREATE OPERATOR CLASS vector_l2_ops + FOR TYPE vector USING diskann AS + OPERATOR 1 <-> (vector, vector) FOR ORDER BY float_ops, + FUNCTION 1 distance_type_l2(); + END IF; +END; +$$; +/* */ +