From a4077658cfb70c0c00828f6e44c6d1fbca9db36c Mon Sep 17 00:00:00 2001 From: Yuriy Dupyn <2153100+omedusyo@users.noreply.github.com> Date: Mon, 5 Feb 2024 23:07:56 +0100 Subject: [PATCH] Saving of metadata --- minisql/src/interpreter2.rs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/minisql/src/interpreter2.rs b/minisql/src/interpreter2.rs index e3f9121..9426018 100644 --- a/minisql/src/interpreter2.rs +++ b/minisql/src/interpreter2.rs @@ -201,6 +201,8 @@ impl StateHandler { db_path, state: RwLock::new(State::new()), }; + + state.save_metadata().await?; Ok(state) } @@ -276,9 +278,13 @@ impl StateHandler { response_writer.write_command_complete(CompleteStatus::Delete(count)).await.map_err(|e| RuntimeError::AnyhowError(e)) } CreateTable(table_schema) => { - let mut state = self.state.write().await; - let table = Table::new(table_schema, &self.db_path).await?; - state.attach_table(table).await; + { + let mut state = self.state.write().await; + let table = Table::new(table_schema, &self.db_path).await?; + state.attach_table(table).await; + // WARNING: We need to drop the write lock on state unless we want a deadlock. + } + self.save_metadata().await?; response_writer.write_command_complete(CompleteStatus::CreateTable).await.map_err(|e| RuntimeError::AnyhowError(e)) } CreateIndex(table_position, column) => {