1
0
mirror of https://github.com/tensorchord/pgvecto.rs.git synced 2025-07-30 19:23:05 +03:00
Files
pgvecto.rs/tests/sqllogictest/svector_binary.slt
Mingzhuo Yin d7a490c900 feat: support sparse vector (#299)
* basic support

Signed-off-by: Mingzhuo Yin <yinmingzhuo@gmail.com>

* cargo clippy

Signed-off-by: Mingzhuo Yin <yinmingzhuo@gmail.com>

* optimize for ivf

Signed-off-by: Mingzhuo Yin <yinmingzhuo@gmail.com>

* patch for merge

Signed-off-by: Mingzhuo Yin <yinmingzhuo@gmail.com>

* set vector cast to non-implicit

Signed-off-by: Mingzhuo Yin <yinmingzhuo@gmail.com>

* add dimension in sparse vector

Signed-off-by: Mingzhuo Yin <yinmingzhuo@gmail.com>

* support creating sparse vector from spilt array and kv string

Signed-off-by: Mingzhuo Yin <yinmingzhuo@gmail.com>

* cargo clippy

Signed-off-by: Mingzhuo Yin <yinmingzhuo@gmail.com>

* move vector type from Storage trait to G trait

Signed-off-by: Mingzhuo Yin <yinmingzhuo@gmail.com>

* export svector function by schema manually

Signed-off-by: Mingzhuo Yin <yinmingzhuo@gmail.com>

* spilt index and value for sparse vector

Signed-off-by: Mingzhuo Yin <yinmingzhuo@gmail.com>

* update offsets from u32 to usize

Signed-off-by: Mingzhuo Yin <yinmingzhuo@gmail.com>

* align SVecf32 to 8 && make SVecf32 support binary

Signed-off-by: Mingzhuo Yin <yinmingzhuo@gmail.com>

* cargo clippy

Signed-off-by: Mingzhuo Yin <yinmingzhuo@gmail.com>

* convert the computation to branchless

Signed-off-by: Mingzhuo Yin <yinmingzhuo@gmail.com>

* refactor

Signed-off-by: Mingzhuo Yin <yinmingzhuo@gmail.com>

* cargo fmt

Signed-off-by: Mingzhuo Yin <yinmingzhuo@gmail.com>

* update to_svector arguments name

Signed-off-by: Mingzhuo Yin <yinmingzhuo@gmail.com>

---------

Signed-off-by: Mingzhuo Yin <yinmingzhuo@gmail.com>
2024-02-18 07:16:32 +00:00

38 lines
933 B
Plaintext

statement ok
SET search_path TO pg_temp, vectors;
statement ok
CREATE TABLE t (id bigserial, val svector);
statement ok
INSERT INTO t (val) SELECT NULL FROM generate_series(1, 1000);
statement ok
INSERT INTO t (val) SELECT ARRAY[random()]::real[]::vector::svector FROM generate_series(1, 1000);
statement ok
INSERT INTO t (val) SELECT ARRAY[random(), random()]::real[]::vector::svector FROM generate_series(1, 1000);
statement ok
INSERT INTO t (val) SELECT ARRAY[random(), random(), random()]::real[]::vector::svector FROM generate_series(1, 1000);
statement ok
COPY t TO '/tmp/data.bin' WITH (FORMAT binary);
statement ok
CREATE TABLE t2 (id bigserial, val svector);
statement ok
COPY t2 FROM '/tmp/data.bin' WITH (FORMAT binary);
query I
SELECT SUM(((t.val = t2.val) OR (t.val IS NULL and t2.val IS NULL))::int) FROM t FULL OUTER JOIN t2 ON t.id = t2.id;
----
4000
statement ok
DROP TABLE t;
statement ok
DROP TABLE t2;