catalog

package
v0.8.0 Latest Latest
Warning

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

Go to latest
Published: Jun 30, 2023 License: Apache-2.0 Imports: 31 Imported by: 0

Documentation

Index

Constants

View Source
const (
	SnapshotAttr_TID             = "table_id"
	SnapshotAttr_DBID            = "db_id"
	SegmentAttr_ID               = "id"
	SegmentAttr_CreateAt         = "create_at"
	SegmentAttr_SegNode          = "seg_node"
	SnapshotAttr_BlockMaxRow     = "block_max_row"
	SnapshotAttr_SegmentMaxBlock = "segment_max_block"
	SnapshotAttr_SchemaExtra     = "schema_extra"
)

+--------+---------+----------+----------+------------+ | ID | Name | CreateAt | DeleteAt | CommitInfo | +--------+---------+----------+----------+------------+ |(uint64)|(varchar)| (uint64) | (uint64) | (varchar) | +--------+---------+----------+----------+------------+

View Source
const (
	IOET_WALTxnCommand_Database uint16 = 3009
	IOET_WALTxnCommand_Table    uint16 = 3010
	IOET_WALTxnCommand_Segment  uint16 = 3011
	IOET_WALTxnCommand_Block    uint16 = 3012

	IOET_WALTxnCommand_Database_V1 uint16 = 1
	IOET_WALTxnCommand_Table_V1    uint16 = 1
	IOET_WALTxnCommand_Segment_V1  uint16 = 1
	IOET_WALTxnCommand_Block_V1    uint16 = 1

	IOET_WALTxnCommand_Database_CurrVer = IOET_WALTxnCommand_Database_V1
	IOET_WALTxnCommand_Table_CurrVer    = IOET_WALTxnCommand_Table_V1
	IOET_WALTxnCommand_Segment_CurrVer  = IOET_WALTxnCommand_Segment_V1
	IOET_WALTxnCommand_Block_CurrVer    = IOET_WALTxnCommand_Block_V1
)
View Source
const (
	PhyAddrColumnName    = catalog.Row_ID
	PhyAddrColumnComment = "Physical address"
	SortKeyNamePrefx     = "_SORT_"

	AttrRowID    = PhyAddrColumnName
	AttrCommitTs = "commit_time"
	AttrAborted  = "aborted"

	TenantSysID = uint32(0)
)
View Source
const (
	ModelSchemaName   = "_ModelSchema"
	ModelAttrET       = "ET"
	ModelAttrID       = "ID"
	ModelAttrName     = "NAME"
	ModelAttrTS       = "TS"
	ModelAttrOpT      = "OPT"
	ModelAttrLogIdx   = "LOGIDX"
	ModelAttrInfo     = "INFO"
	ModelAttrParentID = "PARENTID"
)
View Source
const (
	AccessInfoSize int64 = int64(unsafe.Sizeof(accessInfo{}))
)
View Source
const (
	BlockNodeSize int64 = int64(unsafe.Sizeof(BlockNode{}))
)
View Source
const (
	EntryMVCCNodeSize int = int(unsafe.Sizeof(EntryMVCCNode{}))
)

Variables

View Source
var SystemBlock_Columns_ID types.Blockid
View Source
var SystemBlock_DB_ID types.Blockid
View Source
var SystemBlock_Table_ID types.Blockid
View Source
var SystemSegment_Columns_ID types.Uuid
View Source
var SystemSegment_DB_ID types.Uuid
View Source
var SystemSegment_Table_ID types.Uuid

Functions

func ActiveWithNoTxnFilter

func ActiveWithNoTxnFilter(be *BaseEntryImpl[*MetadataMVCCNode]) bool

func AppendableBlkFilter

func AppendableBlkFilter(be *BlockEntry) bool

func CmdName

func CmdName(t uint16) string

func CompareBaseNode added in v0.8.0

func CompareBaseNode[T BaseNode[T]](e, o *MVCCNode[T]) int

func CompareUint64

func CompareUint64(left, right uint64) int

func EncodeAccessInfo added in v0.8.0

func EncodeAccessInfo(ai *accessInfo) []byte

func EncodeBlockNode added in v0.8.0

func EncodeBlockNode(node *BlockNode) []byte

func EncodeEntryMVCCNode added in v0.8.0

func EncodeEntryMVCCNode(node *EntryMVCCNode) []byte

func GetAttrIdx

func GetAttrIdx(attrs []string, name string) int

func IsFakePkName added in v0.8.0

func IsFakePkName(name string) bool

func MockBatch

func MockBatch(schema *Schema, rows int) *containers.Batch

func MockTxnFactory

func MockTxnFactory(catalog *Catalog) txnbase.TxnFactory

func MockTxnStoreFactory

func MockTxnStoreFactory(catalog *Catalog) txnbase.TxnStoreFactory

func NewEmptyMVCCNodeFactory added in v0.8.0

func NewEmptyMVCCNodeFactory[T BaseNode[T]](factory func() T) func() *MVCCNode[T]

func NonAppendableBlkFilter

func NonAppendableBlkFilter(be *BlockEntry) bool

Types

type BaseEntry

type BaseEntry interface {
	//for global checkpoint
	RLock()
	RUnlock()
	DeleteBefore(ts types.TS) bool
}

type BaseEntryImpl added in v0.8.0

type BaseEntryImpl[T BaseNode[T]] struct {
	//chain of MetadataMVCCNode
	*txnbase.MVCCChain[*MVCCNode[T]]
}

func NewBaseEntry added in v0.8.0

func NewBaseEntry[T BaseNode[T]](factory func() T) *BaseEntryImpl[T]

func NewReplayBaseEntry

func NewReplayBaseEntry[T BaseNode[T]](factory func() T) *BaseEntryImpl[T]

func (*BaseEntryImpl[T]) CloneCommittedInRange added in v0.8.0

func (be *BaseEntryImpl[T]) CloneCommittedInRange(start, end types.TS) BaseEntry

func (*BaseEntryImpl[T]) ConflictCheck added in v0.8.0

func (be *BaseEntryImpl[T]) ConflictCheck(txn txnif.TxnReader) (err error)

func (*BaseEntryImpl[T]) CreateWithTS added in v0.8.0

func (be *BaseEntryImpl[T]) CreateWithTS(ts types.TS, baseNode T)

func (*BaseEntryImpl[T]) CreateWithTxn added in v0.8.0

func (be *BaseEntryImpl[T]) CreateWithTxn(txn txnif.AsyncTxn, baseNode T)

func (*BaseEntryImpl[T]) DeleteAfter added in v0.8.0

func (be *BaseEntryImpl[T]) DeleteAfter(ts types.TS) bool

func (*BaseEntryImpl[T]) DeleteBefore added in v0.8.0

func (be *BaseEntryImpl[T]) DeleteBefore(ts types.TS) bool

func (*BaseEntryImpl[T]) DeleteLocked added in v0.8.0

func (be *BaseEntryImpl[T]) DeleteLocked(txn txnif.TxnReader) (isNewNode bool, err error)

func (*BaseEntryImpl[T]) DropEntryLocked added in v0.8.0

func (be *BaseEntryImpl[T]) DropEntryLocked(txn txnif.TxnReader) (isNewNode bool, err error)

func (*BaseEntryImpl[T]) GetCreatedAt added in v0.8.0

func (be *BaseEntryImpl[T]) GetCreatedAt() types.TS

func (*BaseEntryImpl[T]) GetDeleteAt added in v0.8.0

func (be *BaseEntryImpl[T]) GetDeleteAt() types.TS

func (*BaseEntryImpl[T]) GetVisibility added in v0.8.0

func (be *BaseEntryImpl[T]) GetVisibility(txn txnif.TxnReader) (visible, dropped bool)

func (*BaseEntryImpl[T]) GetVisibilityLocked added in v0.8.0

func (be *BaseEntryImpl[T]) GetVisibilityLocked(txn txnif.TxnReader) (visible, dropped bool)

func (*BaseEntryImpl[T]) HasDropCommitted added in v0.8.0

func (be *BaseEntryImpl[T]) HasDropCommitted() bool

