model

package
v0.0.0-debug-20260702 Latest Latest
Warning

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

Go to latest
Published: Jul 2, 2026 License: Apache-2.0 Imports: 20 Imported by: 0

Documentation

Index

Constants

View Source
const (
	MemoTreeVersion1 uint16 = iota
	MemoTreeVersion2
	MemoTreeVersion3
	MemoTreeVersion4
)
View Source
const (
	TransferDir = "transfer"
)

Variables

This section is empty.

Functions

func AddTransferPage

func AddTransferPage(page *TransferHashPage, ioVector *fileservice.IOVector, bufs *[]*bytes.Buffer) error

func DecodeTransferFileName

func DecodeTransferFileName(name string) (time.Time, error)

func GetDiskTTL

func GetDiskTTL() time.Duration

func GetTTL

func GetTTL() time.Duration

func GetTransferFileName

func GetTransferFileName() string

func InitTransferPageIO

func InitTransferPageIO() *fileservice.IOVector

func ReleaseMarshalBufs

func ReleaseMarshalBufs(bufs []*bytes.Buffer)

ReleaseMarshalBufs returns pooled bytes.Buffers obtained from Marshal back to the pool. Call after the data slices are no longer referenced (e.g. after fs.Write completes).

func SetDiskTTL

func SetDiskTTL(t time.Duration)

func SetTTL

func SetTTL(t time.Duration)

func TransferFileGCFn

func TransferFileGCFn(filePath string, fs fileservice.FileService) (neesGC bool, err error)

func WriteTransferPage

func WriteTransferPage(ctx context.Context, fs fileservice.FileService, pages []*TransferHashPage, ioVector fileservice.IOVector, bufs []*bytes.Buffer) error

Types

type AOT added in v0.7.0

type AOT[B BlockT[R], R RowsT[R]] struct {
	sync.Mutex
	// contains filtered or unexported fields
}

AOT stands for append-only-table append-only is the most common form of data organization. A basic data structure is abstracted here, which can cover most scenarios, such as logtail data and checkpoint data

func NewAOT added in v0.7.0

func NewAOT[B BlockT[R], R RowsT[R]](
	blockSize int,
	blockFactory func(R) B,
	lessFn func(_, _ B) bool) *AOT[B, R]

func (*AOT[B, R]) Append added in v0.7.0

func (aot *AOT[B, R]) Append(rows R) (err error)

One appender

func (*AOT[B, R]) BlockCount added in v0.7.0

func (aot *AOT[B, R]) BlockCount() int

func (*AOT[B, R]) Close added in v0.7.0

func (aot *AOT[B, R]) Close()

func (*AOT[B, R]) GetBlocks added in v1.0.0

func (aot *AOT[B, R]) GetBlocks() *btree.BTreeG[B]

func (*AOT[B, R]) Max added in v0.7.0

func (aot *AOT[B, R]) Max() (b B)

func (*AOT[B, R]) Min added in v0.7.0

func (aot *AOT[B, R]) Min() (b B)

func (*AOT[B, R]) Scan added in v0.7.0

func (aot *AOT[B, R]) Scan(fn func(_ B) bool)

func (*AOT[B, R]) Snapshot added in v0.7.0

func (aot *AOT[B, R]) Snapshot() AOTSnapshot[B, R]

func (*AOT[B, R]) String added in v0.7.0

func (aot *AOT[B, R]) String() string

func (*AOT[B, R]) Truncate added in v0.7.0

func (aot *AOT[B, R]) Truncate(stopFn func(_ B) bool) (cnt int)

Truncate prunes the blocks. Deletable blocks are those have all txns prepared before the given timestamp For example: truncate the table by timestamp blocks: (Page1[bornTs=1], Page2[bornTs=10], Page3[bornTs=20]) Call Remain Delete Truncate(ts=5): (Page1,Page2,Page3), () Truncate(ts=12): (Page2,Page3), (Page1) Truncate(ts=30): (Page3), (Page1,Page2)

type AOTSnapshot added in v0.7.0

type AOTSnapshot[B BlockT[R], R RowsT[R]] interface {
	// Ascend the table within the range [pivot, last]
	Ascend(pivot B, iter func(blk B) bool)

	// Descend the table within the range [pivot, first]
	Descend(pivot B, iter func(blk B) bool)
}

AOTSnapshot represents the snapshot of a AOT

type BaseTreeVisitor added in v0.8.0

type BaseTreeVisitor struct {
	TableFn func(uint64, uint64) error
}

func (*BaseTreeVisitor) String added in v0.8.0

func (visitor *BaseTreeVisitor) String() string

func (*BaseTreeVisitor) VisitTable added in v0.8.0

func (visitor *BaseTreeVisitor) VisitTable(dbID, tableID uint64) (err error)

type BatchBlock added in v0.7.0

type BatchBlock struct {
	*containers.Batch
	ID uint64
}

