From d8658264d977b4571d474b4873ce4bfccd42bb3c Mon Sep 17 00:00:00 2001 From: Pere Diaz Bou Date: Wed, 2 Jul 2025 14:31:35 +0200 Subject: [PATCH] alter set cookie --- core/translate/alter.rs | 27 ++++++++++++++++++++++++++- core/translate/mod.rs | 2 +- core/vdbe/mod.rs | 1 - 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/core/translate/alter.rs b/core/translate/alter.rs index 84f4b7dc3..002f6b10f 100644 --- a/core/translate/alter.rs +++ b/core/translate/alter.rs @@ -7,7 +7,7 @@ use crate::{ util::normalize_ident, vdbe::{ builder::ProgramBuilder, - insn::{Insn, RegisterOrLiteral}, + insn::{Cookie, Insn, RegisterOrLiteral}, }, LimboError, Result, SymbolTable, }; @@ -133,6 +133,12 @@ pub fn translate_alter_table( dest_reg: record, index_name: None, }); + program.emit_insn(Insn::SetCookie { + db: 0, + cookie: Cookie::SchemaVersion, + value: schema.schema_version as i32 + 1, + p5: 0, + }); program.emit_insn(Insn::Insert { cursor: cursor_id, @@ -196,6 +202,12 @@ pub fn translate_alter_table( }; translate_update_with_after(schema, &mut update, syms, program, |program| { + program.emit_insn(Insn::SetCookie { + db: 0, + cookie: Cookie::SchemaVersion, + value: schema.schema_version as i32 + 1, + p5: 0, + }); program.emit_insn(Insn::ParseSchema { db: usize::MAX, // TODO: This value is unused, change when we do something with it where_clause: None, @@ -281,6 +293,12 @@ pub fn translate_alter_table( }); }); + program.emit_insn(Insn::SetCookie { + db: 0, + cookie: Cookie::SchemaVersion, + value: schema.schema_version as i32 + 1, + p5: 0, + }); program.emit_insn(Insn::ParseSchema { db: usize::MAX, // TODO: This value is unused, change when we do something with it where_clause: None, @@ -359,6 +377,13 @@ pub fn translate_alter_table( }); }); + program.emit_insn(Insn::SetCookie { + db: 0, + cookie: Cookie::SchemaVersion, + value: schema.schema_version as i32 + 1, + p5: 0, + }); + program.emit_insn(Insn::ParseSchema { db: usize::MAX, // TODO: This value is unused, change when we do something with it where_clause: None, diff --git a/core/translate/mod.rs b/core/translate/mod.rs index 893249f19..7a5941221 100644 --- a/core/translate/mod.rs +++ b/core/translate/mod.rs @@ -39,7 +39,7 @@ use crate::storage::pager::Pager; use crate::translate::delete::translate_delete; use crate::vdbe::builder::{ProgramBuilder, ProgramBuilderOpts, QueryMode}; use crate::vdbe::Program; -use crate::{bail_parse_error, Connection, Result, SymbolTable, TransactionState}; +use crate::{bail_parse_error, Connection, Result, SymbolTable}; use alter::translate_alter_table; use index::{translate_create_index, translate_drop_index}; use insert::translate_insert; diff --git a/core/vdbe/mod.rs b/core/vdbe/mod.rs index 917f40326..0efdbafa9 100644 --- a/core/vdbe/mod.rs +++ b/core/vdbe/mod.rs @@ -47,7 +47,6 @@ use execute::{ OpOpenEphemeralState, }; -use libloading::changelog; use rand::Rng; use regex::Regex; use std::{