tree

package
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 23, 2026 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrKeyNotFound = errors.New("key not found")

Functions

This section is empty.

Types

type CursorItem

type CursorItem struct {
	PageID uint64
	Node   node.Node
	Index  int
}

type Iterator

type Iterator struct {
	// contains filtered or unexported fields
}

func (*Iterator) Close

func (it *Iterator) Close() error

func (*Iterator) Domain

func (it *Iterator) Domain() (start, end []byte)

func (*Iterator) Error

func (it *Iterator) Error() error

func (*Iterator) IsDeleted

func (it *Iterator) IsDeleted() bool

func (*Iterator) Key

func (it *Iterator) Key() []byte

func (*Iterator) KeyCopy

func (it *Iterator) KeyCopy(dst []byte) []byte

func (*Iterator) Next

func (it *Iterator) Next()

func (*Iterator) Seek

func (it *Iterator) Seek(key []byte)

func (*Iterator) UnsafeEntry

func (it *Iterator) UnsafeEntry() ([]byte, page.ValuePtr, byte)

func (*Iterator) UnsafeKey

func (it *Iterator) UnsafeKey() []byte

func (*Iterator) UnsafeValue

func (it *Iterator) UnsafeValue() []byte

func (*Iterator) Valid

func (it *Iterator) Valid() bool

func (*Iterator) Value

func (it *Iterator) Value() []byte

func (*Iterator) ValueCopy

func (it *Iterator) ValueCopy(dst []byte) []byte

type SlabReader

type SlabReader interface {
	Read(ptr page.ValuePtr) ([]byte, error)
	ReadUnsafe(ptr page.ValuePtr) ([]byte, error)
}

type Tree

type Tree struct {
	// contains filtered or unexported fields
}

func New

func New(p *pager.Pager, sr SlabReader, root uint64) *Tree

func (*Tree) CollectPageIDs

func (t *Tree) CollectPageIDs() ([]uint64, error)

CollectPageIDs returns the set of page IDs reachable from the Tree root. The returned slice is sorted.

func (*Tree) Get

func (t *Tree) Get(key []byte) ([]byte, error)

func (*Tree) GetEntry

func (t *Tree) GetEntry(key []byte) (node.LeafEntry, error)

GetEntry returns the raw leaf entry (useful for compaction/CAS). CAUTION: Returned entry Key/Value might point directly to mmap memory. Do not modify or hold reference for long.

func (*Tree) GetUnsafe

func (t *Tree) GetUnsafe(key []byte) ([]byte, error)

func (*Tree) Has

func (t *Tree) Has(key []byte) (bool, error)

func (*Tree) Iterator

func (t *Tree) Iterator(start, end []byte) iterator.UnsafeIterator

func (*Tree) Reset

func (t *Tree) Reset(p *pager.Pager, sr SlabReader, root uint64)

Reset re-initializes the tree with new parameters for reuse.

func (*Tree) ReverseIterator

func (t *Tree) ReverseIterator(start, end []byte) iterator.UnsafeIterator

func (*Tree) SetRoot

func (t *Tree) SetRoot(root uint64)

SetRoot updates the root page ID.

func (*Tree) UpdateValuePtrInPlace

func (t *Tree) UpdateValuePtrInPlace(key []byte, oldPtr, newPtr page.ValuePtr) (updated bool, leafPageID uint64, err error)

UpdateValuePtrInPlace rewrites a pointer value in-place inside the current tree by updating the leaf page that contains key.

This is intended for maintenance operations (e.g. slab compaction) that want to avoid full copy-on-write path rewrites. Callers must ensure snapshot safety (i.e. no readers are pinned to the current index generation) before using it.

Returns (updated=true, leafPageID) when the entry existed as a pointer and matched oldPtr. If the key is missing or has changed since oldPtr, it returns updated=false with a nil error.

func (*Tree) WalkPages

func (t *Tree) WalkPages(fn func(pageID uint64, n node.Node) error) error

WalkPages visits each page reachable from the Tree's current root exactly once. It is primarily intended for diagnostics, vacuuming, and tests.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL