diff --git a/COMPAT.md b/COMPAT.md index 905de6c77..49378b3be 100644 --- a/COMPAT.md +++ b/COMPAT.md @@ -487,7 +487,7 @@ Modifiers: | Next | No | | | NextAsync | Yes | | | NextAwait | Yes | | -| Noop | No | | +| Noop | Yes | | | Not | Yes | | | NotExists | Yes | | | NotFound | No | | diff --git a/core/vdbe/explain.rs b/core/vdbe/explain.rs index 490a677b7..9b58e0572 100644 --- a/core/vdbe/explain.rs +++ b/core/vdbe/explain.rs @@ -1154,6 +1154,15 @@ pub fn insn_to_str( 0, format!("r[{}]=(r[{}] || r[{}])", dest, lhs, rhs), ), + Insn::Noop => ( + "Noop", + 0, + 0, + 0, + OwnedValue::build_text(Rc::new("".to_string())), + 0, + String::new(), + ), }; format!( "{:<4} {:<17} {:<4} {:<4} {:<4} {:<13} {:<2} {}", diff --git a/core/vdbe/insn.rs b/core/vdbe/insn.rs index 354acbf10..91736acb5 100644 --- a/core/vdbe/insn.rs +++ b/core/vdbe/insn.rs @@ -569,6 +569,7 @@ pub enum Insn { rhs: usize, dest: usize, }, + Noop, } fn cast_text_to_numerical(value: &str) -> OwnedValue { diff --git a/core/vdbe/mod.rs b/core/vdbe/mod.rs index 1d3100d5f..d86400f2f 100644 --- a/core/vdbe/mod.rs +++ b/core/vdbe/mod.rs @@ -2457,6 +2457,11 @@ impl Program { exec_or(&state.registers[*lhs], &state.registers[*rhs]); state.pc += 1; } + Insn::Noop => { + // Do nothing + // Advance the program counter for the next opcode + state.pc += 1 + } } } }