Sort by string: fix deletion of large no. elements.

This commit is contained in:
Kishore Nallan 2022-03-17 16:04:22 +05:30
parent 787130cd06
commit 61e5d292df
2 changed files with 16 additions and 2 deletions

View File

@ -7,8 +7,8 @@
//std::set<adi_node_t*> nodes;
struct adi_node_t {
uint16_t scions;
uint16_t num_children;
uint32_t scions;
char* chars;
adi_node_t** children;
@ -251,7 +251,8 @@ void adi_tree_t::remove(uint32_t id) {
std::vector<adi_node_t*> path;
auto leaf_node = get_node(root, key, 0, path);
//LOG(INFO) << "Removing key: " << key;
//LOG(INFO) << "Removing key: " << key << ", seq_id: " << id << ", id_keys.size: " << id_keys.size()
// << ", root.num_children: " << root->num_children;
if(leaf_node != nullptr) {
remove_node(root, key, 0);

View File

@ -105,3 +105,16 @@ TEST_F(ADITreeTest, InsertDuplicateAndDelete) {
ASSERT_EQ(nullptr, tree.get_root());
}
TEST_F(ADITreeTest, InsertDeleteManyElements) {
adi_tree_t tree;
size_t num_elements = UINT16_MAX + 100;
for(size_t i = 0; i < num_elements; i++) {
tree.index(i, "key");
}
for(size_t i = 0; i < num_elements; i++) {
tree.remove(i);
}
}