func (*BaseEntryImpl[T]) HasDropCommittedLocked added in v0.8.0

func (be *BaseEntryImpl[T]) HasDropCommittedLocked() bool

func (*BaseEntryImpl[T]) IsVisible added in v0.8.0

func (be *BaseEntryImpl[T]) IsVisible(txn txnif.TxnReader, mu *sync.RWMutex) (ok bool, err error)

func (*BaseEntryImpl[T]) NeedWaitCommitting added in v0.8.0

func (be *BaseEntryImpl[T]) NeedWaitCommitting(startTS types.TS) (bool, txnif.TxnReader)

func (*BaseEntryImpl[T]) PPString added in v0.8.0

func (be *BaseEntryImpl[T]) PPString(level common.PPLevel, depth int, prefix string) string

func (*BaseEntryImpl[T]) PrepareAdd added in v0.8.0

func (be *BaseEntryImpl[T]) PrepareAdd(txn txnif.TxnReader) (err error)

func (*BaseEntryImpl[T]) String added in v0.8.0

func (be *BaseEntryImpl[T]) String() string

func (*BaseEntryImpl[T]) StringLocked added in v0.8.0

func (be *BaseEntryImpl[T]) StringLocked() string

func (*BaseEntryImpl[T]) TryGetTerminatedTS added in v0.8.0

func (be *BaseEntryImpl[T]) TryGetTerminatedTS(waitIfcommitting bool) (terminated bool, TS types.TS)

type BaseNode added in v0.8.0

type BaseNode[T any] interface {
	CloneAll() T
	CloneData() T
	String() string
	Update(vun T)
	WriteTo(w io.Writer) (n int64, err error)
	ReadFrom(r io.Reader) (n int64, err error)
}

type BlockDataFactory

type BlockDataFactory = func(meta *BlockEntry) data.Block

type BlockEntry

type BlockEntry struct {
	*BaseEntryImpl[*MetadataMVCCNode]

	*BlockNode
	ID types.Blockid
	// contains filtered or unexported fields
}

func NewBlockEntry

func NewBlockEntry(
	segment *SegmentEntry,
	id *objectio.Blockid,
	txn txnif.AsyncTxn,
	state EntryState,
	dataFactory BlockDataFactory,
) *BlockEntry

func NewBlockEntryWithMeta added in v0.7.0

func NewBlockEntryWithMeta(
	segment *SegmentEntry,
	id *objectio.Blockid,
	txn txnif.AsyncTxn,
	state EntryState,
	dataFactory BlockDataFactory,
	metaLoc objectio.Location,
	deltaLoc objectio.Location) *BlockEntry

func NewReplayBlockEntry

func NewReplayBlockEntry() *BlockEntry

func NewStandaloneBlock

func NewStandaloneBlock(segment *SegmentEntry, id *objectio.Blockid, ts types.TS) *BlockEntry

func NewStandaloneBlockWithLoc added in v0.7.0

func NewStandaloneBlockWithLoc(
	segment *SegmentEntry,
	id *objectio.Blockid,
	ts types.TS,
	metaLoc objectio.Location,
	delLoc objectio.Location) *BlockEntry

func NewSysBlockEntry

func NewSysBlockEntry(segment *SegmentEntry, id types.Blockid) *BlockEntry

func (*BlockEntry) AsCommonID

func (entry *BlockEntry) AsCommonID() *common.ID

func (*BlockEntry) BuildDeleteObjectName added in v0.8.0

func (entry *BlockEntry) BuildDeleteObjectName() objectio.ObjectName

func (*BlockEntry) CreateWithLoc added in v0.8.0

func (entry *BlockEntry) CreateWithLoc(ts types.TS, metaLoc objectio.Location, deltaLoc objectio.Location)

func (*BlockEntry) CreateWithTxnAndMeta added in v0.8.0

func (entry *BlockEntry) CreateWithTxnAndMeta(txn txnif.AsyncTxn, metaLoc objectio.Location, deltaLoc objectio.Location)

func (*BlockEntry) FastGetMetaLoc added in v0.8.0

func (entry *BlockEntry) FastGetMetaLoc() objectio.Location

func (*BlockEntry) GetBlockData

func (entry *BlockEntry) GetBlockData() data.Block

func (*BlockEntry) GetCatalog

func (entry *BlockEntry) GetCatalog() *Catalog

func (*BlockEntry) GetDeltaLoc added in v0.8.0

func (entry *BlockEntry) GetDeltaLoc() objectio.Location

func (*BlockEntry) GetDeltaPersistedTS added in v0.8.0

func (entry *BlockEntry) GetDeltaPersistedTS() types.TS

func (*BlockEntry) GetDeltaPersistedTSByTxn added in v0.8.0

func (entry *BlockEntry) GetDeltaPersistedTSByTxn(txn txnif.TxnReader) types.TS

func (*BlockEntry) GetMetaLoc added in v0.8.0

func (entry *BlockEntry) GetMetaLoc() objectio.Location

func (*BlockEntry) GetPKZoneMap added in v0.8.0

func (entry *BlockEntry) GetPKZoneMap(
	ctx context.Context,
	fs fileservice.FileService,
) (zm *index.ZM, err error)

func (*BlockEntry) GetSchema

func (entry *BlockEntry) GetSchema() *Schema

func (*BlockEntry) GetSegment

func (entry *BlockEntry) GetSegment() *SegmentEntry

func (*BlockEntry) GetTerminationTS

func (entry *BlockEntry) GetTerminationTS() (ts types.TS, terminated bool)

GetTerminationTS is coarse API: no consistency check

func (*BlockEntry) GetVisibleDeltaLoc added in v0.8.0

func (entry *BlockEntry) GetVisibleDeltaLoc(txn txnif.TxnReader) objectio.Location

func (*BlockEntry) GetVisibleMetaLoc added in v0.8.0

func (entry *BlockEntry) GetVisibleMetaLoc(txn txnif.TxnReader) objectio.Location

func (*BlockEntry) HasPersistedData added in v0.8.0

func (entry *BlockEntry) HasPersistedData() bool

func (*BlockEntry) HasPersistedDeltaData added in v0.8.0

func (entry *BlockEntry) HasPersistedDeltaData() bool

func (*BlockEntry) InitData

func (entry *BlockEntry) InitData(factory DataFactory)

func (*BlockEntry) Is1PC added in v0.6.0

func (entry *BlockEntry) Is1PC() bool

func (*BlockEntry) IsActive

func (entry *BlockEntry) IsActive() bool

IsActive is coarse API: no consistency check

func (*BlockEntry) IsAppendable

func (entry *BlockEntry) IsAppendable() bool

func (*BlockEntry) Less added in v0.8.0

func (entry *BlockEntry) Less(b *BlockEntry) int

func (*BlockEntry) MakeCommand

func (entry *BlockEntry) MakeCommand(id uint32) (cmd txnif.TxnCmd, err error)

func (*BlockEntry) MakeKey

func (entry *BlockEntry) MakeKey() []byte

func (*BlockEntry) PPString

func (entry *BlockEntry) PPString(level common.PPLevel, depth int, prefix string) string

func (*BlockEntry) PrepareCompact added in v0.6.0

func (entry *BlockEntry) PrepareCompact() bool

PrepareCompact is performance insensitive a block can be compacted: 1. no uncommited node 2. at least one committed node 3. not compacted

func (*BlockEntry) PrepareRollback

func (entry *BlockEntry) PrepareRollback() (err error)

func (*BlockEntry) Repr

func (entry *BlockEntry) Repr() string

func (*BlockEntry) Set1PC added in v0.6.0

func (entry *BlockEntry) Set1PC()

func (*BlockEntry) String

func (entry *BlockEntry) String() string

func (*BlockEntry) StringLocked

func (entry *BlockEntry) StringLocked() string

func (*BlockEntry) StringWithLevel added in v0.6.0

func (entry *BlockEntry) StringWithLevel(level common.PPLevel) string

func (*BlockEntry) StringWithLevelLocked added in v0.6.0

func (entry *BlockEntry) StringWithLevelLocked(level common.PPLevel) string

func (*BlockEntry) UpdateDeltaLoc added in v0.8.0

