diff --git a/ConflictSet.cpp b/ConflictSet.cpp index 61327ad..32f9dfe 100644 --- a/ConflictSet.cpp +++ b/ConflictSet.cpp @@ -2931,9 +2931,6 @@ Node **insert(Node **self, std::span key, InternalVersionT writeVersion, WriteContext *tls, ConflictSet::Impl *impl) { - if ((*self)->partialKeyLen > 0) { - consumePartialKey(*self, key, writeVersion, tls); - } assert(maxVersion(*self, impl) <= writeVersion); setMaxVersion(*self, impl, writeVersion); @@ -3063,36 +3060,11 @@ void addWriteRange(Node *&root, std::span begin, } ++tls->accum.range_writes; const bool beginIsPrefix = lcp == int(begin.size()); - auto remaining = begin.subspan(0, lcp); - auto *n = root; + Node **useAsRoot = + insert(&root, begin.subspan(0, lcp), writeVersion, tls, impl); - for (;;) { - if (int(remaining.size()) <= n->partialKeyLen) { - break; - } - int i = longestCommonPrefix(n->partialKey(), remaining.data(), - n->partialKeyLen); - if (i != n->partialKeyLen) { - break; - } - - auto *child = getChild(n, remaining[n->partialKeyLen]); - if (child == nullptr) { - break; - } - - assert(maxVersion(n, impl) <= writeVersion); - setMaxVersion(n, impl, writeVersion); - - remaining = remaining.subspan(n->partialKeyLen + 1, - remaining.size() - (n->partialKeyLen + 1)); - n = child; - } - - Node **useAsRoot = &getInTree(n, impl); - - int consumed = lcp - remaining.size(); + int consumed = lcp; begin = begin.subspan(consumed, begin.size() - consumed); end = end.subspan(consumed, end.size() - consumed);