Safe Haskell | Safe-Inferred |
---|---|
Language | GHC2021 |
Database.LSMTree.Extras.MergingRunData
Description
Utilities for generating MergingRun
s. Tests and benchmarks should
preferably use these utilities instead of (re-)defining their own.
Synopsis
- withMergingRun :: IsMergeType t => HasFS IO h -> HasBlockIO IO h -> ResolveSerialisedValue -> RunParams -> FsPath -> UniqCounter IO -> SerialisedMergingRunData t -> (Ref (MergingRun t IO h) -> IO a) -> IO a
- unsafeCreateMergingRun :: IsMergeType t => HasFS IO h -> HasBlockIO IO h -> ResolveSerialisedValue -> RunParams -> FsPath -> UniqCounter IO -> SerialisedMergingRunData t -> IO (Ref (MergingRun t IO h))
- data MergingRunData t k v b
- = CompletedMergeData t (RunData k v b)
- | OngoingMergeData t [NonEmptyRunData k v b]
- mergingRunDataMergeType :: MergingRunData t k v b -> t
- mergingRunDataInvariant :: MergingRunData t k v b -> Either String ()
- mapMergingRunData :: Ord k' => (k -> k') -> (v -> v') -> (b -> b') -> MergingRunData t k v b -> MergingRunData t k' v' b'
- type SerialisedMergingRunData t = MergingRunData t SerialisedKey SerialisedValue SerialisedBlob
- serialiseMergingRunData :: (SerialiseKey k, SerialiseValue v, SerialiseValue b) => MergingRunData t k v b -> SerialisedMergingRunData t
- labelMergingRunData :: Show t => SerialisedMergingRunData t -> Property -> Property
- genMergingRunData :: Ord k => Gen t -> Gen k -> Gen v -> Gen b -> Gen (MergingRunData t k v b)
- shrinkMergingRunData :: Ord k => (k -> [k]) -> (v -> [v]) -> (b -> [b]) -> MergingRunData t k v b -> [MergingRunData t k v b]
Create merging runs
withMergingRun :: IsMergeType t => HasFS IO h -> HasBlockIO IO h -> ResolveSerialisedValue -> RunParams -> FsPath -> UniqCounter IO -> SerialisedMergingRunData t -> (Ref (MergingRun t IO h) -> IO a) -> IO a Source #
Create a temporary MergingRun
using unsafeCreateMergingRun
.
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 MergingRun
s.
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
(Arbitrary t, Ord k, Arbitrary k, Arbitrary v, Arbitrary b) => Arbitrary (MergingRunData t k v b) Source # | |
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 # | |
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 # | |
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 # |
mergingRunDataMergeType :: MergingRunData t k v b -> t Source #
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 #
type SerialisedMergingRunData t = MergingRunData t SerialisedKey SerialisedValue SerialisedBlob Source #
serialiseMergingRunData :: (SerialiseKey k, SerialiseValue v, SerialiseValue b) => MergingRunData t k v b -> SerialisedMergingRunData t Source #
QuickCheck
labelMergingRunData :: Show t => SerialisedMergingRunData t -> Property -> Property Source #
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 #