func (entry *BlockEntry) UpdateDeltaLoc(txn txnif.TxnReader, deltaloc objectio.Location) (isNewNode bool, err error)

func (*BlockEntry) UpdateMetaLoc added in v0.8.0

func (entry *BlockEntry) UpdateMetaLoc(txn txnif.TxnReader, metaLoc objectio.Location) (isNewNode bool, err error)

type BlockNode added in v0.8.0

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

func (*BlockNode) ReadFrom added in v0.8.0

func (node *BlockNode) ReadFrom(r io.Reader) (n int64, err error)

func (*BlockNode) WriteTo added in v0.8.0

func (node *BlockNode) WriteTo(w io.Writer) (n int64, err error)

type Catalog

type Catalog struct {
	*IDAlloctor
	*sync.RWMutex
	// contains filtered or unexported fields
}

func MockCatalog

func MockCatalog() *Catalog

func NewEmptyCatalog added in v0.6.0

func NewEmptyCatalog() *Catalog

func OpenCatalog

func OpenCatalog() (*Catalog, error)

func (*Catalog) AddColumnCnt

func (catalog *Catalog) AddColumnCnt(cnt int)

func (*Catalog) AddEntryLocked

func (catalog *Catalog) AddEntryLocked(database *DBEntry, txn txnif.TxnReader, skipDedup bool) error

func (*Catalog) AddTableCnt

func (catalog *Catalog) AddTableCnt(cnt int)

func (*Catalog) Close

func (catalog *Catalog) Close() error

func (*Catalog) CoarseColumnCnt

func (catalog *Catalog) CoarseColumnCnt() int

func (*Catalog) CoarseDBCnt

func (catalog *Catalog) CoarseDBCnt() int

func (*Catalog) CoarseTableCnt

func (catalog *Catalog) CoarseTableCnt() int

func (*Catalog) CreateDBEntry

func (catalog *Catalog) CreateDBEntry(name, createSql, datTyp string, txn txnif.AsyncTxn) (*DBEntry, error)

func (*Catalog) CreateDBEntryByTS added in v0.6.0

func (catalog *Catalog) CreateDBEntryByTS(name string, ts types.TS) (*DBEntry, error)

func (*Catalog) CreateDBEntryWithID added in v0.6.0

func (catalog *Catalog) CreateDBEntryWithID(name, createSql, datTyp string, id uint64, txn txnif.AsyncTxn) (*DBEntry, error)

func (*Catalog) DropDBEntry

func (catalog *Catalog) DropDBEntry(
	name string,
	txn txnif.AsyncTxn) (newEntry bool, deleted *DBEntry, err error)

func (*Catalog) DropDBEntryByID added in v0.6.0

func (catalog *Catalog) DropDBEntryByID(id uint64, txn txnif.AsyncTxn) (newEntry bool, deleted *DBEntry, err error)

func (*Catalog) GCByTS added in v0.7.0

func (catalog *Catalog) GCByTS(ctx context.Context, ts types.TS)

func (*Catalog) GetDBEntryByName added in v0.6.0

func (catalog *Catalog) GetDBEntryByName(
	tenantID uint32,
	name string,
	txn txnif.TxnReader) (db *DBEntry, err error)

func (*Catalog) GetDatabaseByID

func (catalog *Catalog) GetDatabaseByID(id uint64) (db *DBEntry, err error)

func (*Catalog) GetItemNodeByIDLocked added in v0.6.0

func (catalog *Catalog) GetItemNodeByIDLocked(id uint64) *common.GenericDLNode[*DBEntry]

func (*Catalog) InitSystemDB

func (catalog *Catalog) InitSystemDB()

func (*Catalog) MakeDBIt

func (catalog *Catalog) MakeDBIt(reverse bool) *common.GenericSortedDListIt[*DBEntry]

func (*Catalog) OnReplayBlockBatch added in v0.6.0

func (catalog *Catalog) OnReplayBlockBatch(ins, insTxn, del, delTxn *containers.Batch, dataFactory DataFactory)

func (*Catalog) OnReplayDatabaseBatch added in v0.6.0

func (catalog *Catalog) OnReplayDatabaseBatch(ins, insTxn, del, delTxn *containers.Batch)

func (*Catalog) OnReplaySegmentBatch added in v0.6.0

func (catalog *Catalog) OnReplaySegmentBatch(ins, insTxn, del, delTxn *containers.Batch, dataFactory DataFactory)

func (*Catalog) OnReplayTableBatch added in v0.6.0

func (catalog *Catalog) OnReplayTableBatch(ins, insTxn, insCol, del, delTxn *containers.Batch, dataFactory DataFactory)

func (*Catalog) PPString

func (catalog *Catalog) PPString(level common.PPLevel, depth int, prefix string) string

func (*Catalog) RecurLoop

func (catalog *Catalog) RecurLoop(processor Processor) (err error)

func (*Catalog) RemoveEntry

func (catalog *Catalog) RemoveEntry(database *DBEntry) error

func (*Catalog) ReplayCmd

func (catalog *Catalog) ReplayCmd(
	txncmd txnif.TxnCmd,
	dataFactory DataFactory,
	observer wal.ReplayObserver)

func (*Catalog) ReplayTableRows

func (catalog *Catalog) ReplayTableRows()

func (*Catalog) SimplePPString

func (catalog *Catalog) SimplePPString(level common.PPLevel) string

func (*Catalog) TxnGetDBEntryByID added in v0.6.0

func (catalog *Catalog) TxnGetDBEntryByID(id uint64, txn txnif.AsyncTxn) (*DBEntry, error)

func (*Catalog) TxnGetDBEntryByName added in v0.6.0

func (catalog *Catalog) TxnGetDBEntryByName(name string, txn txnif.AsyncTxn) (*DBEntry, error)

type ColDef

type ColDef struct {
	Name          string
	Idx           int    // indicates its position in all coldefs
	SeqNum        uint16 //
	Type          types.Type
	Hidden        bool // Hidden Column is generated by compute layer, keep hidden from user
	PhyAddr       bool // PhyAddr Column is generated by tae as rowid
	NullAbility   bool
	AutoIncrement bool
	Primary       bool
	SortIdx       int8 // indicates its position in all sort keys
	SortKey       bool
	Comment       string
	ClusterBy     bool
	FakePK        bool // TODO: use column.flag instead of column.fakepk
	Default       []byte
	OnUpdate      []byte
}

func ColDefFromAttribute added in v0.7.0

func ColDefFromAttribute(attr engine.Attribute) (*ColDef, error)

make a basic coldef without sortKey info

func (*ColDef) GetName

func (def *ColDef) GetName() string

func (*ColDef) GetType

func (def *ColDef) GetType() types.Type

func (*ColDef) IsAutoIncrement added in v0.6.0

func (def *ColDef) IsAutoIncrement() bool

func (*ColDef) IsClusterBy added in v0.7.0

func (def *ColDef) IsClusterBy() bool

func (*ColDef) IsHidden

func (def *ColDef) IsHidden() bool

func (*ColDef) IsPhyAddr added in v0.6.0

func (def *ColDef) IsPhyAddr() bool

func (*ColDef) IsPrimary

func (def *ColDef) IsPrimary() bool

func (*ColDef) IsRealPrimary added in v0.8.0

func (def *ColDef) IsRealPrimary() bool

func (*ColDef) IsSortKey

func (def *ColDef) IsSortKey() bool

func (*ColDef) Nullable

func (def *ColDef) Nullable() bool

type ComposedFilter

type ComposedFilter struct {
	CommitFilters []func(*BaseEntryImpl[*MetadataMVCCNode]) bool
	BlockFilters  []func(*BlockEntry) bool
}

func NewComposedFilter

func NewComposedFilter() *ComposedFilter

func (*ComposedFilter) AddBlockFilter

func (filter *ComposedFilter) AddBlockFilter(f func(*BlockEntry) bool)

func (*ComposedFilter) AddCommitFilter

func (filter *ComposedFilter) AddCommitFilter(f func(*BaseEntryImpl[*MetadataMVCCNode]) bool)

func (*ComposedFilter) FilteBlock

