From bf165c22f71b02f613bfeab99e4c0eefc1894063 Mon Sep 17 00:00:00 2001 From: Ziyang Hu Date: Sat, 12 Nov 2022 00:44:48 +0800 Subject: [PATCH] read-write distinction in the tx API --- cozo-core/src/runtime/db.rs | 6 +++--- cozo-core/src/storage/mod.rs | 2 +- cozo-core/src/storage/rocks.rs | 2 +- cozo-core/src/storage/sled.rs | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/cozo-core/src/runtime/db.rs b/cozo-core/src/runtime/db.rs index 2e28d4ca..c520eed8 100644 --- a/cozo-core/src/runtime/db.rs +++ b/cozo-core/src/runtime/db.rs @@ -122,7 +122,7 @@ where } fn transact(&self) -> Result { let ret = SessionTx { - tx: Box::new(self.db.transact()?), + tx: Box::new(self.db.transact(false)?), mem_store_id: Default::default(), relation_store_id: self.relation_store_id.clone(), }; @@ -130,7 +130,7 @@ where } fn transact_write(&self) -> Result { let ret = SessionTx { - tx: Box::new(self.db.transact()?), + tx: Box::new(self.db.transact(true)?), mem_store_id: Default::default(), relation_store_id: self.relation_store_id.clone(), }; @@ -716,7 +716,7 @@ where LARGEST_UTF_CHAR, )))]) .encode_as_key(RelationId::SYSTEM); - let tx = self.db.transact()?; + let tx = self.db.transact(false)?; let mut collected = vec![]; for kv_res in tx.range_scan_raw(&lower, &upper) { let (k_slice, v_slice) = kv_res?; diff --git a/cozo-core/src/storage/mod.rs b/cozo-core/src/storage/mod.rs index 85f3088c..19ce36a5 100644 --- a/cozo-core/src/storage/mod.rs +++ b/cozo-core/src/storage/mod.rs @@ -13,7 +13,7 @@ pub(crate) mod tikv; pub trait Storage { type Tx: StoreTx; - fn transact(&self) -> Result; + fn transact(&self, write: bool) -> Result; fn del_range(&self, lower: &[u8], upper: &[u8]) -> Result<()>; fn range_compact(&self, lower: &[u8], upper: &[u8]) -> Result<()>; } diff --git a/cozo-core/src/storage/rocks.rs b/cozo-core/src/storage/rocks.rs index b5a0e08a..9dd3a13d 100644 --- a/cozo-core/src/storage/rocks.rs +++ b/cozo-core/src/storage/rocks.rs @@ -90,7 +90,7 @@ impl RocksDbStorage { impl Storage for RocksDbStorage { type Tx = RocksDbTx; - fn transact(&self) -> Result { + fn transact(&self, _write: bool) -> Result { let db_tx = self.db.transact().set_snapshot(true).start(); Ok(RocksDbTx { db_tx }) } diff --git a/cozo-core/src/storage/sled.rs b/cozo-core/src/storage/sled.rs index 2c27e09d..5a22bf4f 100644 --- a/cozo-core/src/storage/sled.rs +++ b/cozo-core/src/storage/sled.rs @@ -34,7 +34,7 @@ const DEL_MARKER: u8 = 0; impl Storage for SledStorage { type Tx = SledTx; - fn transact(&self) -> Result { + fn transact(&self, _write: bool) -> Result { Ok(SledTx { db: self.db.clone(), changes: Default::default(),