Take IntoIterator rather than &[&ToSql] (#312)

This commit is contained in:
gwenn
2018-09-16 09:49:23 +02:00
parent bd1756adef
commit c4ae541eac
18 changed files with 341 additions and 235 deletions

View File

@@ -14,6 +14,7 @@
//! extern crate regex;
//!
//! use regex::Regex;
//! use rusqlite::types::ToSql;
//! use rusqlite::{Connection, Error, Result};
//! use std::collections::HashMap;
//!
@@ -43,9 +44,11 @@
//! add_regexp_function(&db).unwrap();
//!
//! let is_match: bool = db
//! .query_row("SELECT regexp('[aeiou]*', 'aaaaeeeiii')", &[], |row| {
//! row.get(0)
//! }).unwrap();
//! .query_row(
//! "SELECT regexp('[aeiou]*', 'aaaaeeeiii')",
//! &[] as &[&ToSql],
//! |row| row.get(0),
//! ).unwrap();
//!
//! assert!(is_match);
//! }
@@ -209,6 +212,7 @@ impl Connection {
/// # Example
///
/// ```rust
/// # use rusqlite::types::ToSql;
/// # use rusqlite::{Connection, Result};
/// fn scalar_function_example(db: Connection) -> Result<()> {
/// try!(db.create_scalar_function("halve", 1, true, |ctx| {
@@ -216,7 +220,7 @@ impl Connection {
/// Ok(value / 2f64)
/// }));
///
/// let six_halved: f64 = try!(db.query_row("SELECT halve(6)", &[], |r| r.get(0)));
/// let six_halved: f64 = try!(db.query_row("SELECT halve(6)", &[] as &[&ToSql], |r| r.get(0)));
/// assert_eq!(six_halved, 3f64);
/// Ok(())
/// }
@@ -478,6 +482,7 @@ mod test {
use std::os::raw::c_double;
use functions::{Aggregate, Context};
use types::ToSql;
use {Connection, Error, Result};
fn half(ctx: &Context) -> Result<c_double> {
@@ -490,7 +495,7 @@ mod test {
fn test_function_half() {
let db = Connection::open_in_memory().unwrap();
db.create_scalar_function("half", 1, true, half).unwrap();
let result: Result<f64> = db.query_row("SELECT half(6)", &[], |r| r.get(0));
let result: Result<f64> = db.query_row("SELECT half(6)", &[] as &[&ToSql], |r| r.get(0));
assert!((3f64 - result.unwrap()).abs() < EPSILON);
}
@@ -499,11 +504,11 @@ mod test {
fn test_remove_function() {
let db = Connection::open_in_memory().unwrap();
db.create_scalar_function("half", 1, true, half).unwrap();
let result: Result<f64> = db.query_row("SELECT half(6)", &[], |r| r.get(0));
let result: Result<f64> = db.query_row("SELECT half(6)", &[] as &[&ToSql], |r| r.get(0));
assert!((3f64 - result.unwrap()).abs() < EPSILON);
db.remove_function("half", 1).unwrap();
let result: Result<f64> = db.query_row("SELECT half(6)", &[], |r| r.get(0));
let result: Result<f64> = db.query_row("SELECT half(6)", &[] as &[&ToSql], |r| r.get(0));
assert!(result.is_err());
}
@@ -553,14 +558,17 @@ mod test {
db.create_scalar_function("regexp", 2, true, regexp_with_auxilliary)
.unwrap();
let result: Result<bool> =
db.query_row("SELECT regexp('l.s[aeiouy]', 'lisa')", &[], |r| r.get(0));
let result: Result<bool> = db.query_row(
"SELECT regexp('l.s[aeiouy]', 'lisa')",
&[] as &[&ToSql],
|r| r.get(0),
);
assert_eq!(true, result.unwrap());
let result: Result<i64> = db.query_row(
"SELECT COUNT(*) FROM foo WHERE regexp('l.s[aeiouy]', x) == 1",
&[],
&[] as &[&ToSql],
|r| r.get(0),
);
@@ -603,14 +611,17 @@ mod test {
Ok(regex.is_match(&text))
}).unwrap();
let result: Result<bool> =
db.query_row("SELECT regexp('l.s[aeiouy]', 'lisa')", &[], |r| r.get(0));
let result: Result<bool> = db.query_row(
"SELECT regexp('l.s[aeiouy]', 'lisa')",
&[] as &[&ToSql],
|r| r.get(0),
);
assert_eq!(true, result.unwrap());
let result: Result<i64> = db.query_row(
"SELECT COUNT(*) FROM foo WHERE regexp('l.s[aeiouy]', x) == 1",
&[],
&[] as &[&ToSql],
|r| r.get(0),
);
@@ -636,7 +647,7 @@ mod test {
("onetwo", "SELECT my_concat('one', 'two')"),
("abc", "SELECT my_concat('a', 'b', 'c')"),
] {
let result: String = db.query_row(query, &[], |r| r.get(0)).unwrap();
let result: String = db.query_row(query, &[] as &[&ToSql], |r| r.get(0)).unwrap();
assert_eq!(expected, result);
}
}
@@ -682,17 +693,21 @@ mod test {
// sum should return NULL when given no columns (contrast with count below)
let no_result = "SELECT my_sum(i) FROM (SELECT 2 AS i WHERE 1 <> 1)";
let result: Option<i64> = db.query_row(no_result, &[], |r| r.get(0)).unwrap();
let result: Option<i64> = db
.query_row(no_result, &[] as &[&ToSql], |r| r.get(0))
.unwrap();
assert!(result.is_none());
let single_sum = "SELECT my_sum(i) FROM (SELECT 2 AS i UNION ALL SELECT 2)";
let result: i64 = db.query_row(single_sum, &[], |r| r.get(0)).unwrap();
let result: i64 = db
.query_row(single_sum, &[] as &[&ToSql], |r| r.get(0))
.unwrap();
assert_eq!(4, result);
let dual_sum = "SELECT my_sum(i), my_sum(j) FROM (SELECT 2 AS i, 1 AS j UNION ALL SELECT \
2, 1)";
let result: (i64, i64) = db
.query_row(dual_sum, &[], |r| (r.get(0), r.get(1)))
.query_row(dual_sum, &[] as &[&ToSql], |r| (r.get(0), r.get(1)))
.unwrap();
assert_eq!((4, 2), result);
}
@@ -705,11 +720,15 @@ mod test {
// count should return 0 when given no columns (contrast with sum above)
let no_result = "SELECT my_count(i) FROM (SELECT 2 AS i WHERE 1 <> 1)";
let result: i64 = db.query_row(no_result, &[], |r| r.get(0)).unwrap();
let result: i64 = db
.query_row(no_result, &[] as &[&ToSql], |r| r.get(0))
.unwrap();
assert_eq!(result, 0);
let single_sum = "SELECT my_count(i) FROM (SELECT 2 AS i UNION ALL SELECT 2)";
let result: i64 = db.query_row(single_sum, &[], |r| r.get(0)).unwrap();
let result: i64 = db
.query_row(single_sum, &[] as &[&ToSql], |r| r.get(0))
.unwrap();
assert_eq!(2, result);
}
}