Skip to content

Commit

Permalink
Only check column count when DONE.
Browse files Browse the repository at this point in the history
  • Loading branch information
gwenn committed Aug 1, 2015
1 parent 1dc144c commit c31c68d
Showing 1 changed file with 14 additions and 9 deletions.
23 changes: 14 additions & 9 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -625,13 +625,18 @@ impl<'conn> SqliteStatement<'conn> {

self.needs_reset = true;
let r = ffi::sqlite3_step(self.stmt);
if r == ffi::SQLITE_ROW || self.column_count() != 0 {
Err(SqliteError{ code: r,
message: "Unexpected row result - did you mean to call query?".to_string() })
} else if r == ffi::SQLITE_DONE {
Ok(self.conn.changes())
} else {
Err(self.conn.decode_result(r).unwrap_err())
match r {
ffi::SQLITE_DONE => {
if self.column_count() != 0 {
Err(SqliteError{ code: ffi::SQLITE_MISUSE,
message: "Unexpected column count - did you mean to call query?".to_string() })
} else {
Ok(self.conn.changes())
}
},
ffi::SQLITE_ROW => Err(SqliteError{ code: r,
message: "Unexpected row result - did you mean to call query?".to_string() }),
_ => Err(self.conn.decode_result(r).unwrap_err()),
}
}
}
Expand Down Expand Up @@ -1003,8 +1008,8 @@ mod test {
fn test_execute_select() {
let db = checked_memory_handle();
let err = db.execute("SELECT 1 WHERE 1 < ?", &[&1i32]).unwrap_err();
assert!(err.code == ffi::SQLITE_DONE);
assert!(err.message == "Unexpected row result - did you mean to call query?");
assert!(err.code == ffi::SQLITE_MISUSE);
assert!(err.message == "Unexpected column count - did you mean to call query?");
}

#[test]
Expand Down

0 comments on commit c31c68d

Please sign in to comment.