lsm-tree-0.1.0.0: Log-structured merge-trees
Safe HaskellSafe-Inferred
LanguageGHC2021

Database.LSMTree.Internal.Snapshot.Codec

Description

Encoders and decoders for snapshot metadata

Synopsis

Versioning

data SnapshotVersion Source #

The version of a snapshot.

A snapshot format version is a number. Version numbers are consecutive and increasing. A single release of the library may support several older snapshot format versions, and thereby provide backwards compatibility. Support for old versions is not guaranteed indefinitely, but backwards compatibility is guaranteed for at least the previous version, and preferably for more. Forwards compatibility is not provided at all: snapshots with a later version than the current version for the library release will always fail.

Constructors

V0 

Writing and reading files

writeFileSnapshotMetaData Source #

Arguments

:: MonadThrow m 
=> HasFS m h 
-> FsPath

Target file for snapshot metadata

-> FsPath

Target file for checksum

-> SnapshotMetaData 
-> m () 

Encode SnapshotMetaData and write it to SnapshotMetaDataFile.

In the presence of exceptions, newly created files will not be removed. It is up to the user of this function to clean up the files.

readFileSnapshotMetaData Source #

Arguments

:: MonadThrow m 
=> HasFS m h 
-> FsPath

Source file for snapshot metadata

-> FsPath

Source file for checksum

-> m SnapshotMetaData 

Read from SnapshotMetaDataFile and attempt to decode it to SnapshotMetaData.

Encoding and decoding

class Encode a where Source #

Methods

encode :: a -> Encoding Source #

Instances

Instances details
Encode BloomFilterAlloc Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

Encode DiskCachePolicy Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

Encode FencePointerIndexType Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

Encode MergePolicy Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

Encode MergeSchedule Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

Encode SizeRatio Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

Encode TableConfig Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

Encode WriteBufferAlloc Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

Encode NumEntries Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

Encode MergePolicyForLevel Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

Encode NominalCredits Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

Encode NominalDebt Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

Encode IndexType Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

Encode LevelMergeType Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

Encode TreeMergeType Source #

We start the tags for these merge types at an offset. This way, if we serialise MR.MergeMidLevel :: MR.LevelMergeType as 0 and then accidentally try deserialising it as a MR.TreeMergeType, that will fail.

However, LevelMergeType and TreeMergeType are only different (overlapping) subsets of MergeType. In particular, MergeLastLevel and MergeLevel are semantically the same. Encoding them as the same number leaves the door open to relaxing the restrictions on which merge types can occur where, e.g. decoding them as a general MergeType, without having to change the file format.

Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

Encode MergeCredits Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

Encode MergeDebt Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

Encode RunBloomFilterAlloc Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

Encode RunDataCaching Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

Encode RunParams Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

Encode RunNumber Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

Encode SnapshotLabel Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

Encode SnapshotMetaData Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

Encode SnapshotRun Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

Encode SnapshotTableType Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

Encode SnapshotVersion Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

Encode r => Encode (SnapIncomingRun r) Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

Encode r => Encode (SnapLevel r) Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

Encode r => Encode (SnapLevels r) Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

Encode r => Encode (SnapMergingTree r) Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

Encode r => Encode (SnapMergingTreeState r) Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

Encode r => Encode (SnapPendingMerge r) Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

Encode r => Encode (SnapPreExistingRun r) Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

Encode a => Encode (Versioned a) Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

Encode r => Encode (Vector r) Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

Methods

encode :: Vector r -> Encoding Source #

(Encode t, Encode r) => Encode (SnapMergingRun t r) Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

class Decode a where Source #

Decoder that is not parameterised by a SnapshotVersion.

Used only for SnapshotVersion and Versioned, which live outside the SnapshotMetaData type hierarchy.

Methods

decode :: Decoder s a Source #

Instances

Instances details
Decode SnapshotVersion Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

DecodeVersioned a => Decode (Versioned a) Source #

Decodes a SnapshotVersion first, and then passes that into the versioned decoder for a.

Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

Methods

decode :: Decoder s (Versioned a) Source #

class DecodeVersioned a where Source #

Decoder parameterised by a SnapshotVersion.

Used for every type in the SnapshotMetaData type hierarchy.

Instances

Instances details
DecodeVersioned BloomFilterAlloc Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

DecodeVersioned DiskCachePolicy Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

DecodeVersioned FencePointerIndexType Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

DecodeVersioned MergePolicy Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

DecodeVersioned MergeSchedule Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

DecodeVersioned SizeRatio Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

DecodeVersioned TableConfig Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

DecodeVersioned WriteBufferAlloc Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

DecodeVersioned NumEntries Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

DecodeVersioned MergePolicyForLevel Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

DecodeVersioned NominalCredits Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

DecodeVersioned NominalDebt Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

DecodeVersioned IndexType Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

DecodeVersioned LevelMergeType Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

DecodeVersioned TreeMergeType Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

DecodeVersioned MergeCredits Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

DecodeVersioned MergeDebt Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

DecodeVersioned RunBloomFilterAlloc Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

DecodeVersioned RunDataCaching Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

DecodeVersioned RunParams Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

DecodeVersioned RunNumber Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

DecodeVersioned SnapshotLabel Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

DecodeVersioned SnapshotMetaData Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

DecodeVersioned SnapshotRun Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

DecodeVersioned SnapshotTableType Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

DecodeVersioned r => DecodeVersioned (SnapIncomingRun r) Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

DecodeVersioned r => DecodeVersioned (SnapLevel r) Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

DecodeVersioned r => DecodeVersioned (SnapLevels r) Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

DecodeVersioned r => DecodeVersioned (SnapMergingTree r) Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

DecodeVersioned r => DecodeVersioned (SnapMergingTreeState r) Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

DecodeVersioned r => DecodeVersioned (SnapPendingMerge r) Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

DecodeVersioned r => DecodeVersioned (SnapPreExistingRun r) Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

DecodeVersioned r => DecodeVersioned (Vector r) Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

(DecodeVersioned t, DecodeVersioned r) => DecodeVersioned (SnapMergingRun t r) Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

newtype Versioned a Source #

Constructors

Versioned 

Fields

Instances

Instances details
Show a => Show (Versioned a) Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

Eq a => Eq (Versioned a) Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

Methods

(==) :: Versioned a -> Versioned a -> Bool #

(/=) :: Versioned a -> Versioned a -> Bool #

DecodeVersioned a => Decode (Versioned a) Source #

Decodes a SnapshotVersion first, and then passes that into the versioned decoder for a.

Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec

Methods

decode :: Decoder s (Versioned a) Source #

Encode a => Encode (Versioned a) Source # 
Instance details

Defined in Database.LSMTree.Internal.Snapshot.Codec