MCPcopy Create free account
hub / github.com/f0rr0/oliphaunt / vector_extension_server_sqlx_smoke

Function vector_extension_server_sqlx_smoke

tests/extensions_smoke.rs:600–664  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

598
599#[tokio::test(flavor = "multi_thread")]
600async fn vector_extension_server_sqlx_smoke() -> Result<()> {
601 let _trace = TestTrace::new("vector_extension_server_sqlx_smoke");
602 let server = PgliteServer::builder()
603 .temporary()
604 .extension(extensions::VECTOR)
605 .start()?;
606 let mut conn = sqlx::PgConnection::connect(&server.connection_uri()).await?;
607
608 sqlx::query("CREATE TABLE oxide_vec_server (embedding vector(3))")
609 .execute(&mut conn)
610 .await?;
611 sqlx::query("INSERT INTO oxide_vec_server VALUES ('[1,2,3]')")
612 .execute(&mut conn)
613 .await?;
614 let row =
615 sqlx::query("SELECT embedding <-> '[1,2,4]'::vector AS distance FROM oxide_vec_server")
616 .fetch_one(&mut conn)
617 .await?;
618
619 assert_eq!(row.try_get::<f64, _>("distance")?, 1.0);
620
621 trace_expected("vector_server_sqlx division-by-zero");
622 let err = sqlx::query("SELECT 10 / $1::int4 AS impossible_after_vector")
623 .bind(0_i32)
624 .fetch_one(&mut conn)
625 .await
626 .expect_err("division by zero after vector load should fail");
627 assert_sqlx_code(&err, "22012");
628 let row = sqlx::query("SELECT 14::int4 AS recovered_after_vector_error")
629 .fetch_one(&mut conn)
630 .await?;
631 assert_eq!(row.try_get::<i32, _>("recovered_after_vector_error")?, 14);
632
633 trace_expected("vector_server_sqlx invalid-vector-literal");
634 let err = sqlx::query("SELECT $1::text::vector AS embedding")
635 .bind("[hello,1]")
636 .fetch_one(&mut conn)
637 .await
638 .expect_err("invalid vector input through SQLx should fail in the vector extension");
639 assert_sqlx_code(&err, "22P02");
640 let row = sqlx::query("SELECT 18::int4 AS recovered_after_invalid_vector")
641 .fetch_one(&mut conn)
642 .await?;
643 assert_eq!(row.try_get::<i32, _>("recovered_after_invalid_vector")?, 18);
644
645 trace_expected("vector_server_sqlx dimension-mismatch");
646 let err = sqlx::query("SELECT $1::text::vector <-> $2::text::vector AS distance")
647 .bind("[1,2]")
648 .bind("[3]")
649 .fetch_one(&mut conn)
650 .await
651 .expect_err("vector distance should reject mismatched dimensions through SQLx");
652 assert_sqlx_code(&err, "22000");
653 let row = sqlx::query("SELECT 19::int4 AS recovered_after_dimension_mismatch")
654 .fetch_one(&mut conn)
655 .await?;
656 assert_eq!(
657 row.try_get::<i32, _>("recovered_after_dimension_mismatch")?,

Callers

nothing calls this directly

Calls 10

trace_expectedFunction · 0.85
connection_uriMethod · 0.80
executeMethod · 0.80
bindMethod · 0.80
assert_sqlx_codeFunction · 0.70
startMethod · 0.45
extensionMethod · 0.45
temporaryMethod · 0.45
closeMethod · 0.45
shutdownMethod · 0.45

Tested by

no test coverage detected