Merge pull request !1744 from JesseKLee/btree_fix
pull/1744/MERGE
mindspore-ci-bot 5 years ago committed by Gitee
commit 05177ff91a

@ -252,8 +252,8 @@ class BPlusTree {
~InnerNode() = default;
slot_type slot_dir_[traits::kInnerSlots];
key_type keys_[traits::kInnerSlots];
slot_type slot_dir_[traits::kInnerSlots] = {0};
key_type keys_[traits::kInnerSlots] = {0};
BaseNode *data_[traits::kInnerSlots + 1] = {nullptr};
uint64_t num_keys_[traits::kInnerSlots + 1] = {0};
slot_type slotuse_;
@ -282,8 +282,8 @@ class BPlusTree {
~LeafNode() = default;
slot_type slot_dir_[traits::kLeafSlots];
key_type keys_[traits::kLeafSlots];
slot_type slot_dir_[traits::kLeafSlots] = {0};
key_type keys_[traits::kLeafSlots] = {0};
std::unique_ptr<value_type> data_[traits::kLeafSlots];
slot_type slotuse_;
};

@ -42,6 +42,9 @@ typename BPlusTree<K, V, A, C, T>::IndexRc BPlusTree<K, V, A, C, T>::InnerNode::
// Swap the key
std::swap(keys_[j], keys_[i]);
// Swap the pointers.
if ((j + 1) >= traits::kInnerSlots + 1 || (i + 1) >= traits::kInnerSlots + 1) {
return IndexRc::kUnexpectedError;
}
std::swap(data_[j + 1], data_[i + 1]);
// one key in order.
inverse[j] = j;
@ -131,6 +134,9 @@ typename BPlusTree<K, V, A, C, T>::IndexRc BPlusTree<K, V, A, C, T>::LeafNode::S
slot_type j = inverse[i];
slot_type k = inverse[j];
// Swap the key
if (j >= traits::kLeafSlots || i >= traits::kLeafSlots) {
return IndexRc::kUnexpectedError;
}
std::swap(keys_[j], keys_[i]);
// Swap the shared pointers
std::swap(data_[j], data_[i]);

Loading…
Cancel
Save