From d74df2473edef1f33b1d14ee7ce31a6d8d1c8f0a Mon Sep 17 00:00:00 2001 From: Anton Harniakou Date: Mon, 5 May 2025 10:54:59 +0300 Subject: [PATCH] EXPLAIN should show a comment for the Insert opcode --- core/translate/emitter.rs | 1 + core/translate/insert.rs | 1 + core/translate/schema.rs | 1 + core/vdbe/execute.rs | 1 + core/vdbe/explain.rs | 5 +++-- core/vdbe/insn.rs | 1 + 6 files changed, 8 insertions(+), 2 deletions(-) diff --git a/core/translate/emitter.rs b/core/translate/emitter.rs index e2d3f78c4..92dea65ec 100644 --- a/core/translate/emitter.rs +++ b/core/translate/emitter.rs @@ -788,6 +788,7 @@ fn emit_update_insns( key_reg: beg, record_reg, flag: 0, + table_name: table_ref.identifier.clone(), }); } else if let Some(vtab) = table_ref.virtual_table() { let arg_count = table_ref.columns().len() + 2; diff --git a/core/translate/insert.rs b/core/translate/insert.rs index 6887c43af..815d934d4 100644 --- a/core/translate/insert.rs +++ b/core/translate/insert.rs @@ -387,6 +387,7 @@ pub fn translate_insert( key_reg: rowid_reg, record_reg: record_register, flag: 0, + table_name: table_name.to_string(), }); if inserting_multiple_rows { diff --git a/core/translate/schema.rs b/core/translate/schema.rs index 2d746d520..2ba50d516 100644 --- a/core/translate/schema.rs +++ b/core/translate/schema.rs @@ -229,6 +229,7 @@ pub fn emit_schema_entry( key_reg: rowid_reg, record_reg, flag: 0, + table_name: tbl_name.to_string(), }); } diff --git a/core/vdbe/execute.rs b/core/vdbe/execute.rs index 01339c3b3..5f7bc80ec 100644 --- a/core/vdbe/execute.rs +++ b/core/vdbe/execute.rs @@ -3699,6 +3699,7 @@ pub fn op_insert( key_reg, record_reg, flag: _, + table_name: _, } = insn else { unreachable!("unexpected Insn {:?}", insn) diff --git a/core/vdbe/explain.rs b/core/vdbe/explain.rs index 3df247cd0..2853dc466 100644 --- a/core/vdbe/explain.rs +++ b/core/vdbe/explain.rs @@ -1014,14 +1014,15 @@ pub fn insn_to_str( key_reg, record_reg, flag, + table_name, } => ( "Insert", *cursor as i32, *record_reg as i32, *key_reg as i32, - OwnedValue::build_text(""), + OwnedValue::build_text(&table_name), *flag as u16, - "".to_string(), + format!("intkey=r[{}] data=r[{}]", key_reg, record_reg), ), Insn::Delete { cursor_id } => ( "Delete", diff --git a/core/vdbe/insn.rs b/core/vdbe/insn.rs index 34a9f680e..071309563 100644 --- a/core/vdbe/insn.rs +++ b/core/vdbe/insn.rs @@ -644,6 +644,7 @@ pub enum Insn { key_reg: usize, // Must be int. record_reg: usize, // Blob of record data. flag: usize, // Flags used by insert, for now not used. + table_name: String, }, Delete {