MCPcopy Create free account
hub / github.com/nutsdb/nutsdb / deleteNode

Method deleteNode

sorted_set.go:425–444  ·  view source on GitHub ↗

deleteNode represents internal function used by delete, DeleteByScore and DeleteByRank.

(x *SkipListNode, update [SkipListMaxLevel]*SkipListNode)

Source from the content-addressed store, hash-verified

423
424// deleteNode represents internal function used by delete, DeleteByScore and DeleteByRank.
425func (sl *SkipList) deleteNode(x *SkipListNode, update [SkipListMaxLevel]*SkipListNode) {
426 for i := 0; i < sl.level; i++ {
427 if update[i].level[i].forward == x {
428 update[i].level[i].span += x.level[i].span - 1
429 update[i].level[i].forward = x.level[i].forward
430 } else {
431 update[i].level[i].span -= 1
432 }
433 }
434 if x.level[0].forward != nil {
435 x.level[0].forward.backward = x.backward
436 } else {
437 sl.tail = x.backward
438 }
439 for sl.level > 1 && sl.header.level[sl.level-1].forward == nil {
440 sl.level--
441 }
442 sl.length--
443 delete(sl.dict, x.hash)
444}
445
446// delete removes an element with matching score/key from the skiplist.
447func (sl *SkipList) delete(score SCORE, hash uint32) bool {

Callers 2

deleteMethod · 0.95
GetByRankRangeMethod · 0.95

Calls 1

deleteFunction · 0.85

Tested by

no test coverage detected