Changes for core review

This commit is contained in:
Jayson Reis 2018-07-10 21:32:29 +02:00
parent beda4c82c8
commit 4fa8989faa
2 changed files with 18 additions and 11 deletions

View File

@ -55,16 +55,17 @@ impl<'l> Statement<'l> {
unsafe { ffi::sqlite3_column_count(self.raw.0) as usize }
}
/// Return the name of a column in the statement
/// Return the name of a column.
#[inline]
pub fn column_name(&self, i: usize) -> &str {
debug_assert!(i < self.columns(), format!("column position has to be between 0 and {}", self.columns() - 1));
unsafe {
let ret = ffi::sqlite3_column_name(self.raw.0, i as c_int);
c_str_to_str!(ret).unwrap()
}
}
/// Return column names in the statement
/// Return column names.
#[inline]
pub fn column_names(&self) -> Vec<&str> {
(0..self.columns()).map(|i| self.column_name(i)).collect()

View File

@ -137,22 +137,28 @@ fn cursor_workflow() {
#[test]
fn statement_columns() {
let connection = setup_users(":memory:");
let statement = "SELECT id, name, age, photo as user_photo FROM users";
let statement = "SELECT * FROM users";
let mut statement = ok!(connection.prepare(statement));
assert_eq!(statement.columns(), 4);
{
let column_names = statement.column_names();
assert_eq!(column_names, vec!["id", "name", "age", "user_photo"]);
assert_eq!("user_photo", statement.column_name(3));
}
assert_eq!(ok!(statement.next()), State::Row);
assert_eq!(statement.columns(), 4);
}
#[test]
fn statement_column_name() {
let connection = setup_users(":memory:");
let statement = "SELECT id, name, age, photo as user_photo FROM users";
let statement = ok!(connection.prepare(statement));
assert_eq!(statement.columns(), 4);
let column_names = statement.column_names();
assert_eq!(column_names, vec!["id", "name", "age", "user_photo"]);
assert_eq!("user_photo", statement.column_name(3));
}
#[test]
fn statement_kind() {
let connection = setup_users(":memory:");