diff --git a/bindings/java/rs_src/limbo_statement.rs b/bindings/java/rs_src/limbo_statement.rs index cdd8a5c75..54b1fbb27 100644 --- a/bindings/java/rs_src/limbo_statement.rs +++ b/bindings/java/rs_src/limbo_statement.rs @@ -55,25 +55,21 @@ pub extern "system" fn Java_org_github_tursodatabase_core_LimboStatement_step<'l } }; - match stmt.stmt.step() { - Ok(StepResult::Row(row)) => match row_to_obj_array(&mut env, &row) { - Ok(row) => to_limbo_step_result(&mut env, STEP_RESULT_ID_ROW, Some(row)), - Err(e) => { - set_err_msg_and_throw_exception(&mut env, obj, LIMBO_ETC, e.to_string()); - to_limbo_step_result(&mut env, STEP_RESULT_ID_ERROR, None) - } - }, - Ok(StepResult::IO) => match env.new_object_array(0, "java/lang/Object", JObject::null()) { - Ok(row) => to_limbo_step_result(&mut env, STEP_RESULT_ID_IO, Some(row.into())), - Err(e) => { - set_err_msg_and_throw_exception(&mut env, obj, LIMBO_ETC, e.to_string()); - to_limbo_step_result(&mut env, STEP_RESULT_ID_ERROR, None) - } - }, - Ok(StepResult::Done) => to_limbo_step_result(&mut env, STEP_RESULT_ID_DONE, None), - Ok(StepResult::Interrupt) => to_limbo_step_result(&mut env, STEP_RESULT_ID_INTERRUPT, None), - Ok(StepResult::Busy) => to_limbo_step_result(&mut env, STEP_RESULT_ID_BUSY, None), - _ => to_limbo_step_result(&mut env, STEP_RESULT_ID_ERROR, None), + loop { + match stmt.stmt.step() { + Ok(StepResult::Row(row)) => match row_to_obj_array(&mut env, &row) { + Ok(row) => return to_limbo_step_result(&mut env, STEP_RESULT_ID_ROW, Some(row)), + Err(e) => { + set_err_msg_and_throw_exception(&mut env, obj, LIMBO_ETC, e.to_string()); + return to_limbo_step_result(&mut env, STEP_RESULT_ID_ERROR, None) + } + }, + Ok(StepResult::IO) => {}, + Ok(StepResult::Done) => return to_limbo_step_result(&mut env, STEP_RESULT_ID_DONE, None), + Ok(StepResult::Interrupt) => return to_limbo_step_result(&mut env, STEP_RESULT_ID_INTERRUPT, None), + Ok(StepResult::Busy) => return to_limbo_step_result(&mut env, STEP_RESULT_ID_BUSY, None), + _ => return to_limbo_step_result(&mut env, STEP_RESULT_ID_ERROR, None), + } } }