From 78a89f0fd389eea0d2f3f4107fe4e7ae4fcce61b Mon Sep 17 00:00:00 2001 From: pedrocarlo Date: Mon, 11 Aug 2025 14:13:50 -0300 Subject: [PATCH] execute should create an Statement --- core/lib.rs | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/core/lib.rs b/core/lib.rs index 3463a274f..95869a122 100644 --- a/core/lib.rs +++ b/core/lib.rs @@ -980,15 +980,20 @@ impl Connection { input, )?; - let mut state = - vdbe::ProgramState::new(program.max_registers, program.cursor_ref.len()); + let mut stmt = + Statement::new(program, self._db.mv_store.clone(), pager.clone()); + loop { - let res = - program.step(&mut state, self._db.mv_store.clone(), pager.clone())?; - if matches!(res, StepResult::Done) { - break; + match stmt.step()? { + vdbe::StepResult::Done => { + break; + } + vdbe::StepResult::IO => stmt.run_once()?, + vdbe::StepResult::Row => {} + vdbe::StepResult::Interrupt | vdbe::StepResult::Busy => { + return Err(LimboError::Busy) + } } - self.run_once()?; } } _ => unreachable!(), @@ -1110,15 +1115,20 @@ impl Connection { input, )?; - let mut state = - vdbe::ProgramState::new(program.max_registers, program.cursor_ref.len()); + let mut stmt = + Statement::new(program, self._db.mv_store.clone(), pager.clone()); + loop { - let res = - program.step(&mut state, self._db.mv_store.clone(), pager.clone())?; - if matches!(res, StepResult::Done) { - break; + match stmt.step()? { + vdbe::StepResult::Done => { + break; + } + vdbe::StepResult::IO => stmt.run_once()?, + vdbe::StepResult::Row => {} + vdbe::StepResult::Interrupt | vdbe::StepResult::Busy => { + return Err(LimboError::Busy) + } } - self.run_once()?; } } }