diff --git a/core/error.rs b/core/error.rs index 3a1fd8112..e8eb83a5a 100644 --- a/core/error.rs +++ b/core/error.rs @@ -1,5 +1,3 @@ -use std::num::NonZero; - use thiserror::Error; #[derive(Debug, Error, miette::Diagnostic)] @@ -49,8 +47,6 @@ pub enum LimboError { Constraint(String), #[error("Extension error: {0}")] ExtensionError(String), - #[error("Unbound parameter at index {0}")] - Unbound(NonZero), #[error("Runtime error: integer overflow")] IntegerOverflow, #[error("Schema is locked for write")] diff --git a/core/vdbe/execute.rs b/core/vdbe/execute.rs index 4d2a96d10..21a8d208d 100644 --- a/core/vdbe/execute.rs +++ b/core/vdbe/execute.rs @@ -4395,12 +4395,7 @@ pub fn op_variable( let Insn::Variable { index, dest } = insn else { unreachable!("unexpected Insn {:?}", insn) }; - state.registers[*dest] = Register::OwnedValue( - state - .get_parameter(*index) - .ok_or(LimboError::Unbound(*index))? - .clone(), - ); + state.registers[*dest] = Register::OwnedValue(state.get_parameter(*index)); state.pc += 1; Ok(InsnFunctionStepResult::Step) } diff --git a/core/vdbe/mod.rs b/core/vdbe/mod.rs index daad191b4..a95cc7fba 100644 --- a/core/vdbe/mod.rs +++ b/core/vdbe/mod.rs @@ -284,8 +284,11 @@ impl ProgramState { self.parameters.insert(index, value); } - pub fn get_parameter(&self, index: NonZero) -> Option<&OwnedValue> { - self.parameters.get(&index) + pub fn get_parameter(&self, index: NonZero) -> OwnedValue { + self.parameters + .get(&index) + .cloned() + .unwrap_or(OwnedValue::Null) } pub fn reset(&mut self) {