Introduce NO_PARAMS constant

As suggested here:
https://users.rust-lang.org/t/sql-parameter-values/20469/2
This commit is contained in:
gwenn
2018-09-16 11:10:19 +02:00
parent c4ae541eac
commit e7e03c3443
15 changed files with 152 additions and 208 deletions

View File

@@ -14,8 +14,7 @@
//! extern crate regex;
//!
//! use regex::Regex;
//! use rusqlite::types::ToSql;
//! use rusqlite::{Connection, Error, Result};
//! use rusqlite::{Connection, Error, Result, NO_PARAMS};
//! use std::collections::HashMap;
//!
//! fn add_regexp_function(db: &Connection) -> Result<()> {
@@ -46,7 +45,7 @@
//! let is_match: bool = db
//! .query_row(
//! "SELECT regexp('[aeiou]*', 'aaaaeeeiii')",
//! &[] as &[&ToSql],
//! NO_PARAMS,
//! |row| row.get(0),
//! ).unwrap();
//!
@@ -212,15 +211,14 @@ impl Connection {
/// # Example
///
/// ```rust
/// # use rusqlite::types::ToSql;
/// # use rusqlite::{Connection, Result};
/// # use rusqlite::{Connection, Result, NO_PARAMS};
/// fn scalar_function_example(db: Connection) -> Result<()> {
/// try!(db.create_scalar_function("halve", 1, true, |ctx| {
/// let value = try!(ctx.get::<f64>(0));
/// Ok(value / 2f64)
/// }));
///
/// let six_halved: f64 = try!(db.query_row("SELECT halve(6)", &[] as &[&ToSql], |r| r.get(0)));
/// let six_halved: f64 = try!(db.query_row("SELECT halve(6)", NO_PARAMS, |r| r.get(0)));
/// assert_eq!(six_halved, 3f64);
/// Ok(())
/// }
@@ -482,8 +480,7 @@ mod test {
use std::os::raw::c_double;
use functions::{Aggregate, Context};
use types::ToSql;
use {Connection, Error, Result};
use {Connection, Error, Result, NO_PARAMS};
fn half(ctx: &Context) -> Result<c_double> {
assert!(ctx.len() == 1, "called with unexpected number of arguments");
@@ -495,7 +492,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)", &[] as &[&ToSql], |r| r.get(0));
let result: Result<f64> = db.query_row("SELECT half(6)", NO_PARAMS, |r| r.get(0));
assert!((3f64 - result.unwrap()).abs() < EPSILON);
}
@@ -504,11 +501,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)", &[] as &[&ToSql], |r| r.get(0));
let result: Result<f64> = db.query_row("SELECT half(6)", NO_PARAMS, |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)", &[] as &[&ToSql], |r| r.get(0));
let result: Result<f64> = db.query_row("SELECT half(6)", NO_PARAMS, |r| r.get(0));
assert!(result.is_err());
}
@@ -558,17 +555,16 @@ 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')",
&[] as &[&ToSql],
|r| r.get(0),
);
let result: Result<bool> =
db.query_row("SELECT regexp('l.s[aeiouy]', 'lisa')", NO_PARAMS, |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],
NO_PARAMS,
|r| r.get(0),
);
@@ -611,17 +607,16 @@ mod test {
Ok(regex.is_match(&text))
}).unwrap();
let result: Result<bool> = db.query_row(
"SELECT regexp('l.s[aeiouy]', 'lisa')",
&[] as &[&ToSql],
|r| r.get(0),
);
let result: Result<bool> =
db.query_row("SELECT regexp('l.s[aeiouy]', 'lisa')", NO_PARAMS, |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],
NO_PARAMS,
|r| r.get(0),
);
@@ -647,7 +642,7 @@ mod test {
("onetwo", "SELECT my_concat('one', 'two')"),
("abc", "SELECT my_concat('a', 'b', 'c')"),
] {
let result: String = db.query_row(query, &[] as &[&ToSql], |r| r.get(0)).unwrap();
let result: String = db.query_row(query, NO_PARAMS, |r| r.get(0)).unwrap();
assert_eq!(expected, result);
}
}
@@ -693,21 +688,17 @@ 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, &[] as &[&ToSql], |r| r.get(0))
.unwrap();
let result: Option<i64> = db.query_row(no_result, NO_PARAMS, |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, &[] as &[&ToSql], |r| r.get(0))
.unwrap();
let result: i64 = db.query_row(single_sum, NO_PARAMS, |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, &[] as &[&ToSql], |r| (r.get(0), r.get(1)))
.query_row(dual_sum, NO_PARAMS, |r| (r.get(0), r.get(1)))
.unwrap();
assert_eq!((4, 2), result);
}
@@ -720,15 +711,11 @@ 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, &[] as &[&ToSql], |r| r.get(0))
.unwrap();
let result: i64 = db.query_row(no_result, NO_PARAMS, |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, &[] as &[&ToSql], |r| r.get(0))
.unwrap();
let result: i64 = db.query_row(single_sum, NO_PARAMS, |r| r.get(0)).unwrap();
assert_eq!(2, result);
}
}