diff --git a/src/row.rs b/src/row.rs index 67c7c87..9847a76 100644 --- a/src/row.rs +++ b/src/row.rs @@ -221,7 +221,7 @@ impl<'stmt> Row<'stmt> { /// 16 bytes, `Error::InvalidColumnType` will also be returned. pub fn get(&self, idx: I) -> Result { let idx = idx.idx(self.stmt)?; - let value = self.stmt.value_ref(idx)?; + let value = self.stmt.value_ref(idx); FromSql::column_result(value).map_err(|err| match err { FromSqlError::InvalidType => { Error::InvalidColumnType(idx, self.stmt.column_name(idx).into(), value.data_type()) @@ -262,7 +262,7 @@ impl<'stmt> Row<'stmt> { // returns) to `ValueRef<'a>` is needed because it's only valid until // the next call to sqlite3_step. let val_ref = self.stmt.value_ref(idx); - val_ref + Ok(val_ref) } /// Get the value of a particular column of the result row as a `ValueRef`, diff --git a/src/statement.rs b/src/statement.rs index 19837f0..d3be4c4 100644 --- a/src/statement.rs +++ b/src/statement.rs @@ -601,10 +601,10 @@ impl Statement<'_> { Statement { conn, stmt } } - pub(crate) fn value_ref(&self, col: usize) -> Result> { + pub(crate) fn value_ref(&self, col: usize) -> ValueRef<'_> { let raw = unsafe { self.stmt.ptr() }; - Ok(match self.stmt.column_type(col) { + match self.stmt.column_type(col) { ffi::SQLITE_NULL => ValueRef::Null, ffi::SQLITE_INTEGER => { ValueRef::Integer(unsafe { ffi::sqlite3_column_int64(raw, col as c_int) }) @@ -624,7 +624,8 @@ impl Statement<'_> { // sqlite3_column_text returns UTF8 data, so our unwrap here should be fine. let s = s - .to_str()?; + .to_str() + .expect("sqlite3_column_text returned invalid UTF-8"); ValueRef::Text(s) } ffi::SQLITE_BLOB => { @@ -652,7 +653,7 @@ impl Statement<'_> { } } _ => unreachable!("sqlite3_column_type returned invalid value"), - }) + } } pub(crate) fn step(&self) -> Result {