execute should create an Statement

This commit is contained in:
pedrocarlo
2025-08-11 14:13:50 -03:00
parent 10cadd4037
commit 78a89f0fd3

View File

@@ -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()?;
}
}
}