Skip to content

Commit 963256b

Browse files
committed
add backward compatibility test for on-disk format of vector index
1 parent b11c0c5 commit 963256b

File tree

3 files changed

+33
-1
lines changed

3 files changed

+33
-1
lines changed

libsql-sqlite3/.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,10 @@ libsql.pc
4141
/sqlite3session.h
4242
tclsqlite.lo
4343
tclsqlite.o
44-
testdir/
44+
45+
testdir/*
46+
!testdir/libsql_vector_index_v2.db
47+
4548
tsrc/
4649
dbhash
4750
fuzzcheck

libsql-sqlite3/test/libsql_vector_index.test

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -531,3 +531,32 @@ do_execsql_test vector-index-attach-query {
531531
ATTACH DATABASE 'test2.db' AS t;
532532
SELECT * FROM vector_top_k('t.t_attach_idx', vector('[3,4,5]'), 4);
533533
} {3 4 2 1}
534+
535+
# v2.db created with simple command (with LibSQL built from commit 4a5f373a298cc751d9ca56662eaaf879eefff279):
536+
# ./sqlite3 v2.db --cmd "CREATE TABLE t (id TEXT, e FLOAT32(4)); CREATE INDEX t_idx ON t (libsql_vector_idx(e)); INSERT INTO t VALUES ('a', vector32('[1,2,3,4]')), ('b', vector32('[-100,-100,-100,-100]')), ('c', vector32('[10,10,-10,-10]')), ('d', vector32('[-1,2,3,4]'))"
537+
sqlite3 dbv2 libsql_vector_index_v2.db
538+
539+
# select version and check that it equals to 2
540+
do_test vector-index-v2-read {
541+
execsql { SELECT substr(hex(metadata), 0, 18) FROM libsql_vector_meta_shadow WHERE name = 't_idx'; } dbv2
542+
} {01020000000000000}
543+
544+
do_test vector-index-v2-read {
545+
execsql { SELECT vector_extract(e) FROM t; } dbv2
546+
} {{[1,2,3,4]} {[-100,-100,-100,-100]} {[10,10,-10,-10]} {[-1,2,3,4]}}
547+
548+
do_test vector-index-v2-query-1 {
549+
execsql { SELECT t.id FROM vector_top_k('t_idx', vector('[1,1,1,1]'), 3) i INNER JOIN t ON t.rowid = i.id; } dbv2
550+
} {a d c}
551+
552+
do_test vector-index-v2-query-2 {
553+
execsql { SELECT t.id FROM vector_top_k('t_idx', vector('[-1,-1,-1,-1]'), 3) i INNER JOIN t ON t.rowid = i.id; } dbv2
554+
} {b c d}
555+
556+
do_test vector-index-v2-query-3 {
557+
execsql { SELECT t.id FROM vector_top_k('t_idx', vector('[1,1,-1,-1]'), 3) i INNER JOIN t ON t.rowid = i.id; } dbv2
558+
} {c b a}
559+
560+
do_test vector-index-v2-query-4 {
561+
execsql { SELECT t.id FROM vector_top_k('t_idx', vector('[-1,1,1,1]'), 3) i INNER JOIN t ON t.rowid = i.id; } dbv2
562+
} {d a c}
24 KB
Binary file not shown.

0 commit comments

Comments
 (0)