diff --git a/cozo-core/src/runtime/imperative.rs b/cozo-core/src/runtime/imperative.rs index 751dadcc..9b62ca67 100644 --- a/cozo-core/src/runtime/imperative.rs +++ b/cozo-core/src/runtime/imperative.rs @@ -260,12 +260,12 @@ impl<'s, S: Storage<'s>> Db { ) -> Result { let mut callback_collector = BTreeMap::new(); let mut write_lock_names = BTreeSet::new(); - if readonly && !write_lock_names.is_empty() { - bail!("Read-only imperative program attempted to acquire write locks"); - } for p in ps { p.needs_write_locks(&mut write_lock_names); } + if readonly && !write_lock_names.is_empty() { + bail!("Read-only imperative program attempted to acquire write locks"); + } let is_write = !write_lock_names.is_empty(); let write_lock = self.obtain_relation_locks(write_lock_names.iter()); let _write_lock_guards = write_lock.iter().map(|l| l.read().unwrap()).collect_vec();