func (filter *ComposedFilter) FilteBlock(be *BlockEntry) bool

func (*ComposedFilter) FilteCommit

func (filter *ComposedFilter) FilteCommit(be *BaseEntryImpl[*MetadataMVCCNode]) bool

type DBEntry

type DBEntry struct {
	ID uint64
	*BaseEntryImpl[*EmptyMVCCNode]

	*DBNode
	// contains filtered or unexported fields
}

func NewDBEntry

func NewDBEntry(catalog *Catalog, name, createSql, datTyp string, txn txnif.AsyncTxn) *DBEntry

func NewDBEntryByTS added in v0.6.0

func NewDBEntryByTS(catalog *Catalog, name string, ts types.TS) *DBEntry

func NewDBEntryWithID added in v0.6.0

func NewDBEntryWithID(catalog *Catalog, name string, createSql, datTyp string, id uint64, txn txnif.AsyncTxn) *DBEntry

func NewReplayDBEntry

func NewReplayDBEntry() *DBEntry

func NewSystemDBEntry

func NewSystemDBEntry(catalog *Catalog) *DBEntry

func (*DBEntry) AddEntryLocked

func (e *DBEntry) AddEntryLocked(table *TableEntry, txn txnif.TxnReader, skipDedup bool) (err error)

Catalog entry is created in following steps: 1. Locate the record. Creating always gets the latest DBEntry. 2.1 If there doesn't exist a DBEntry, add new entry and return. 2.2 If there exists a DBEntry: 2.2.1 Check conflication.

  1. Wait for the related txn if need.
  2. w-w conflict when: there's an active txn; or he CommitTS of the latest related txn is larger than StartTS of write txn

2.2.2 Check duplicate/not found. If the entry hasn't been dropped, return ErrDuplicate.

func (*DBEntry) AsCommonID added in v0.8.0

func (e *DBEntry) AsCommonID() *common.ID

func (*DBEntry) CoarseTableCnt

func (e *DBEntry) CoarseTableCnt() int

func (*DBEntry) CreateTableEntry

func (e *DBEntry) CreateTableEntry(schema *Schema, txn txnif.AsyncTxn, dataFactory TableDataFactory) (created *TableEntry, err error)

func (*DBEntry) CreateTableEntryWithTableId added in v0.6.0

func (e *DBEntry) CreateTableEntryWithTableId(schema *Schema, txn txnif.AsyncTxn, dataFactory TableDataFactory, tableId uint64) (created *TableEntry, err error)

func (*DBEntry) DropTableEntry

func (e *DBEntry) DropTableEntry(name string, txn txnif.AsyncTxn) (newEntry bool, deleted *TableEntry, err error)

Catalog entry is dropped in following steps: 1. Locate the record by timestamp 2. Check conflication. 2.1 Wait for the related txn if need. 2.2 w-w conflict when 1. there's an active txn; or

  1. the CommitTS of the latest related txn is larger than StartTS of write txn

3. Check duplicate/not found. If the entry has already been dropped, return ErrNotFound.

func (*DBEntry) DropTableEntryByID added in v0.6.0

func (e *DBEntry) DropTableEntryByID(id uint64, txn txnif.AsyncTxn) (newEntry bool, deleted *TableEntry, err error)

func (*DBEntry) GetBlockEntryByID

func (e *DBEntry) GetBlockEntryByID(id *common.ID) (blk *BlockEntry, err error)

func (*DBEntry) GetCatalog

func (e *DBEntry) GetCatalog() *Catalog

func (*DBEntry) GetCreateAt added in v0.6.0

func (e *DBEntry) GetCreateAt() types.Timestamp

func (*DBEntry) GetCreateSql added in v0.6.0

func (e *DBEntry) GetCreateSql() string

func (*DBEntry) GetDatType added in v0.8.0

func (e *DBEntry) GetDatType() string

func (*DBEntry) GetFullName added in v0.6.0

func (e *DBEntry) GetFullName() string

func (*DBEntry) GetID added in v0.8.0

func (e *DBEntry) GetID() uint64

func (*DBEntry) GetItemNodeByIDLocked added in v0.6.0

func (e *DBEntry) GetItemNodeByIDLocked(id uint64) *common.GenericDLNode[*TableEntry]

func (*DBEntry) GetName

func (e *DBEntry) GetName() string

func (*DBEntry) GetRoleID added in v0.6.0

func (e *DBEntry) GetRoleID() uint32

func (*DBEntry) GetTableEntryByID

func (e *DBEntry) GetTableEntryByID(id uint64) (table *TableEntry, err error)

func (*DBEntry) GetTableEntryByName added in v0.6.0

func (e *DBEntry) GetTableEntryByName(
	tenantID uint32,
	name string,
	txn txnif.TxnReader) (entry *TableEntry, err error)

func (*DBEntry) GetTenantID added in v0.6.0

func (e *DBEntry) GetTenantID() uint32

func (*DBEntry) GetUserID added in v0.6.0

func (e *DBEntry) GetUserID() uint32

func (*DBEntry) Is1PC added in v0.6.0

func (e *DBEntry) Is1PC() bool

func (*DBEntry) IsActive

func (e *DBEntry) IsActive() bool

IsActive is coarse API: no consistency check

func (*DBEntry) IsSubscription added in v0.8.0

func (e *DBEntry) IsSubscription() bool

func (*DBEntry) IsSystemDB

func (e *DBEntry) IsSystemDB() bool

func (*DBEntry) Less added in v0.8.0

func (e *DBEntry) Less(b *DBEntry) int

func (*DBEntry) MakeCommand

func (e *DBEntry) MakeCommand(id uint32) (txnif.TxnCmd, error)

func (*DBEntry) MakeTableIt

func (e *DBEntry) MakeTableIt(reverse bool) *common.GenericSortedDListIt[*TableEntry]

func (*DBEntry) PPString

func (e *DBEntry) PPString(level common.PPLevel, depth int, prefix string) string

func (*DBEntry) PrepareRollback

func (e *DBEntry) PrepareRollback() (err error)

func (*DBEntry) PrettyNameIndex added in v0.8.0

func (e *DBEntry) PrettyNameIndex() string

For test only

func (*DBEntry) RecurLoop

func (e *DBEntry) RecurLoop(processor Processor) (err error)

func (*DBEntry) RemoveEntry

func (e *DBEntry) RemoveEntry(table *TableEntry) (err error)

func (*DBEntry) RenameTableInTxn added in v0.8.0

func (e *DBEntry) RenameTableInTxn(old, new string, tid uint64, tenantID uint32, txn txnif.TxnReader, first bool) error

func (*DBEntry) RollbackRenameTable added in v0.8.0

func (e *DBEntry) RollbackRenameTable(fullname string, tid uint64)

func (*DBEntry) Set1PC added in v0.6.0

func (e *DBEntry) Set1PC()

func (*DBEntry) String

func (e *DBEntry) String() string

func (*DBEntry) StringLocked

func (e *DBEntry) StringLocked() string

func (*DBEntry) StringWithLevel added in v0.6.0

func (e *DBEntry) StringWithLevel(level common.PPLevel) string

func (*DBEntry) StringWithlevelLocked added in v0.6.0

func (e *DBEntry) StringWithlevelLocked(level common.PPLevel) string

func (*DBEntry) TxnGetTableEntryByID added in v0.6.0

func (e *DBEntry) TxnGetTableEntryByID(id uint64, txn txnif.AsyncTxn) (entry *TableEntry, err error)

func (*DBEntry) TxnGetTableEntryByName added in v0.6.0

func (e *DBEntry) TxnGetTableEntryByName(name string, txn txnif.AsyncTxn) (entry *TableEntry, err error)

type DBNode added in v0.8.0

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

func (*DBNode) ReadFrom added in v0.8.0

func (node *DBNode) ReadFrom(r io.Reader) (n int64, err error)

func (*DBNode) WriteTo added in v0.8.0

func (node *DBNode) WriteTo(w io.Writer) (n int64, err error)

type DataFactory

type DataFactory interface {
	MakeTableFactory() TableDataFactory
	MakeSegmentFactory() SegmentDataFactory
	MakeBlockFactory() BlockDataFactory
}

