mirror of
https://github.com/isar/rusqlite.git
synced 2025-10-20 15:18:58 +08:00
Take IntoIterator rather than &[&ToSql]
(#312)
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user