From 8c32f967482e9c54f50a8512c284d5539900b704 Mon Sep 17 00:00:00 2001 From: Glauber Costa Date: Sat, 16 Aug 2025 21:06:49 -0500 Subject: [PATCH 1/2] emit SetCookie when creating a view SetCookie is necessary to invalidate prepared statements in the connection after DDL expressions. --- core/translate/view.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/core/translate/view.rs b/core/translate/view.rs index 0bf8da232..7779fbc1c 100644 --- a/core/translate/view.rs +++ b/core/translate/view.rs @@ -53,6 +53,13 @@ fn emit_create_view_program( program.emit_insn(Insn::PopulateMaterializedViews); } + program.emit_insn(Insn::SetCookie { + db: 0, + cookie: Cookie::SchemaVersion, + value: (schema.schema_version + 1) as i32, + p5: 0, + }); + Ok(()) } From 9f5d3dbf871f7e9c2c47d7b20af472a77486df01 Mon Sep 17 00:00:00 2001 From: Glauber Costa Date: Sat, 16 Aug 2025 21:37:31 -0500 Subject: [PATCH 2/2] setcookie --- core/translate/view.rs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/core/translate/view.rs b/core/translate/view.rs index 7779fbc1c..7ab05a211 100644 --- a/core/translate/view.rs +++ b/core/translate/view.rs @@ -48,11 +48,6 @@ fn emit_create_view_program( where_clause: Some(format!("name = '{normalized_view_name}'")), }); - // Populate materialized views if needed - if populate_materialized { - program.emit_insn(Insn::PopulateMaterializedViews); - } - program.emit_insn(Insn::SetCookie { db: 0, cookie: Cookie::SchemaVersion, @@ -60,6 +55,12 @@ fn emit_create_view_program( p5: 0, }); + // Populate materialized views if needed + // Note: This must come after SetCookie since it may do I/O operations + if populate_materialized { + program.emit_insn(Insn::PopulateMaterializedViews); + } + Ok(()) }