fix radix cache match (#7)

This commit is contained in:
Liangsheng Yin
2024-01-16 01:42:46 +08:00
committed by GitHub
parent 4bd8233f2c
commit 01ca82d765

View File

@@ -116,12 +116,12 @@ class RadixCache:
for c_key, child in node.children.items(): for c_key, child in node.children.items():
prefix_len = match(c_key, key) prefix_len = match(c_key, key)
if prefix_len != 0: if prefix_len != 0:
if prefix_len == len(key) and prefix_len != len(c_key): if prefix_len < len(c_key):
new_node = self._split_node(c_key, child, prefix_len) new_node = self._split_node(c_key, child, prefix_len)
value.append(new_node.value) value.append(new_node.value)
last_node[0] = new_node last_node[0] = new_node
else: else:
value.append(child.value[:prefix_len]) value.append(child.value)
last_node[0] = child last_node[0] = child
self._match_prefix_helper(child, key[prefix_len:], value, last_node) self._match_prefix_helper(child, key[prefix_len:], value, last_node)
break break