diff --git a/core/translate/main_loop.rs b/core/translate/main_loop.rs index 24b057219..ea7b2f4ef 100644 --- a/core/translate/main_loop.rs +++ b/core/translate/main_loop.rs @@ -678,14 +678,18 @@ fn emit_loop_source( )?; } - let if_label = program.allocate_label(); - if let Some(flag) = t_ctx.reg_agg_flag { + let if_label = if let Some(flag) = t_ctx.reg_agg_flag { + let if_label = program.allocate_label(); program.emit_insn(Insn::If { reg: flag, target_pc: if_label, jump_if_null: false, }); - } + Some(if_label) + } else { + None + }; + let col_start = t_ctx.reg_result_cols_start.unwrap(); for (i, rc) in plan.result_columns.iter().enumerate() { @@ -706,10 +710,12 @@ fn emit_loop_source( &t_ctx.resolver, )?; } - program.resolve_label(if_label, program.offset()); - if let Some(flag) = t_ctx.reg_agg_flag { + if let Some(label) = if_label { + program.resolve_label(label, program.offset()); + let flag = t_ctx.reg_agg_flag.unwrap(); program.emit_int(1, flag); } + Ok(()) } LoopEmitTarget::QueryResult => {