type EmptyMVCCNode added in v0.8.0

type EmptyMVCCNode struct{}

func NewEmptyEmptyMVCCNode added in v0.8.0

func NewEmptyEmptyMVCCNode() *EmptyMVCCNode

func (*EmptyMVCCNode) CloneAll added in v0.8.0

func (e *EmptyMVCCNode) CloneAll() *EmptyMVCCNode

func (*EmptyMVCCNode) CloneData added in v0.8.0

func (e *EmptyMVCCNode) CloneData() *EmptyMVCCNode

func (*EmptyMVCCNode) ReadFrom added in v0.8.0

func (e *EmptyMVCCNode) ReadFrom(r io.Reader) (n int64, err error)

func (*EmptyMVCCNode) String added in v0.8.0

func (e *EmptyMVCCNode) String() string

func (*EmptyMVCCNode) Update added in v0.8.0

func (e *EmptyMVCCNode) Update(vun *EmptyMVCCNode)

for create drop in one txn

func (*EmptyMVCCNode) WriteTo added in v0.8.0

func (e *EmptyMVCCNode) WriteTo(w io.Writer) (n int64, err error)

type EntryCommand

type EntryCommand[T BaseNode[T], N Node] struct {
	*txnbase.BaseCustomizedCmd

	ID *common.ID
	// contains filtered or unexported fields
}

func (*EntryCommand[T, N]) ApplyCommit added in v0.6.0

func (cmd *EntryCommand[T, N]) ApplyCommit()

func (*EntryCommand[T, N]) ApplyRollback added in v0.6.0

func (cmd *EntryCommand[T, N]) ApplyRollback()

func (*EntryCommand[T, N]) Desc

func (cmd *EntryCommand[T, N]) Desc() string

func (*EntryCommand[T, N]) GetCurrVersion added in v0.8.0

func (cmd *EntryCommand[T, N]) GetCurrVersion() uint16

func (*EntryCommand[T, N]) GetID

func (cmd *EntryCommand[T, N]) GetID() *common.ID

func (*EntryCommand[T, N]) GetTs

func (cmd *EntryCommand[T, N]) GetTs() types.TS

func (*EntryCommand[T, N]) GetType

func (cmd *EntryCommand[T, N]) GetType() uint16

func (*EntryCommand[T, N]) IDString

func (cmd *EntryCommand[T, N]) IDString() string

func (*EntryCommand[T, N]) MarshalBinary added in v0.8.0

func (cmd *EntryCommand[T, N]) MarshalBinary() (buf []byte, err error)

func (*EntryCommand[T, N]) ReadFrom

func (cmd *EntryCommand[T, N]) ReadFrom(r io.Reader) (n int64, err error)

func (*EntryCommand[T, N]) SetReplayTxn added in v0.6.0

func (cmd *EntryCommand[T, N]) SetReplayTxn(txn txnif.AsyncTxn)

func (*EntryCommand[T, N]) String

func (cmd *EntryCommand[T, N]) String() string

func (*EntryCommand[T, N]) UnmarshalBinary added in v0.8.0

func (cmd *EntryCommand[T, N]) UnmarshalBinary(buf []byte) (err error)

func (*EntryCommand[T, N]) VerboseString

func (cmd *EntryCommand[T, N]) VerboseString() string

func (*EntryCommand[T, N]) WriteTo

func (cmd *EntryCommand[T, N]) WriteTo(w io.Writer) (n int64, err error)

type EntryMVCCNode added in v0.6.0

type EntryMVCCNode struct {
	CreatedAt, DeletedAt types.TS
}

func DecodeEntryMVCCNode added in v0.8.0

func DecodeEntryMVCCNode(v []byte) *EntryMVCCNode

func (*EntryMVCCNode) ApplyCommit added in v0.6.0

func (un *EntryMVCCNode) ApplyCommit(ts types.TS) (err error)

func (*EntryMVCCNode) Clone added in v0.6.0

func (un *EntryMVCCNode) Clone() *EntryMVCCNode

func (*EntryMVCCNode) CloneData added in v0.6.0

func (un *EntryMVCCNode) CloneData() *EntryMVCCNode

func (*EntryMVCCNode) Delete added in v0.6.0

func (un *EntryMVCCNode) Delete()

func (*EntryMVCCNode) GetCreatedAt added in v0.6.0

func (un *EntryMVCCNode) GetCreatedAt() types.TS

func (*EntryMVCCNode) GetDeletedAt added in v0.6.0

func (un *EntryMVCCNode) GetDeletedAt() types.TS

func (*EntryMVCCNode) HasDropCommitted added in v0.6.0

func (un *EntryMVCCNode) HasDropCommitted() bool

Dropped committed

func (*EntryMVCCNode) HasDropIntent added in v0.6.0

func (un *EntryMVCCNode) HasDropIntent() bool

Dropped committed or uncommitted

func (*EntryMVCCNode) IsCreating added in v0.6.0

func (un *EntryMVCCNode) IsCreating() bool

func (*EntryMVCCNode) PrepareCommit added in v0.6.0

func (un *EntryMVCCNode) PrepareCommit() (err error)

func (*EntryMVCCNode) ReadFrom added in v0.6.0

func (un *EntryMVCCNode) ReadFrom(r io.Reader) (n int64, err error)

func (*EntryMVCCNode) String added in v0.6.0

func (un *EntryMVCCNode) String() string

func (*EntryMVCCNode) WriteTo added in v0.6.0

func (un *EntryMVCCNode) WriteTo(w io.Writer) (n int64, err error)

type EntryState

type EntryState int8
const (
	ES_Appendable EntryState = iota
	ES_NotAppendable
	ES_Frozen
)

func (EntryState) Repr

func (es EntryState) Repr() string

type IDAlloctor

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

func NewIDAllocator

func NewIDAllocator() *IDAlloctor

func (*IDAlloctor) CurrBlock

func (alloc *IDAlloctor) CurrBlock() uint64

func (*IDAlloctor) CurrDB

func (alloc *IDAlloctor) CurrDB() uint64

func (*IDAlloctor) CurrSegment

func (alloc *IDAlloctor) CurrSegment() uint64

func (*IDAlloctor) CurrTable

func (alloc *IDAlloctor) CurrTable() uint64

func (*IDAlloctor) IDStates

func (alloc *IDAlloctor) IDStates() string

func (*IDAlloctor) Init

func (alloc *IDAlloctor) Init(prevDb, prevTbl, prevSeg, prevBlk uint64)

func (*IDAlloctor) NextBlock

func (alloc *IDAlloctor) NextBlock() uint64

func (*IDAlloctor) NextDB

func (alloc *IDAlloctor) NextDB() uint64

func (*IDAlloctor) NextSegment

func (alloc *IDAlloctor) NextSegment() uint64

func (*IDAlloctor) NextTable

func (alloc *IDAlloctor) NextTable() uint64

func (*IDAlloctor) OnReplayBlockID

func (alloc *IDAlloctor) OnReplayBlockID(id uint64)

func (*IDAlloctor) OnReplayDBID

func (alloc *IDAlloctor) OnReplayDBID(id uint64)

func (*IDAlloctor) OnReplaySegmentID

func (alloc *IDAlloctor) OnReplaySegmentID(id uint64)

func (*IDAlloctor) OnReplayTableID

func (alloc *IDAlloctor) OnReplayTableID(id uint64)

type LoopProcessor

type LoopProcessor struct {
	DatabaseFn    func(*DBEntry) error
	TableFn       func(*TableEntry) error
	SegmentFn     func(*SegmentEntry) error
	BlockFn       func(*BlockEntry) error
	PostSegmentFn func(*SegmentEntry) error
}

func (*LoopProcessor) OnBlock

func (p *LoopProcessor) OnBlock(block *BlockEntry) error

func (*LoopProcessor) OnDatabase

func (p *LoopProcessor) OnDatabase(database *DBEntry) error

func (*LoopProcessor) OnPostSegment

func (p *LoopProcessor) OnPostSegment(segment *SegmentEntry) error

func (*LoopProcessor) OnSegment

func (p *LoopProcessor) OnSegment(segment *SegmentEntry) error

