diff --git a/crates/dkdc-db-core/src/manager.rs b/crates/dkdc-db-core/src/manager.rs index 869da64..0ce9ae4 100644 --- a/crates/dkdc-db-core/src/manager.rs +++ b/crates/dkdc-db-core/src/manager.rs @@ -129,16 +129,17 @@ impl DbManager { pub async fn execute(&self, db_name: &str, sql: &str) -> Result { error::validate_sql(sql)?; self.ensure_db(db_name).await?; - let dbs = self.dbs.read().await; - let managed = dbs.get(db_name).ok_or_else(|| db_not_found(db_name))?; - let result = managed.db.execute(sql).await?; + let (result, catalog, is_ddl) = { + let dbs = self.dbs.read().await; + let managed = dbs.get(db_name).ok_or_else(|| db_not_found(db_name))?; + let result = managed.db.execute(sql).await?; + let catalog = managed.catalog.clone(); + let is_ddl = router::is_ddl(sql); + (result, catalog, is_ddl) + }; // read lock released here // Refresh catalog if DDL (selective: only the affected table) - if router::is_ddl(sql) { - managed - .catalog - .schema_provider() - .refresh_for_ddl(sql) - .await?; + if is_ddl { + catalog.schema_provider().refresh_for_ddl(sql).await?; } Ok(result) } diff --git a/crates/dkdc-db-core/src/schema.rs b/crates/dkdc-db-core/src/schema.rs index 3996c1a..662ee3b 100644 --- a/crates/dkdc-db-core/src/schema.rs +++ b/crates/dkdc-db-core/src/schema.rs @@ -81,7 +81,7 @@ pub async fn list_tables(conn: &turso::Connection) -> Result> { let mut tables = Vec::new(); while let Some(row) = rows.next().await? { let name: String = row.get(0)?; - tables.push(name); + tables.push(name.to_lowercase()); } Ok(tables) }