diff options
author | Jan Holesovsky <kendy@suse.cz> | 2013-02-06 22:31:43 +0100 |
---|---|---|
committer | Jan Holesovsky <kendy@suse.cz> | 2013-02-06 22:31:43 +0100 |
commit | 8636a6d557772e6d566d59151b5ba559993faf0b (patch) | |
tree | 4dc9390364734187eceb80b413552abacb675648 | |
parent | 53b715fc8afcd1f901d4a3e061255bec73f52668 (diff) |
Dense B+ tree: Remove root / one level if possible.feature/bplustree
Change-Id: Icf76e6c711f43daa021baae47cb54cc2e4e5b0d4
-rw-r--r-- | sw/inc/densebplustree.cxx | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/sw/inc/densebplustree.cxx b/sw/inc/densebplustree.cxx index a4469c2ddd11..b0b034c9eedf 100644 --- a/sw/inc/densebplustree.cxx +++ b/sw/inc/densebplustree.cxx @@ -308,6 +308,15 @@ void DenseBPlusTree< Key, Value, Order >::Remove( Key nPos, Key nNumber ) } m_nCount -= nNumber; + + // remove one level, if needed + if ( m_pRoot->m_nUsed == 1 ) + { + DBPTreeNode< Key, Value, Order > *pToDelete = m_pRoot; + m_pRoot = m_pRoot->m_pChildren[0]; + delete pToDelete; + --m_nDepth; + } } template < class Key, class Value, int Order > |