func (*LoopProcessor) OnTable

func (p *LoopProcessor) OnTable(table *TableEntry) error

type MVCCNode added in v0.8.0

type MVCCNode[T BaseNode[T]] struct {
	*EntryMVCCNode
	*txnbase.TxnMVCCNode
	BaseNode T
}

func (*MVCCNode[T]) ApplyCommit added in v0.8.0

func (e *MVCCNode[T]) ApplyCommit() (err error)

func (*MVCCNode[T]) ApplyRollback added in v0.8.0

func (e *MVCCNode[T]) ApplyRollback() (err error)

func (*MVCCNode[T]) CloneAll added in v0.8.0

func (e *MVCCNode[T]) CloneAll() *MVCCNode[T]

func (*MVCCNode[T]) CloneData added in v0.8.0

func (e *MVCCNode[T]) CloneData() *MVCCNode[T]

func (*MVCCNode[T]) IsNil added in v0.8.0

func (e *MVCCNode[T]) IsNil() bool

func (*MVCCNode[T]) PrepareCommit added in v0.8.0

func (e *MVCCNode[T]) PrepareCommit() (err error)

func (*MVCCNode[T]) PrepareRollback added in v0.8.0

func (e *MVCCNode[T]) PrepareRollback() (err error)

func (*MVCCNode[T]) ReadFrom added in v0.8.0

func (e *MVCCNode[T]) ReadFrom(r io.Reader) (n int64, err error)

func (*MVCCNode[T]) String added in v0.8.0

func (e *MVCCNode[T]) String() string

func (*MVCCNode[T]) Update added in v0.8.0

func (e *MVCCNode[T]) Update(un *MVCCNode[T])

for create drop in one txn

func (*MVCCNode[T]) WriteTo added in v0.8.0

func (e *MVCCNode[T]) WriteTo(w io.Writer) (n int64, err error)

type MetadataMVCCNode added in v0.6.0

type MetadataMVCCNode struct {
	MetaLoc  objectio.Location
	DeltaLoc objectio.Location
}

func NewEmptyMetadataMVCCNode added in v0.6.0

func NewEmptyMetadataMVCCNode() *MetadataMVCCNode

func (*MetadataMVCCNode) CloneAll added in v0.6.0

func (e *MetadataMVCCNode) CloneAll() *MetadataMVCCNode

func (*MetadataMVCCNode) CloneData added in v0.6.0

func (e *MetadataMVCCNode) CloneData() *MetadataMVCCNode

func (*MetadataMVCCNode) ReadFrom added in v0.6.0

func (e *MetadataMVCCNode) ReadFrom(r io.Reader) (n int64, err error)

func (*MetadataMVCCNode) String added in v0.6.0

func (e *MetadataMVCCNode) String() string

func (*MetadataMVCCNode) Update added in v0.6.0

func (e *MetadataMVCCNode) Update(un *MetadataMVCCNode)

for create drop in one txn

func (*MetadataMVCCNode) WriteTo added in v0.6.0

func (e *MetadataMVCCNode) WriteTo(w io.Writer) (n int64, err error)

type Node added in v0.8.0

type Node interface {
	WriteTo(w io.Writer) (n int64, err error)
	ReadFrom(r io.Reader) (n int64, err error)
}

type Processor

type Processor interface {
	OnDatabase(database *DBEntry) error
	OnTable(table *TableEntry) error
	OnPostSegment(segment *SegmentEntry) error
	OnSegment(segment *SegmentEntry) error
	OnBlock(block *BlockEntry) error
}

XXX this API is broken. In case of inplementing a cursor like interface we cannot use error. moerr is a very heavy mechanism.

Return a int code.

type Schema

type Schema struct {
	Version     uint32
	AcInfo      accessInfo
	Name        string
	ColDefs     []*ColDef
	Comment     string
	Partitioned int8   // 1: the table has partitions ; 0: no partition
	Partition   string // the info about partitions when the table has partitions
	Relkind     string
	Createsql   string
	View        string
	Constraint  []byte

	// do not send to cn
	BlockMaxRows     uint32
	SegmentMaxBlocks uint16
	Extra            *apipb.SchemaExtra

	// do not write down, reconstruct them when reading
	NameMap    map[string]int // name -> logical idx
	SeqnumMap  map[uint16]int // seqnum -> logical idx
	SortKey    *SortKey
	PhyAddrKey *ColDef
}
var SystemColumnSchema *Schema
var SystemDBSchema *Schema
var SystemTableSchema *Schema

func MockSchema

func MockSchema(colCnt int, pkIdx int) *Schema

func MockSchemaAll

func MockSchemaAll(colCnt int, pkIdx int, from ...int) *Schema

MockSchemaAll if char/varchar is needed, colCnt = 14, otherwise colCnt = 12 pkIdx == -1 means no pk defined

func NewEmptySchema

func NewEmptySchema(name string) *Schema

func (*Schema) AllNames

func (s *Schema) AllNames() []string

func (*Schema) AllSeqnums added in v0.8.0

func (s *Schema) AllSeqnums() []uint16

func (*Schema) AllTypes

func (s *Schema) AllTypes() []types.Type

func (*Schema) AppendCol

func (s *Schema) AppendCol(name string, typ types.Type) error

func (*Schema) AppendColDef

func (s *Schema) AppendColDef(def *ColDef) (err error)

func (*Schema) AppendColWithAttribute added in v0.6.0

func (s *Schema) AppendColWithAttribute(attr engine.Attribute) error

func (*Schema) AppendFakePKCol added in v0.8.0

func (s *Schema) AppendFakePKCol() error

func (*Schema) AppendPKCol

func (s *Schema) AppendPKCol(name string, typ types.Type, idx int) error

func (*Schema) AppendSortColWithAttribute added in v0.7.0

func (s *Schema) AppendSortColWithAttribute(attr engine.Attribute, sorIdx int, isPrimary bool) error

non-cn doesn't set IsPrimary in attr, so isPrimary is used explicitly here

func (*Schema) AppendSortKey

func (s *Schema) AppendSortKey(name string, typ types.Type, idx int, isPrimary bool) error

func (*Schema) ApplyAlterTable added in v0.8.0

func (s *Schema) ApplyAlterTable(req *apipb.AlterTableReq) error

ApplyAlterTable modify the schema in place. Unless you know what you are doing, it is recommended to close schema first and then apply alter table.

func (*Schema) Attrs

func (s *Schema) Attrs() []string

func (*Schema) Clone

func (s *Schema) Clone() *Schema

func (*Schema) Finalize

func (s *Schema) Finalize(withoutPhyAddr bool) (err error)

Finalize runs various checks and create shortcuts to phyaddr and sortkey Note: NameMap is already set before calling Finalize

func (*Schema) GetColIdx

func (s *Schema) GetColIdx(attr string) int

GetColIdx returns column index for the given column name if found, otherwise returns -1.

func (*Schema) GetPrimaryKey added in v0.8.0

func (s *Schema) GetPrimaryKey() *ColDef

GetPrimaryKey gets the primary key, including fake primary key.

func (*Schema) GetSeqnum added in v0.8.0

func (s *Schema) GetSeqnum(attr string) uint16

func (*Schema) GetSingleSortKey

func (s *Schema) GetSingleSortKey() *ColDef

GetSingleSortKey should be call only if IsSinglePK is checked

func (*Schema) GetSingleSortKeyIdx

func (s *Schema) GetSingleSortKeyIdx() int

func (*Schema) GetSingleSortKeyType added in v0.7.0

func (s *Schema) GetSingleSortKeyType() types.Type

func (*Schema) HasPK

func (s *Schema) HasPK() bool

func (*Schema) HasSortKey

func (s *Schema) HasSortKey() bool

func (*Schema) IsSameColumns added in v0.8.0

func (s *Schema) IsSameColumns(other *Schema) bool

func (*Schema) Marshal

func (s *Schema) Marshal() (buf []byte, err error)

func (*Schema) MustGetExtraBytes added in v0.8.0

func (s *Schema) MustGetExtraBytes() []byte

func (*Schema) MustRestoreExtra added in v0.8.0

