From c8144340a055fea49c7fb2afb05ac4feb75d64a7 Mon Sep 17 00:00:00 2001 From: pedrocarlo Date: Fri, 23 May 2025 21:00:02 -0300 Subject: [PATCH] adjust proper ordering for value insert --- core/translate/insert.rs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/core/translate/insert.rs b/core/translate/insert.rs index 5f22fec33..7b11c31d0 100644 --- a/core/translate/insert.rs +++ b/core/translate/insert.rs @@ -214,7 +214,7 @@ pub fn translate_insert( let record_register = program.alloc_register(); if inserting_multiple_rows { - populate_record_multiple_rows( + populate_columns_multiple_rows( &mut program, &column_mappings, column_registers_start, @@ -599,7 +599,7 @@ fn resolve_indicies_for_insert( Ok(index_col_mappings) } -fn populate_record_multiple_rows( +fn populate_columns_multiple_rows( program: &mut ProgramBuilder, column_mappings: &[ColumnMapping], column_registers_start: usize, @@ -607,19 +607,23 @@ fn populate_record_multiple_rows( resolver: &Resolver, ) -> Result<()> { let mut value_index_seen = 0; + let mut other_values_seen = 0; for (i, mapping) in column_mappings.iter().enumerate() { let target_reg = column_registers_start + i; - if mapping.value_index.is_some() { + // dbg!(mapping, i, target_reg, yield_reg + value_index_seen); + if let Some(value_index) = mapping.value_index { + // dbg!(column_registers_start + value_index); program.emit_insn(Insn::Copy { src_reg: yield_reg + value_index_seen, - dst_reg: target_reg, + dst_reg: column_registers_start + value_index + other_values_seen, amount: 0, }); value_index_seen += 1; continue; } + other_values_seen += 1; if mapping.column.is_rowid_alias { program.emit_insn(Insn::SoftNull { reg: target_reg }); } else if let Some(default_expr) = mapping.default_value {