pijul nest
guest [sign in]

Drop a database

[?]
Feb 4, 2021, 9:04 AM
KMT3MF5NLEQIPZLHCRYDGQ5EA46HJCG3C2ANEPMZGKGHDK77ADPAC

Dependencies

  • [2] OTWDDJE7 Trait/type cleanup
  • [3] YXKP4AIW New file locks, with multiple sets of free pages
  • [4] YWFYZNLZ Cleanup + inter-process concurrency
  • [5] ONES3V46 reference counting works for put
  • [6] OP6SVMOD Resetting history
  • [7] WS4ZQM4R Debugging, tests, etc.
  • [8] QEUTVAZ4 Splitting btree::page
  • [9] 6UVFCERM Formatting, debugging, etc.
  • [10] S4V4QZ5C Debugging reference-counting for put
  • [*] EAAYH6BQ Debugging put

Change contents

  • replacement in sanakirja-core/src/lib.rs at line 174
    [3.3229][3.3229:3427]()
    fn incr_rc(&mut self, off: u64) -> Result<(), Self::Error>;
    fn decr_rc(&mut self, off: u64) -> Result<(), Self::Error>;
    fn decr_rc_owned(&mut self, off: u64) -> Result<(), Self::Error>;
    [3.3229]
    [3.3427]
    // Returns the new RC.
    fn incr_rc(&mut self, off: u64) -> Result<usize, Self::Error>;
    // Returns the new RC (0 if freed).
    fn decr_rc(&mut self, off: u64) -> Result<usize, Self::Error>;
    // Returns the new RC (0 if freed).
    fn decr_rc_owned(&mut self, off: u64) -> Result<usize, Self::Error>;
  • edit in sanakirja-core/src/btree/mod.rs at line 390
    [3.1543]
    [12.4199]
    }
    pub fn drop<T: AllocPage, K: Representable+?Sized, V: Representable+?Sized, P: BTreePage<K, V>>(txn: &mut T, db: Db_<K, V, P>) -> Result<(), T::Error> {
    drop_::<T, K, V, P>(txn, db.db.as_page())
  • edit in sanakirja-core/src/btree/mod.rs at line 395
    [12.4201]
    fn drop_<T: AllocPage, K: Representable+?Sized, V: Representable+?Sized, P: BTreePage<K, V>>(txn: &mut T, p: Page) -> Result<(), T::Error> {
    let rc = if P::is_dirty(p) {
    txn.decr_rc_owned(p.offset)?
    } else {
    txn.decr_rc(p.offset)?
    };
    if rc == 0 {
    let mut cursor = P::first_cursor(p);
    let left_page = P::left_child(p, &cursor);
    if left_page == 0 {
    return Ok(())
    }
    drop_::<T, K, V, P>(txn, txn.load_page(left_page)?.as_page())?;
    while let Some((k, v, r)) = P::next(txn, p, &mut cursor) {
    for o in k.page_offsets().chain(v.page_offsets()) {
    txn.decr_rc(o)?;
    }
    drop_::<T, K, V, P>(txn, txn.load_page(r)?.as_page())?;
    }
    }
    Ok(())
    }
  • replacement in sanakirja-core/src/btree/del.rs at line 116
    [3.60824][3.60824:60865]()
    txn.decr_rc_owned(p[0] ^ 1)?
    [3.60824]
    [3.60865]
    txn.decr_rc_owned(p[0] ^ 1)?;
  • replacement in sanakirja-core/src/btree/del.rs at line 118
    [3.60894][3.31368:31399]()
    txn.decr_rc(p[0])?
    [3.60894]
    [3.60931]
    txn.decr_rc(p[0])?;
  • replacement in sanakirja-core/src/btree/del.rs at line 121
    [3.60968][3.60968:61009]()
    txn.decr_rc_owned(p[1] ^ 1)?
    [3.60968]
    [3.61009]
    txn.decr_rc_owned(p[1] ^ 1)?;
  • replacement in sanakirja-core/src/btree/del.rs at line 123
    [3.61038][3.31400:31431]()
    txn.decr_rc(p[1])?
    [3.61038]
    [3.61075]
    txn.decr_rc(p[1])?;
  • replacement in sanakirja-core/src/btree/del.rs at line 499
    [2.23863][2.23863:23915]()
    txn.decr_rc_owned(last_op.page.offset)?
    [2.23863]
    [2.23915]
    txn.decr_rc_owned(last_op.page.offset)?;
  • replacement in sanakirja-core/src/btree/del.rs at line 501
    [2.23932][2.23932:23978]()
    txn.decr_rc(last_op.page.offset)?
    [2.23932]
    [2.23978]
    txn.decr_rc(last_op.page.offset)?;
  • edit in sanakirja/src/environment/muttxn.rs at line 202
    [3.86144]
    [3.86144]
    }
    pub fn remove_root(&mut self, num: usize) {
    self.roots[num] = 0;
  • replacement in sanakirja/src/environment/muttxn.rs at line 271
    [3.88441][3.88441:88500]()
    fn decr_rc(&mut self, off: u64) -> Result<(), Error> {
    [3.88441]
    [3.587]
    fn decr_rc(&mut self, off: u64) -> Result<usize, Error> {
  • replacement in sanakirja/src/environment/muttxn.rs at line 295
    [3.934][3.4261:4292](),[3.1934][3.4261:4292]()
    return Ok(());
    [3.934]
    [3.1935]
    return Ok(rc as usize - 1);
  • replacement in sanakirja/src/environment/muttxn.rs at line 301
    [3.89166][3.89166:89181]()
    Ok(())
    [3.89166]
    [3.89181]
    Ok(0)
  • replacement in sanakirja/src/environment/muttxn.rs at line 304
    [3.89188][3.89188:89253]()
    fn decr_rc_owned(&mut self, off: u64) -> Result<(), Error> {
    [3.89188]
    [3.1993]
    fn decr_rc_owned(&mut self, off: u64) -> Result<usize, Error> {
  • replacement in sanakirja/src/environment/muttxn.rs at line 328
    [3.1198][3.4293:4324](),[3.2243][3.4293:4324]()
    return Ok(());
    [3.1198]
    [3.2244]
    return Ok(rc as usize - 1);
  • replacement in sanakirja/src/environment/muttxn.rs at line 334
    [3.90041][3.90041:90056]()
    Ok(())
    [3.90041]
    [3.90056]
    Ok(0)
  • replacement in sanakirja/src/environment/muttxn.rs at line 337
    [3.90063][3.90063:90122]()
    fn incr_rc(&mut self, off: u64) -> Result<(), Error> {
    [3.90063]
    [3.2303]
    fn incr_rc(&mut self, off: u64) -> Result<usize, Error> {
  • replacement in sanakirja/src/environment/muttxn.rs at line 355
    [3.39798][3.90667:90699](),[3.90667][3.90667:90699]()
    self.rc = Some(rc_)
    [3.39798]
    [3.2341]
    self.rc = Some(rc_);
    Ok(rc as usize + 1)
  • edit in sanakirja/src/environment/muttxn.rs at line 363
    [3.2580]
    [3.90699]
    Ok(2)
  • edit in sanakirja/src/environment/muttxn.rs at line 365
    [3.90709][3.90709:90724]()
    Ok(())