Documentation
¶
Overview ¶
Package wal provides Write-Ahead Logging for XxSql storage engine.
Index ¶
- Constants
- type LSN
- type Manager
- func (m *Manager) Append(recordType RecordType, txnID, pageID uint64, tableName string, data []byte) (LSN, error)
- func (m *Manager) AppendRecord(r *Record) (LSN, error)
- func (m *Manager) Close() error
- func (m *Manager) GetCurrentLSN() LSN
- func (m *Manager) GetFlushedLSN() LSN
- func (m *Manager) LogAbort(txnID uint64) (LSN, error)
- func (m *Manager) LogBegin(txnID uint64) (LSN, error)
- func (m *Manager) LogCheckpoint(txnID uint64, checkpointData []byte) (LSN, error)
- func (m *Manager) LogCommit(txnID uint64) (LSN, error)
- func (m *Manager) LogCreateTable(txnID uint64, tableName string, schemaData []byte) (LSN, error)
- func (m *Manager) LogDelete(txnID uint64, tableName string, rowData []byte) (LSN, error)
- func (m *Manager) LogDropTable(txnID uint64, tableName string) (LSN, error)
- func (m *Manager) LogInsert(txnID uint64, tableName string, rowData []byte) (LSN, error)
- func (m *Manager) LogPageWrite(txnID, pageID uint64, pageData []byte) (LSN, error)
- func (m *Manager) LogSequenceCreate(name string, startValue int64) error
- func (m *Manager) LogSequenceDrop(name string) error
- func (m *Manager) LogSequenceNext(name string, value int64) error
- func (m *Manager) LogUpdate(txnID uint64, tableName string, oldData, newData []byte) (LSN, error)
- func (m *Manager) NeedsCheckpoint() (bool, error)
- func (m *Manager) Open() error
- func (m *Manager) Replay(fn func(*Record) error) error
- func (m *Manager) Size() (int64, error)
- func (m *Manager) Sync() error
- func (m *Manager) Truncate() error
- type ManagerConfig
- type Record
- type RecordType
Constants ¶
const ( // WALFileExt is the extension for WAL files. WALFileExt = ".xwal" // WALHeaderSize is the size of the WAL file header. WALHeaderSize = 32 // WALRecordHeaderSize is the size of a WAL record header. // LSN (8) + Type (1) + TxnID (8) + PageID (8) = 25 bytes WALRecordHeaderSize = 25 // DefaultSyncInterval is the default sync interval. DefaultSyncInterval = 100 * time.Millisecond // DefaultMaxSize is the default max WAL file size (64MB). DefaultMaxSize = 64 * 1024 * 1024 )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type LSN ¶
type LSN uint64
LSN represents a Log Sequence Number.
const InvalidLSN LSN = 0
InvalidLSN represents an invalid LSN.
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
Manager manages WAL operations.
func NewManager ¶
func NewManager(config ManagerConfig) *Manager
NewManager creates a new WAL manager.
func (*Manager) Append ¶
func (m *Manager) Append(recordType RecordType, txnID, pageID uint64, tableName string, data []byte) (LSN, error)
Append appends a record to the WAL.
func (*Manager) AppendRecord ¶
AppendRecord appends a pre-constructed record to the WAL.
func (*Manager) GetCurrentLSN ¶
GetCurrentLSN returns the current LSN.
func (*Manager) GetFlushedLSN ¶
GetFlushedLSN returns the last flushed LSN.
func (*Manager) LogCheckpoint ¶
LogCheckpoint logs a checkpoint.
func (*Manager) LogCreateTable ¶
LogCreateTable logs a create table operation.
func (*Manager) LogDropTable ¶
LogDropTable logs a drop table operation.
func (*Manager) LogPageWrite ¶
LogPageWrite logs a page write operation.
func (*Manager) LogSequenceCreate ¶
LogSequenceCreate logs a sequence creation.
func (*Manager) LogSequenceDrop ¶
LogSequenceDrop logs a sequence drop.
func (*Manager) LogSequenceNext ¶
LogSequenceNext logs a sequence next value operation.
func (*Manager) NeedsCheckpoint ¶
NeedsCheckpoint returns true if a checkpoint is needed.
type ManagerConfig ¶
ManagerConfig holds WAL manager configuration.
type Record ¶
type Record struct {
LSN LSN
Type RecordType
TxnID uint64
PageID uint64
TableName string
Data []byte
Timestamp int64
}
Record represents a WAL record.
func UnmarshalRecord ¶
UnmarshalRecord deserializes bytes to a record.
type RecordType ¶
type RecordType uint8
RecordType represents the type of WAL record.
const ( RecordTypeBegin RecordType = iota RecordTypeCommit RecordTypeAbort RecordTypeInsert RecordTypeUpdate RecordTypeDelete RecordTypeCreateTable RecordTypeDropTable RecordTypeCreateIndex RecordTypeDropIndex RecordTypeCheckpoint RecordTypePageWrite RecordTypeSequenceCreate RecordTypeSequenceDrop RecordTypeSequenceNext )
func (RecordType) String ¶
func (t RecordType) String() string
String returns the string representation.