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

Database.LSMTree.Extras.MergingRunData

Description

Utilities for generating MergingRuns. Tests and benchmarks should preferably use these utilities instead of (re-)defining their own.

Synopsis

Create merging runs

unsafeCreateMergingRun :: IsMergeType t => HasFS IO h -> HasBlockIO IO h -> ResolveSerialisedValue -> RunParams -> FsPath -> UniqCounter IO -> SerialisedMergingRunData t -> IO (Ref (MergingRun t IO h)) Source #

Flush serialised merging run data to disk.

This might leak resources if not run with asynchronous exceptions masked. Consider using withMergingRun instead.

Use of this function should be paired with a releaseRef.

MergingRunData

data MergingRunData t k v b Source #

A data structure suitable for creating arbitrary MergingRuns.

Note: 'b ~ Void' should rule out blobs.

Currently, ongoing merges are always "fresh", i.e. there is no merge work already performed.

TODO: Generate merge credits and supply them in unsafeCreateMergingRun, similarly to how ScheduledMergesTest does it.

Constructors

CompletedMergeData t (RunData k v b) 
OngoingMergeData t [NonEmptyRunData k v b]

at least 2 inputs

Instances

Instances details
(Arbitrary t, Ord k, Arbitrary k, Arbitrary v, Arbitrary b) => Arbitrary (MergingRunData t k v b) Source # 
Instance details

Defined in Database.LSMTree.Extras.MergingRunData

Methods

arbitrary :: Gen (MergingRunData t k v b) Source #

shrink :: MergingRunData t k v b -> [MergingRunData t k v b] Source #

(Show k, Show b, Show v, Show t) => Show (MergingRunData t k v b) Source # 
Instance details

Defined in Database.LSMTree.Extras.MergingRunData

Methods

showsPrec :: Int -> MergingRunData t k v b -> ShowS #

show :: MergingRunData t k v b -> String #

showList :: [MergingRunData t k v b] -> ShowS #

(Eq k, Eq b, Eq v, Eq t) => Eq (MergingRunData t k v b) Source # 
Instance details

Defined in Database.LSMTree.Extras.MergingRunData

Methods

(==) :: MergingRunData t k v b -> MergingRunData t k v b -> Bool #

(/=) :: MergingRunData t k v b -> MergingRunData t k v b -> Bool #

mergingRunDataInvariant :: MergingRunData t k v b -> Either String () Source #

See mergeInvariant in the prototype.

mapMergingRunData :: Ord k' => (k -> k') -> (v -> v') -> (b -> b') -> MergingRunData t k v b -> MergingRunData t k' v' b' Source #

QuickCheck

genMergingRunData :: Ord k => Gen t -> Gen k -> Gen v -> Gen b -> Gen (MergingRunData t k v b) Source #

shrinkMergingRunData :: Ord k => (k -> [k]) -> (v -> [v]) -> (b -> [b]) -> MergingRunData t k v b -> [MergingRunData t k v b] Source #