From 6ecb5831f49bbc5b1b693c1b223a2a3b7e346b69 Mon Sep 17 00:00:00 2001 From: Vraj Shah <89588024+Vrajs16@users.noreply.github.com> Date: Tue, 7 Nov 2023 23:05:11 -0500 Subject: [PATCH] Update Faq - Bulk upsert with optional fields (#2865) * Update Faq - Bulk upsert with optional fields * Applied Suggestion + fixed typo --- FAQ.md | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/FAQ.md b/FAQ.md index f09f23c24..40ebb39c1 100644 --- a/FAQ.md +++ b/FAQ.md @@ -140,15 +140,23 @@ sqlx::query!( let foo_texts: Vec = vec![/* ... */]; let foo_bools: Vec = vec![/* ... */]; let foo_ints: Vec = vec![/* ... */]; +let foo_opt_texts: Vec> = vec![/* ... */]; +let foo_opt_naive_dts: Vec> = vec![/* ... */] + sqlx::query!( " - INSERT INTO foo(text_column, bool_column, int_column) - SELECT * FROM UNNEST($1::text[], $2::bool[], $3::int8[]) + INSERT INTO foo(text_column, bool_column, int_column, opt_text_column, opt_naive_dt_column) + SELECT * FROM UNNEST($1::text[], $2::bool[], $3::int8[], $4::text[], $5::timestamp[]) ", &foo_texts[..], &foo_bools[..], - &foo_ints[..] + &foo_ints[..], + // Due to a limitation in how SQLx typechecks query parameters, `Vec>` is unable to be typechecked. + // This demonstrates the explicit type override syntax, which tells SQLx not to typecheck these parameters. + // See the documentation for `query!()` for more details. + &foo_opt_texts as &[Option], + &foo_opt_naive_dts as &[Option] ) .execute(&db) .await?;