diff --git a/core/translate/expr.rs b/core/translate/expr.rs index 79a9d8ad1..6b1e81ce6 100644 --- a/core/translate/expr.rs +++ b/core/translate/expr.rs @@ -1006,7 +1006,7 @@ pub fn translate_expr( }, jump_target_result, ); - program.preassign_label_to_next_insn(jump_target_when_false); + program.resolve_label(jump_target_when_false, program.offset()); translate_expr( program, referenced_tables, @@ -1014,7 +1014,7 @@ pub fn translate_expr( target_register, precomputed_exprs_to_registers, )?; - program.preassign_label_to_next_insn(jump_target_result); + program.resolve_label(jump_target_result, program.offset()); Ok(target_register) } ScalarFunc::Glob | ScalarFunc::Like => { diff --git a/testing/scalar-functions.test b/testing/scalar-functions.test index b0488bfae..177fe88b6 100755 --- a/testing/scalar-functions.test +++ b/testing/scalar-functions.test @@ -75,13 +75,13 @@ do_execsql_test ifnull-2 { select ifnull(null, 2); } {2} -do_execsql_test iif-1 { - select iif(1, 1, 0); -} {1} +do_execsql_test iif-true { + select iif(1, 'pass', 'fail'); +} {pass} -do_execsql_test iif-2 { - select iif(0, 1, 0); -} {0} +do_execsql_test iif-false { + select iif(0, 'fail', 'pass'); +} {pass} do_execsql_test instr-str { select instr('limbo', 'im');