func NewBatchBlock added in v0.7.0

func NewBatchBlock(id uint64, attrs []string, colTypes []types.Type, opts containers.Options) *BatchBlock

func (*BatchBlock) IsAppendable added in v0.7.0

func (blk *BatchBlock) IsAppendable() bool

type BlockT added in v0.7.0

type BlockT[R RowsT[R]] interface {
	// Append appends a group of rows into the block
	Append(R) error

	// IsAppendable specifies wether the block is appendable
	IsAppendable() bool

	// Length specifies the row count of the block
	Length() int

	String() string

	// Close release the block bound resources
	// It should be called when the block is not used
	Close()
}

BlockT represents a block of rows

type HashPageTable added in v0.6.0

type HashPageTable = TransferTable[*TransferHashPage]

type PageT added in v0.6.0

type PageT[T common.IRef] interface {
	common.IRef
	Pin() *common.PinnedItem[T]
	TTL() uint8 // 0 skip, 1 clear memory, 2 clear disk
	ID() *common.ID
	Length() int
	Clear()
}

type Path

type Path struct {
	Name   string
	Offset int64
	Size   int64
}

type RowsT added in v0.7.0

type RowsT[T any] interface {
	// row count
	Length() int

	// returns a window of the group of rows
	Window(offset, length int) T
}

RowsT represents a group of rows

type TableRecord

type TableRecord struct {
	DbID uint64
	ID   uint64
}

func NewTableTree added in v0.8.0

func NewTableTree(dbID, id uint64) *TableRecord

func (*TableRecord) ApproxSize

func (ttree *TableRecord) ApproxSize() int64

func (*TableRecord) ReadFromWithVersion

func (ttree *TableRecord) ReadFromWithVersion(r io.Reader, ver uint16) (n int64, err error)

func (*TableRecord) WriteTo

func (ttree *TableRecord) WriteTo(w io.Writer) (n int64, err error)

type TimedSliceBlock added in v0.7.0

type TimedSliceBlock[R any] struct {
	BornTS types.TS
	Rows   []R
}

func NewTimedSliceBlock added in v0.7.0

func NewTimedSliceBlock[R any](ts types.TS) *TimedSliceBlock[R]

func (*TimedSliceBlock[R]) Append added in v0.7.0

func (blk *TimedSliceBlock[R]) Append(rows R) (err error)

func (*TimedSliceBlock[R]) Close added in v0.7.0

func (blk *TimedSliceBlock[R]) Close()

func (*TimedSliceBlock[R]) IsAppendable added in v0.7.0

func (blk *TimedSliceBlock[R]) IsAppendable() bool

func (*TimedSliceBlock[R]) Length added in v0.7.0

func (blk *TimedSliceBlock[R]) Length() int

func (*TimedSliceBlock[R]) String added in v0.7.0

func (blk *TimedSliceBlock[R]) String() string

type TransDels added in v1.0.0

type TransDels struct {

	// row -> commit ts
	Mapping map[int]types.TS
	// contains filtered or unexported fields
}

func NewTransDels added in v1.0.0

func NewTransDels(endts types.TS) *TransDels

func (*TransDels) PPString added in v1.0.0

func (t *TransDels) PPString() string

type TransDelsForBlks added in v1.0.0

type TransDelsForBlks struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

func NewTransDelsForBlks added in v1.0.0

func NewTransDelsForBlks() *TransDelsForBlks

func (*TransDelsForBlks) DeleteDelsForBlk

func (t *TransDelsForBlks) DeleteDelsForBlk(blkid types.Blockid)

func (*TransDelsForBlks) GetDelsForBlk added in v1.0.0

func (t *TransDelsForBlks) GetDelsForBlk(blkid types.Blockid) *TransDels

func (*TransDelsForBlks) Prune added in v1.0.0

func (t *TransDelsForBlks) Prune(gap time.Duration)

func (*TransDelsForBlks) SetDelsForBlk added in v1.0.0

func (t *TransDelsForBlks) SetDelsForBlk(blkid types.Blockid, rowOffset int, endTS, ts types.TS)

type TransferHashPage added in v0.6.0

type TransferHashPage struct {
	common.RefHelper
	// contains filtered or unexported fields
}

func NewTransferHashPage added in v0.6.0

func NewTransferHashPage(id *common.ID, ts time.Time, isTransient bool, fs *fileservice.TmpFileService, ttl, diskTTL time.Duration, createdObjIDs []*objectio.ObjectId) *TransferHashPage

func (*TransferHashPage) BornTS added in v0.6.0

func (page *TransferHashPage) BornTS() time.Time

func (*TransferHashPage) Clear

func (page *TransferHashPage) Clear()

func (*TransferHashPage) ClearPersistTable

func (page *TransferHashPage) ClearPersistTable()

func (*TransferHashPage) Close added in v0.6.0

