From f4971a8330d3fc4bb0e749ffeff75d96ea89fec9 Mon Sep 17 00:00:00 2001 From: Matt Toohey Date: Thu, 7 May 2026 16:22:14 +1000 Subject: [PATCH] fix: address code review issues in legacy session backfill SQL - Remove redundant EXISTS subquery in thread_messages INSERT since the JOIN already limits results to sessions that have messages - Remove ineffective ORDER BY in INSERT...SELECT (SQLite does not guarantee insertion order from ORDER BY in this context) - Fix user_set_name to be FALSE when name falls back to 'New Chat', avoiding contradictory state where user_set_name=true but the name is a default placeholder Signed-off-by: Matt Toohey --- crates/goose/src/session/session_manager.rs | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/crates/goose/src/session/session_manager.rs b/crates/goose/src/session/session_manager.rs index 8a75d36c52..54dc90beb6 100644 --- a/crates/goose/src/session/session_manager.rs +++ b/crates/goose/src/session/session_manager.rs @@ -1,9 +1,9 @@ -use crate::config::GooseMode; use crate::config::paths::Paths; -use crate::conversation::Conversation; +use crate::config::GooseMode; use crate::conversation::message::Message; +use crate::conversation::Conversation; use crate::model::ModelConfig; -use crate::providers::base::{MSG_COUNT_FOR_SESSION_NAME_GENERATION, Provider}; +use crate::providers::base::{Provider, MSG_COUNT_FOR_SESSION_NAME_GENERATION}; use crate::recipe::Recipe; use crate::session::extension_data::ExtensionData; use anyhow::Result; @@ -750,7 +750,7 @@ impl SessionStorage { INSERT OR IGNORE INTO threads (id, name, user_set_name, working_dir, created_at, updated_at, metadata_json) SELECT s.id, CASE WHEN s.name = '' OR s.name IS NULL THEN 'New Chat' ELSE s.name END, - s.user_set_name, + CASE WHEN s.name = '' OR s.name IS NULL THEN FALSE ELSE s.user_set_name END, s.working_dir, s.created_at, s.updated_at, @@ -772,8 +772,6 @@ impl SessionStorage { JOIN sessions s ON s.id = m.session_id WHERE s.session_type IN ('user', 'acp') AND s.thread_id IS NULL - AND EXISTS (SELECT 1 FROM messages m2 WHERE m2.session_id = s.id) - ORDER BY m.created_timestamp, m.id "#, ) .execute(&mut **tx)