func (s *Schema) MustRestoreExtra(data []byte)

func (*Schema) ReadFrom

func (s *Schema) ReadFrom(r io.Reader) (n int64, err error)

func (*Schema) ReadFromBatch added in v0.6.0

func (s *Schema) ReadFromBatch(bat *containers.Batch, offset int, targetTid uint64) (next int)

func (*Schema) String

func (s *Schema) String() string

func (*Schema) Types

func (s *Schema) Types() []types.Type

type SegmentDataFactory

type SegmentDataFactory = func(meta *SegmentEntry) data.Segment

type SegmentEntry

type SegmentEntry struct {
	ID objectio.Segmentid
	*BaseEntryImpl[*MetadataMVCCNode]

	*SegmentNode
	// contains filtered or unexported fields
}

func NewReplaySegmentEntry

func NewReplaySegmentEntry() *SegmentEntry

func NewSegmentEntry

func NewSegmentEntry(table *TableEntry, id *objectio.Segmentid, txn txnif.AsyncTxn, state EntryState, dataFactory SegmentDataFactory) *SegmentEntry

func NewStandaloneSegment

func NewStandaloneSegment(table *TableEntry, ts types.TS) *SegmentEntry

func NewSysSegmentEntry

func NewSysSegmentEntry(table *TableEntry, id types.Uuid) *SegmentEntry

func (*SegmentEntry) AddEntryLocked

func (entry *SegmentEntry) AddEntryLocked(block *BlockEntry)

func (*SegmentEntry) AsCommonID

func (entry *SegmentEntry) AsCommonID() *common.ID

func (*SegmentEntry) BlockCnt

func (entry *SegmentEntry) BlockCnt() int

func (*SegmentEntry) CollectBlockEntries

func (entry *SegmentEntry) CollectBlockEntries(commitFilter func(be *BaseEntryImpl[*MetadataMVCCNode]) bool, blockFilter func(be *BlockEntry) bool) []*BlockEntry

func (*SegmentEntry) CreateBlock

func (entry *SegmentEntry) CreateBlock(
	txn txnif.AsyncTxn,
	state EntryState,
	dataFactory BlockDataFactory,
	opts *objectio.CreateBlockOpt) (created *BlockEntry, err error)

func (*SegmentEntry) DropBlockEntry

func (entry *SegmentEntry) DropBlockEntry(id *objectio.Blockid, txn txnif.AsyncTxn) (deleted *BlockEntry, err error)

func (*SegmentEntry) GetAppendableBlock added in v0.6.0

func (entry *SegmentEntry) GetAppendableBlock() (blk *BlockEntry)

func (*SegmentEntry) GetAppendableBlockCnt

func (entry *SegmentEntry) GetAppendableBlockCnt() int

func (*SegmentEntry) GetBlockEntryByID

func (entry *SegmentEntry) GetBlockEntryByID(id *objectio.Blockid) (blk *BlockEntry, err error)

func (*SegmentEntry) GetBlockEntryByIDLocked

func (entry *SegmentEntry) GetBlockEntryByIDLocked(id *objectio.Blockid) (blk *BlockEntry, err error)

XXX API like this, why do we need the error? Isn't blk is nil enough?

func (*SegmentEntry) GetCatalog

func (entry *SegmentEntry) GetCatalog() *Catalog

func (*SegmentEntry) GetNextObjectIndex added in v0.8.0

func (entry *SegmentEntry) GetNextObjectIndex() uint16

func (*SegmentEntry) GetNonAppendableBlockCnt added in v0.7.0

func (entry *SegmentEntry) GetNonAppendableBlockCnt() int

GetNonAppendableBlockCnt Non-appendable segment only can contain non-appendable blocks; Appendable segment can contain both of appendable blocks and non-appendable blocks

func (*SegmentEntry) GetSegmentData

func (entry *SegmentEntry) GetSegmentData() data.Segment

func (*SegmentEntry) GetTable

func (entry *SegmentEntry) GetTable() *TableEntry

func (*SegmentEntry) GetTerminationTS added in v0.6.0

func (entry *SegmentEntry) GetTerminationTS() (ts types.TS, terminated bool)

GetTerminationTS is coarse API: no consistency check

func (*SegmentEntry) InitData

func (entry *SegmentEntry) InitData(factory DataFactory)

func (*SegmentEntry) Is1PC added in v0.6.0

func (entry *SegmentEntry) Is1PC() bool

func (*SegmentEntry) IsActive

func (entry *SegmentEntry) IsActive() bool

IsActive is coarse API: no consistency check

func (*SegmentEntry) IsAppendable

func (entry *SegmentEntry) IsAppendable() bool

func (*SegmentEntry) IsSorted added in v0.7.0

func (entry *SegmentEntry) IsSorted() bool

func (*SegmentEntry) LastAppendableBlock

func (entry *SegmentEntry) LastAppendableBlock() (blk *BlockEntry)

func (*SegmentEntry) Less added in v0.8.0

func (entry *SegmentEntry) Less(b *SegmentEntry) int

func (*SegmentEntry) MakeBlockIt

func (entry *SegmentEntry) MakeBlockIt(reverse bool) *common.GenericSortedDListIt[*BlockEntry]

func (*SegmentEntry) MakeCommand

func (entry *SegmentEntry) MakeCommand(id uint32) (cmd txnif.TxnCmd, err error)

func (*SegmentEntry) PPString

func (entry *SegmentEntry) PPString(level common.PPLevel, depth int, prefix string) string

func (*SegmentEntry) PrepareRollback

func (entry *SegmentEntry) PrepareRollback() (err error)

func (*SegmentEntry) RemoveEntry

func (entry *SegmentEntry) RemoveEntry(block *BlockEntry) (err error)

func (*SegmentEntry) ReplayAddEntryLocked added in v0.8.0

func (entry *SegmentEntry) ReplayAddEntryLocked(block *BlockEntry)

func (*SegmentEntry) Repr

func (entry *SegmentEntry) Repr() string

func (*SegmentEntry) Set1PC added in v0.6.0

func (entry *SegmentEntry) Set1PC()

func (*SegmentEntry) SetSorted added in v0.7.0

func (entry *SegmentEntry) SetSorted()

func (*SegmentEntry) String

func (entry *SegmentEntry) String() string

func (*SegmentEntry) StringLocked

func (entry *SegmentEntry) StringLocked() string

func (*SegmentEntry) StringWithLevel added in v0.6.0

func (entry *SegmentEntry) StringWithLevel(level common.PPLevel) string

func (*SegmentEntry) StringWithLevelLocked added in v0.6.0

func (entry *SegmentEntry) StringWithLevelLocked(level common.PPLevel) string

func (*SegmentEntry) TreeMaxDropCommitEntry

func (entry *SegmentEntry) TreeMaxDropCommitEntry() BaseEntry

type SegmentNode added in v0.8.0

type SegmentNode struct {
	IsLocal  bool   // this segment is hold by a localsegment
	SortHint uint64 // sort segment by create time, make iteration on segment determined
	// contains filtered or unexported fields
}

func (*SegmentNode) ReadFrom added in v0.8.0

func (node *SegmentNode) ReadFrom(r io.Reader) (n int64, err error)

not marshal nextObjectIdx

func (*SegmentNode) String added in v0.8.0

func (node *SegmentNode) String() string

func (*SegmentNode) WriteTo added in v0.8.0

func (node *SegmentNode) WriteTo(w io.Writer) (n int64, err error)

type SortKey

type SortKey struct {
	Defs []*ColDef
	// contains filtered or unexported fields
}

func NewSortKey

func NewSortKey() *SortKey

func (*SortKey) AddDef

func (cpk *SortKey) AddDef(def *ColDef) (ok bool)

func (*SortKey) GetDef

func (cpk *SortKey) GetDef(pos int) *ColDef

func (*SortKey) GetSingleIdx

func (cpk *SortKey) GetSingleIdx() int

func (*SortKey) HasColumn

func (cpk *SortKey) HasColumn(idx int) (found bool)

func (*SortKey) IsPrimary

func (cpk *SortKey) IsPrimary() bool

func (*SortKey) Size

func (cpk *SortKey) Size() int

