@@ -121,4 +121,41 @@ mod tests {
121121 row.get("schema"),
122122 ))
123123 }
124+
125+ #[tokio::test]
126+ async fn tokio_works() -> Result<(), tokio_postgres::Error> {
127+ let (client, connection) =
128+ tokio_postgres::connect("host=localhost dbname=pgvector_rust_test", tokio_postgres::NoTls).await?;
129+
130+ tokio::spawn(async move {
131+ if let Err(e) = connection.await {
132+ eprintln!("connection error: {}", e);
133+ }
134+ });
135+
136+ client.execute("CREATE EXTENSION IF NOT EXISTS vector", &[]).await?;
137+ client.execute("DROP TABLE IF EXISTS tokio_postgres_items", &[]).await?;
138+ client.execute(
139+ "CREATE TABLE tokio_postgres_items (id bigserial PRIMARY KEY, embedding vector(3))",
140+ &[],
141+ ).await?;
142+
143+ let vec = Vector::from(vec![1.0, 2.0, 3.0]);
144+ let vec2 = Vector::from(vec![4.0, 5.0, 6.0]);
145+ client.execute(
146+ "INSERT INTO tokio_postgres_items (embedding) VALUES ($1), ($2), (NULL)",
147+ &[&vec, &vec2],
148+ ).await?;
149+
150+ let query_vec = Vector::from(vec![3.0, 1.0, 2.0]);
151+ let row = client.query_one(
152+ "SELECT embedding FROM tokio_postgres_items ORDER BY embedding <-> $1 LIMIT 1",
153+ &[&query_vec],
154+ ).await?;
155+ let res_vec: Vector = row.get(0);
156+ assert_eq!(vec, res_vec);
157+ assert_eq!(vec![1.0, 2.0, 3.0], res_vec.to_vec());
158+
159+ Ok(())
160+ }
124161}
0 commit comments