func (page *TransferHashPage) Close()

func (*TransferHashPage) ID added in v0.6.0

func (page *TransferHashPage) ID() *common.ID

func (*TransferHashPage) IsPersist

func (page *TransferHashPage) IsPersist() bool

func (*TransferHashPage) Length added in v1.0.0

func (page *TransferHashPage) Length() int

func (*TransferHashPage) Marshal

func (page *TransferHashPage) Marshal() *bytes.Buffer

Marshal serializes non-deleted entries into a pooled bytes.Buffer. The caller MUST pass the returned buffer to ReleaseMarshalBufs (or transferMarshalBufPool.Put) after buf.Bytes() is no longer referenced. Returns nil when there are no entries to serialize.

func (*TransferHashPage) Pin added in v0.6.0

func (*TransferHashPage) SetBornTS

func (page *TransferHashPage) SetBornTS(ts time.Time)

func (*TransferHashPage) SetPath

func (page *TransferHashPage) SetPath(path Path)

func (*TransferHashPage) String added in v0.6.0

func (page *TransferHashPage) String() string

func (*TransferHashPage) TTL added in v0.6.0

func (page *TransferHashPage) TTL() uint8

func (*TransferHashPage) Train added in v0.6.0

func (page *TransferHashPage) Train(m api.TransferMap)

func (*TransferHashPage) TrainDetached

func (page *TransferHashPage) TrainDetached(m api.TransferMap)

TrainDetached clones the transfer map so the page owns stable memory even if the source map was backed by a pooled slab that may be recycled later.

func (*TransferHashPage) Transfer added in v0.6.0

func (page *TransferHashPage) Transfer(from uint32) (dest types.Rowid, ok bool)

func (*TransferHashPage) Unmarshal

func (page *TransferHashPage) Unmarshal(data []byte) (*api.TransferMap, error)

type TransferTable added in v0.6.0

type TransferTable[T PageT[T]] struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

func NewTransferTable added in v0.6.0

func NewTransferTable[T PageT[T]](ctx context.Context, fs fileservice.FileService) (*TransferTable[T], error)

func (*TransferTable[T]) AddPage added in v0.6.0

func (table *TransferTable[T]) AddPage(page T) (dup bool)

func (*TransferTable[T]) Close added in v0.6.0

func (table *TransferTable[T]) Close()

func (*TransferTable[T]) DeletePage added in v0.6.0

func (table *TransferTable[T]) DeletePage(id *common.ID) (deleted bool)

func (*TransferTable[T]) Len added in v0.6.0

func (table *TransferTable[T]) Len() int

func (*TransferTable[T]) Pin added in v0.6.0

func (table *TransferTable[T]) Pin(id common.ID) (pinned *common.PinnedItem[T], err error)

func (*TransferTable[T]) RunTTL added in v0.6.0

func (table *TransferTable[T]) RunTTL()

type Tree added in v0.8.0

type Tree struct {
	Tables map[uint64]*TableRecord
}

func NewTree added in v0.8.0

func NewTree() *Tree

func (*Tree) AddObject added in v1.1.0

func (tree *Tree) AddObject(dbID, tableID uint64, _ *objectio.ObjectId, _ bool)

func (*Tree) AddTable added in v0.8.0

func (tree *Tree) AddTable(dbID, id uint64)

func (*Tree) ApproxSize

func (tree *Tree) ApproxSize() int64

func (*Tree) Equal added in v0.8.0

func (tree *Tree) Equal(o *Tree) bool

func (*Tree) GetTable added in v0.8.0

func (tree *Tree) GetTable(id uint64) *TableRecord

func (*Tree) HasTable added in v0.8.0

func (tree *Tree) HasTable(id uint64) bool

func (*Tree) IsEmpty added in v0.8.0

func (tree *Tree) IsEmpty() bool

func (*Tree) Merge added in v0.8.0

func (tree *Tree) Merge(ot *Tree)

func (*Tree) ReadFromWithVersion added in v1.1.0

func (tree *Tree) ReadFromWithVersion(r io.Reader, ver uint16) (n int64, err error)

func (*Tree) Reset added in v0.8.0

func (tree *Tree) Reset()

func (*Tree) Shrink added in v0.8.0

func (tree *Tree) Shrink(tableID uint64) (empty bool)

func (*Tree) String added in v0.8.0

func (tree *Tree) String() string

func (*Tree) TableCount added in v0.8.0

func (tree *Tree) TableCount() int

func (*Tree) Visit added in v0.8.0

func (tree *Tree) Visit(visitor TreeVisitor) (err error)

func (*Tree) WriteTo added in v0.8.0

func (tree *Tree) WriteTo(w io.Writer) (n int64, err error)

type TreeVisitor added in v0.8.0

type TreeVisitor interface {
	VisitTable(dbID, id uint64) error
	String() string
}

Jump to

Keyboard shortcuts

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