delete defined

main
Ziyang Hu 2 years ago
parent a01ffbc5af
commit aa93ec2e30

@ -104,9 +104,7 @@ impl<'a> Environment<SlicePtr> for Session<'a> {
let k = Tuple::new(tk);
if k.starts_with(&tuple) {
println!("Resolved to key {:?}", k);
let vt = Tuple::new(vk);
// let v = vt.iter().collect::<Vec<_>>();
Some(vt)
Some(Tuple::new(vk))
} else {
None
}
@ -115,6 +113,27 @@ impl<'a> Environment<SlicePtr> for Session<'a> {
}
fn delete_defined(&mut self, name: &str, in_root: bool) -> Result<()> {
todo!()
let key = self.encode_definable_key(name, in_root);
if in_root {
self.txn.del(true, &self.perm_cf, key)?;
} else {
let it = self.txn.iterator(false, &self.temp_cf);
it.seek(&key);
if let Some(found_key) = it.key() {
let found_key_tuple = Tuple::new(found_key);
if found_key_tuple.starts_with(&key) {
let mut ikey = Tuple::with_null_prefix();
ikey.push_value(&found_key_tuple.get(1).unwrap());
ikey.push_value(&found_key_tuple.get(0).unwrap());
self.txn.del(false, &self.temp_cf, found_key_tuple)?;
self.txn.del(false, &self.temp_cf, ikey)?;
}
}
}
// TODO cleanup if the thing deleted is a table
Ok(())
}
}
Loading…
Cancel
Save