type TableDataFactory

type TableDataFactory = func(meta *TableEntry) data.Table

type TableEntry

type TableEntry struct {
	*BaseEntryImpl[*TableMVCCNode]
	*TableNode
	ID uint64
	// contains filtered or unexported fields
}

func MockStaloneTableEntry

func MockStaloneTableEntry(id uint64, schema *Schema) *TableEntry

func NewReplayTableEntry

func NewReplayTableEntry() *TableEntry

func NewSystemTableEntry

func NewSystemTableEntry(db *DBEntry, id uint64, schema *Schema) *TableEntry

func NewTableEntry

func NewTableEntry(db *DBEntry, schema *Schema, txnCtx txnif.AsyncTxn, dataFactory TableDataFactory) *TableEntry

func NewTableEntryWithTableId added in v0.6.0

func NewTableEntryWithTableId(db *DBEntry, schema *Schema, txnCtx txnif.AsyncTxn, dataFactory TableDataFactory, tableId uint64) *TableEntry

func (*TableEntry) AddEntryLocked

func (entry *TableEntry) AddEntryLocked(segment *SegmentEntry)

func (*TableEntry) AddRows

func (entry *TableEntry) AddRows(delta uint64) uint64

func (*TableEntry) AlterTable added in v0.8.0

func (entry *TableEntry) AlterTable(ctx context.Context, txn txnif.TxnReader, req *apipb.AlterTableReq) (isNewNode bool, newSchema *Schema, err error)

func (*TableEntry) ApplyCommit added in v0.8.0

func (entry *TableEntry) ApplyCommit() (err error)

s: start p: prepare c: commit

         	    old schema  <- | -> new schema
        					   |
	  s------------------p-----c         AlterColumn Txn

Append Txn:

          s------------p----c               Yes
              s-------------p--------c      Yes
s-----------------------p---------c         Yes
           s----------------------p         No, schema at s is not same with schema at p

func (*TableEntry) AsCommonID

func (entry *TableEntry) AsCommonID() *common.ID

func (*TableEntry) CreateSegment

func (entry *TableEntry) CreateSegment(
	txn txnif.AsyncTxn,
	state EntryState,
	dataFactory SegmentDataFactory,
	opts *objectio.CreateSegOpt) (created *SegmentEntry, err error)

func (*TableEntry) CreateWithTxnAndSchema added in v0.8.0

func (entry *TableEntry) CreateWithTxnAndSchema(txn txnif.AsyncTxn, schema *Schema)

func (*TableEntry) DropSegmentEntry

func (entry *TableEntry) DropSegmentEntry(id *types.Segmentid, txn txnif.AsyncTxn) (deleted *SegmentEntry, err error)

func (*TableEntry) FreezeAppend added in v0.8.0

func (entry *TableEntry) FreezeAppend()

func (*TableEntry) GetCatalog

func (entry *TableEntry) GetCatalog() *Catalog

func (*TableEntry) GetColDefs added in v0.6.0

func (entry *TableEntry) GetColDefs() []*ColDef

func (*TableEntry) GetDB

func (entry *TableEntry) GetDB() *DBEntry

func (*TableEntry) GetFullName added in v0.6.0

func (entry *TableEntry) GetFullName() string

func (*TableEntry) GetID added in v0.8.0

func (entry *TableEntry) GetID() uint64

func (*TableEntry) GetLastestSchema added in v0.8.0

func (entry *TableEntry) GetLastestSchema() *Schema

GetLastestSchema returns the latest committed schema

func (*TableEntry) GetRows

func (entry *TableEntry) GetRows() uint64

func (*TableEntry) GetSegmentByID

func (entry *TableEntry) GetSegmentByID(id *types.Segmentid) (seg *SegmentEntry, err error)

func (*TableEntry) GetTableData

func (entry *TableEntry) GetTableData() data.Table

func (*TableEntry) GetTerminationTS added in v0.6.0

func (entry *TableEntry) GetTerminationTS() (ts types.TS, terminated bool)

GetTerminationTS is coarse API: no consistency check

func (*TableEntry) GetVersionSchema added in v0.8.0

func (entry *TableEntry) GetVersionSchema(ver uint32) *Schema

func (*TableEntry) GetVisibilityAndName added in v0.8.0

func (entry *TableEntry) GetVisibilityAndName(txn txnif.TxnReader) (visible, dropped bool, name string)

func (*TableEntry) GetVisibleSchema added in v0.8.0

func (entry *TableEntry) GetVisibleSchema(txn txnif.TxnReader) *Schema

GetVisibleSchema returns committed schema visible at the given txn

func (*TableEntry) Is1PC added in v0.6.0

func (entry *TableEntry) Is1PC() bool

func (*TableEntry) IsActive

func (entry *TableEntry) IsActive() bool

IsActive is coarse API: no consistency check

func (*TableEntry) IsVirtual

func (entry *TableEntry) IsVirtual() bool

func (*TableEntry) LastAppendableSegmemt

func (entry *TableEntry) LastAppendableSegmemt() (seg *SegmentEntry)

func (*TableEntry) LastNonAppendableSegmemt added in v0.7.0

func (entry *TableEntry) LastNonAppendableSegmemt() (seg *SegmentEntry)

func (*TableEntry) Less added in v0.8.0

func (entry *TableEntry) Less(b *TableEntry) int

func (*TableEntry) MakeCommand

func (entry *TableEntry) MakeCommand(id uint32) (cmd txnif.TxnCmd, err error)

func (*TableEntry) MakeSegmentIt

func (entry *TableEntry) MakeSegmentIt(reverse bool) *common.GenericSortedDListIt[*SegmentEntry]

func (*TableEntry) PPString

func (entry *TableEntry) PPString(level common.PPLevel, depth int, prefix string) string

func (*TableEntry) PrepareRollback

func (entry *TableEntry) PrepareRollback() (err error)

func (*TableEntry) RecurLoop

func (entry *TableEntry) RecurLoop(processor Processor) (err error)

func (*TableEntry) RemoveEntry

func (entry *TableEntry) RemoveEntry(segment *SegmentEntry) (err error)

func (*TableEntry) RemoveRows

func (entry *TableEntry) RemoveRows(delta uint64) uint64

func (*TableEntry) Set1PC added in v0.6.0

func (entry *TableEntry) Set1PC()

func (*TableEntry) String

func (entry *TableEntry) String() string

func (*TableEntry) StringLocked

func (entry *TableEntry) StringLocked() string

func (*TableEntry) StringLockedWithLevel added in v0.6.0

func (entry *TableEntry) StringLockedWithLevel(level common.PPLevel) string

func (*TableEntry) StringWithLevel added in v0.6.0

func (entry *TableEntry) StringWithLevel(level common.PPLevel) string

type TableMVCCNode added in v0.6.0

type TableMVCCNode struct {
	// history schema
	Schema *Schema
}

func NewEmptyTableMVCCNode added in v0.6.0

func NewEmptyTableMVCCNode() *TableMVCCNode

func (*TableMVCCNode) CloneAll added in v0.6.0

func (e *TableMVCCNode) CloneAll() *TableMVCCNode

func (*TableMVCCNode) CloneData added in v0.6.0

func (e *TableMVCCNode) CloneData() *TableMVCCNode

func (*TableMVCCNode) ReadFrom added in v0.6.0

func (e *TableMVCCNode) ReadFrom(r io.Reader) (n int64, err error)

func (*TableMVCCNode) String added in v0.6.0

func (e *TableMVCCNode) String() string

func (*TableMVCCNode) Update added in v0.6.0

func (e *TableMVCCNode) Update(un *TableMVCCNode)

for create drop in one txn

func (*TableMVCCNode) WriteTo added in v0.6.0

func (e *TableMVCCNode) WriteTo(w io.Writer) (n int64, err error)

type TableNode added in v0.8.0

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

func (*TableNode) ReadFrom added in v0.8.0

func (node *TableNode) ReadFrom(r io.Reader) (n int64, err error)

func (*TableNode) WriteTo added in v0.8.0

func (node *TableNode) WriteTo(w io.Writer) (n int64, err error)

Jump to

Keyboard shortcuts

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