diff --git a/src/session.rs b/src/session.rs index fc8a9e7..6c92aea 100644 --- a/src/session.rs +++ b/src/session.rs @@ -809,7 +809,9 @@ mod test { assert!(!called.load(Ordering::Relaxed)); let check = db - .query_row("SELECT 1 FROM foo WHERE t = ?", &["bar"], |row| row.get::<_, i32>(0)) + .query_row("SELECT 1 FROM foo WHERE t = ?", &["bar"], |row| { + row.get::<_, i32>(0) + }) .unwrap(); assert_eq!(1, check); @@ -845,7 +847,9 @@ mod test { .unwrap(); let check = db - .query_row("SELECT 1 FROM foo WHERE t = ?", &["bar"], |row| row.get::<_, i32>(0)) + .query_row("SELECT 1 FROM foo WHERE t = ?", &["bar"], |row| { + row.get::<_, i32>(0) + }) .unwrap(); assert_eq!(1, check); } diff --git a/src/statement.rs b/src/statement.rs index efda864..3505124 100644 --- a/src/statement.rs +++ b/src/statement.rs @@ -709,6 +709,7 @@ pub enum StatementStatus { #[cfg(test)] mod test { + use crate::types::ToSql; use crate::{Connection, Error, Result, NO_PARAMS}; #[test] @@ -991,4 +992,40 @@ mod test { stmt.bind_parameter(&1, 1).unwrap(); assert_eq!(Some("SELECT 1"), stmt.expanded_sql()); } + + #[test] + fn test_bind_parameters() { + let db = Connection::open_in_memory().unwrap(); + // dynamic slice: + db.query_row( + "SELECT ?1, ?2, ?3", + &[&1u8 as &ToSql, &"one", &Some("one")], + |row| row.get::<_, u8>(0), + ) + .unwrap(); + // existing collection: + let data = vec![1, 2, 3]; + db.query_row("SELECT ?1, ?2, ?3", &data, |row| row.get::<_, u8>(0)) + .unwrap(); + db.query_row("SELECT ?1, ?2, ?3", data.as_slice(), |row| { + row.get::<_, u8>(0) + }) + .unwrap(); + db.query_row("SELECT ?1, ?2, ?3", data, |row| row.get::<_, u8>(0)) + .unwrap(); + + use std::collections::BTreeSet; + let data: BTreeSet = ["one", "two", "three"] + .into_iter() + .map(|s| s.to_string()) + .collect(); + db.query_row("SELECT ?1, ?2, ?3", &data, |row| row.get::<_, String>(0)) + .unwrap(); + + let data = [0; 3]; + db.query_row("SELECT ?1, ?2, ?3", &data, |row| row.get::<_, u8>(0)) + .unwrap(); + db.query_row("SELECT ?1, ?2, ?3", data.iter(), |row| row.get::<_, u8>(0)) + .unwrap(); + } }