From 5d856499c4130cc29d7b4e67b644e8609edbfc36 Mon Sep 17 00:00:00 2001 From: Pere Diaz Bou Date: Wed, 2 Jul 2025 14:49:06 +0200 Subject: [PATCH] move update schema global on commit and not on rollback txn --- core/storage/pager.rs | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/core/storage/pager.rs b/core/storage/pager.rs index 96826e149..802d11f51 100644 --- a/core/storage/pager.rs +++ b/core/storage/pager.rs @@ -639,27 +639,27 @@ impl Pager { ) -> Result { tracing::trace!("end_tx(rollback={})", rollback); if rollback { - let maybe_schema_pair = if change_schema { - let schema = connection.schema.borrow().clone(); - // Lock first before writing to the database schema in case someone tries to read the schema before it's updated - let db_schema = connection._db.schema.write(); - Some((schema, db_schema)) - } else { - None - }; self.wal.borrow().end_write_tx()?; self.wal.borrow().end_read_tx()?; - if let Some((schema, mut db_schema)) = maybe_schema_pair { - *db_schema = schema; - } return Ok(PagerCacheflushStatus::Done(PagerCacheflushResult::Rollback)); } let cacheflush_status = self.cacheflush()?; match cacheflush_status { PagerCacheflushStatus::IO => Ok(PagerCacheflushStatus::IO), PagerCacheflushStatus::Done(_) => { + let maybe_schema_pair = if change_schema { + let schema = connection.schema.borrow().clone(); + // Lock first before writing to the database schema in case someone tries to read the schema before it's updated + let db_schema = connection._db.schema.write(); + Some((schema, db_schema)) + } else { + None + }; self.wal.borrow().end_write_tx()?; self.wal.borrow().end_read_tx()?; + if let Some((schema, mut db_schema)) = maybe_schema_pair { + *db_schema = schema; + } Ok(cacheflush_status) } }