Skip to content

Commit 7f70e71

Browse files
authored
Update sqlite-wasm-vec documentation (#163)
1 parent 6b6d183 commit 7f70e71

File tree

5 files changed

+20
-99
lines changed

5 files changed

+20
-99
lines changed

.vscode/settings.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
{
2+
"rust-analyzer.cargo.target": "wasm32-unknown-unknown",
23
"rust-analyzer.cargo.features": ["bindgen"]
34
}

crates/rsqlite-vfs/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ thiserror = { version = "2.0.12", default-features = false }
1414
[target.'cfg(not(all(target_family = "wasm", target_os = "unknown")))'.dependencies]
1515
# libsqlite3-sys doesn't compile without features
1616
# see https://github.com/rusqlite/rusqlite/issues/1205
17-
libsqlite3-sys = { version = "0.35.0", default-features = false, features = ["vcpkg", "pkg-config"] }
17+
libsqlite3-sys = { version = "0.36.0", default-features = false, features = ["vcpkg", "pkg-config"] }
1818

1919
[target.'cfg(all(target_family = "wasm", target_os = "unknown"))'.dependencies]
2020
wsqlite3-sys = { default-features = false, path = "../wsqlite3-sys" }

extensions/sqlite-vec/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ keywords = ["sqlite", "sqlite-wasm", "wasm", "webassembly", "sqlite-vec"]
1717
cc = "1.2.44"
1818

1919
[dev-dependencies]
20-
sqlite-wasm-rs = { path = "../../" }
2120
wasm-bindgen-test = "0.3.55"
21+
rusqlite = "0.38.0"
2222

2323
[package.metadata.docs.rs]
2424
targets = ["wasm32-unknown-unknown"]

extensions/sqlite-vec/README.md

Lines changed: 6 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -7,62 +7,22 @@
77
```toml
88
[dependencies]
99
sqlite-wasm-vec = "0.1"
10-
sqlite-wasm-rs = "0.5"
10+
rusqlite = "0.38.0"
1111
```
1212

1313
```rust
14-
use std::ffi::CStr;
1514
use sqlite_wasm_vec::sqlite3_vec_init;
16-
use sqlite_wasm_rs::{
17-
sqlite3_auto_extension, sqlite3_close, sqlite3_column_count, sqlite3_column_text,
18-
sqlite3_column_type, sqlite3_finalize, sqlite3_open_v2, sqlite3_prepare_v3, sqlite3_step,
19-
SQLITE_OK, SQLITE_OPEN_CREATE, SQLITE_OPEN_READWRITE, SQLITE_ROW, SQLITE_TEXT,
20-
};
15+
use rusqlite::{ffi::sqlite3_auto_extension, Connection};
2116

17+
#[test]
2218
fn vec_version() -> String {
2319
unsafe {
2420
sqlite3_auto_extension(Some(std::mem::transmute(sqlite3_vec_init as *const ())));
2521
}
2622

27-
let mut db = std::ptr::null_mut();
28-
let ret = unsafe {
29-
sqlite3_open_v2(
30-
c":memory:".as_ptr().cast(),
31-
&mut db as *mut _,
32-
SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE,
33-
std::ptr::null(),
34-
)
35-
};
36-
assert_eq!(ret, SQLITE_OK);
23+
let conn = Connection::open_in_memory().unwrap();
3724

38-
let sql = c"select vec_version();";
39-
let mut stmt = std::ptr::null_mut();
40-
let ret = unsafe {
41-
sqlite3_prepare_v3(
42-
db,
43-
sql.as_ptr().cast(),
44-
-1,
45-
0,
46-
&mut stmt as *mut _,
47-
std::ptr::null_mut(),
48-
)
49-
};
50-
assert_eq!(ret, SQLITE_OK);
51-
52-
unsafe {
53-
assert_eq!(sqlite3_step(stmt), SQLITE_ROW);
54-
let count = sqlite3_column_count(stmt);
55-
assert_eq!(count, 1);
56-
let ty = sqlite3_column_type(stmt, 0);
57-
assert_eq!(ty, SQLITE_TEXT);
58-
let s = CStr::from_ptr(sqlite3_column_text(stmt, 0).cast())
59-
.to_str()
60-
.unwrap();
61-
assert!(s.starts_with('v'));
62-
sqlite3_finalize(stmt);
63-
sqlite3_close(db);
64-
s.to_string()
65-
}
25+
conn.query_row("select vec_version()", [], |x| x.get(0))
26+
.unwrap()
6627
}
67-
6828
```

extensions/sqlite-vec/src/lib.rs

Lines changed: 11 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#![doc = include_str!("../README.md")]
2-
#![no_std]
2+
#![cfg_attr(not(test), no_std)]
33

44
#[link(name = "wsqlite_vec0")]
55
extern "C" {
@@ -8,62 +8,22 @@ extern "C" {
88

99
#[cfg(test)]
1010
mod tests {
11-
use core::ffi::CStr;
11+
use super::*;
1212

13-
use crate::sqlite3_vec_init;
14-
use sqlite_wasm_rs::{
15-
sqlite3_auto_extension, sqlite3_close, sqlite3_column_count, sqlite3_column_text,
16-
sqlite3_column_type, sqlite3_finalize, sqlite3_open_v2, sqlite3_prepare_v3, sqlite3_step,
17-
SQLITE_OK, SQLITE_OPEN_CREATE, SQLITE_OPEN_READWRITE, SQLITE_ROW, SQLITE_TEXT,
18-
};
19-
use wasm_bindgen_test::wasm_bindgen_test;
13+
use rusqlite::{ffi::sqlite3_auto_extension, Connection};
2014

21-
#[wasm_bindgen_test]
22-
fn test_auto_extension() {
15+
#[wasm_bindgen_test::wasm_bindgen_test]
16+
fn test_rusqlite_auto_extension() {
2317
unsafe {
24-
sqlite3_auto_extension(Some(core::mem::transmute(sqlite3_vec_init as *const ())));
18+
sqlite3_auto_extension(Some(std::mem::transmute(sqlite3_vec_init as *const ())));
2519
}
2620

27-
let mut db = core::ptr::null_mut();
28-
let ret = unsafe {
29-
sqlite3_open_v2(
30-
c":memory:".as_ptr().cast(),
31-
&mut db as *mut _,
32-
SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE,
33-
core::ptr::null(),
34-
)
35-
};
36-
assert_eq!(ret, SQLITE_OK);
21+
let conn = Connection::open_in_memory().unwrap();
3722

38-
let sql = c"select vec_version();";
39-
let mut stmt = core::ptr::null_mut();
40-
let ret = unsafe {
41-
sqlite3_prepare_v3(
42-
db,
43-
sql.as_ptr().cast(),
44-
-1,
45-
0,
46-
&mut stmt as *mut _,
47-
core::ptr::null_mut(),
48-
)
49-
};
50-
assert_eq!(ret, SQLITE_OK);
23+
let result: String = conn
24+
.query_row("select vec_version()", [], |x| x.get(0))
25+
.unwrap();
5126

52-
unsafe {
53-
assert_eq!(sqlite3_step(stmt), SQLITE_ROW);
54-
let count = sqlite3_column_count(stmt);
55-
assert_eq!(count, 1);
56-
let ty = sqlite3_column_type(stmt, 0);
57-
assert_eq!(ty, SQLITE_TEXT);
58-
let s = CStr::from_ptr(sqlite3_column_text(stmt, 0).cast())
59-
.to_str()
60-
.unwrap();
61-
assert!(s.starts_with('v'));
62-
sqlite3_finalize(stmt);
63-
}
64-
65-
unsafe {
66-
sqlite3_close(db);
67-
}
27+
assert!(result.starts_with("v"));
6828
}
6929
}

0 commit comments

Comments
 (0)