From 6e2218c3ed10141b911aa839eec9c5963b31780d Mon Sep 17 00:00:00 2001 From: Jussi Saurio Date: Thu, 31 Jul 2025 11:57:17 +0300 Subject: [PATCH] fix/bindings/rust: return errors instead of swallowing them and returning None --- bindings/rust/src/lib.rs | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/bindings/rust/src/lib.rs b/bindings/rust/src/lib.rs index a9fd2c062..813bf11dc 100644 --- a/bindings/rust/src/lib.rs +++ b/bindings/rust/src/lib.rs @@ -477,23 +477,26 @@ impl Rows { .inner .lock() .map_err(|e| Error::MutexError(e.to_string()))?; - match stmt.step() { - Ok(turso_core::StepResult::Row) => { + match stmt.step()? { + turso_core::StepResult::Row => { let row = stmt.row().unwrap(); return Ok(Some(Row { values: row.get_values().map(|v| v.to_owned()).collect(), })); } - Ok(turso_core::StepResult::Done) => return Ok(None), - Ok(turso_core::StepResult::IO) => { + turso_core::StepResult::Done => return Ok(None), + turso_core::StepResult::IO => { if let Err(e) = stmt.run_once() { return Err(e.into()); } continue; } - Ok(turso_core::StepResult::Busy) => return Ok(None), - Ok(turso_core::StepResult::Interrupt) => return Ok(None), - _ => return Ok(None), + turso_core::StepResult::Busy => { + return Err(Error::SqlExecutionFailure("database is locked".to_string())) + } + turso_core::StepResult::Interrupt => { + return Err(Error::SqlExecutionFailure("interrupted".to_string())) + } } } }