diff --git a/core/translate/insert.rs b/core/translate/insert.rs index d6ff96096..7a901de64 100644 --- a/core/translate/insert.rs +++ b/core/translate/insert.rs @@ -1478,7 +1478,12 @@ fn translate_rows_multiple<'short, 'long: 'short>( let translate_value_fn = |prg: &mut ProgramBuilder, value_index: usize, column_register: usize| { if let Some(temp_table_ctx) = temp_table_ctx { - prg.emit_column_or_rowid(temp_table_ctx.cursor_id, value_index, column_register); + prg.emit_insn(Insn::Column { + cursor_id: temp_table_ctx.cursor_id, + column: value_index, + dest: column_register, + default: None, + }); } else { prg.emit_insn(Insn::Copy { src_reg: yield_reg + value_index, diff --git a/testing/insert.test b/testing/insert.test index 75b8630b3..a6db0e45b 100755 --- a/testing/insert.test +++ b/testing/insert.test @@ -24,6 +24,15 @@ do_execsql_test_on_specific_db {:memory:} strict-basic-creation { SELECT * FROM test1; } {1|item1|10.5} +do_execsql_test_on_specific_db {:memory:} self-insert-sum-pk { + CREATE TABLE t(a INTEGER PRIMARY KEY, b INTEGER); + INSERT INTO t(b) VALUES(1),(2); + INSERT INTO t(b) SELECT sum(b) FROM t; + SELECT a, b FROM t ORDER BY a; +} {1|1 +2|2 +3|3} + # Reproducer for https://github.com/tursodatabase/turso/issues/2822 do_execsql_test_on_specific_db {:memory:} strict-type-case-insensitivity { CREATE TABLE test1 (id integer, name text, price real) STRICT;