@@ -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