Safe Haskell | Safe-Inferred |
---|---|
Language | GHC2021 |
Database.LSMTree.Extras.MergingTreeData
Description
Utilities for generating MergingTree
s. Tests and benchmarks should
preferably use these utilities instead of (re-)defining their own.
Synopsis
- withMergingTree :: HasFS IO h -> HasBlockIO IO h -> ResolveSerialisedValue -> RunParams -> FsPath -> UniqCounter IO -> SerialisedMergingTreeData -> (Ref (MergingTree IO h) -> IO a) -> IO a
- unsafeCreateMergingTree :: HasFS IO h -> HasBlockIO IO h -> ResolveSerialisedValue -> RunParams -> FsPath -> UniqCounter IO -> SerialisedMergingTreeData -> IO (Ref (MergingTree IO h))
- data MergingTreeData k v b
- = CompletedTreeMergeData (RunData k v b)
- | OngoingTreeMergeData (MergingRunData TreeMergeType k v b)
- | PendingLevelMergeData [PreExistingRunData k v b] (Maybe (MergingTreeData k v b))
- | PendingUnionMergeData [MergingTreeData k v b]
- data PreExistingRunData k v b
- = PreExistingRunData (RunData k v b)
- | PreExistingMergingRunData (MergingRunData LevelMergeType k v b)
- mergingTreeDataInvariant :: MergingTreeData k v b -> Either String ()
- mapMergingTreeData :: Ord k' => (k -> k') -> (v -> v') -> (b -> b') -> MergingTreeData k v b -> MergingTreeData k' v' b'
- type SerialisedMergingTreeData = MergingTreeData SerialisedKey SerialisedValue SerialisedBlob
- serialiseMergingTreeData :: (SerialiseKey k, SerialiseValue v, SerialiseValue b) => MergingTreeData k v b -> SerialisedMergingTreeData
- labelMergingTreeData :: SerialisedMergingTreeData -> Property -> Property
- genMergingTreeData :: Ord k => Gen k -> Gen v -> Gen b -> Gen (MergingTreeData k v b)
- shrinkMergingTreeData :: Ord k => (k -> [k]) -> (v -> [v]) -> (b -> [b]) -> MergingTreeData k v b -> [MergingTreeData k v b]
Create merging trees
withMergingTree :: HasFS IO h -> HasBlockIO IO h -> ResolveSerialisedValue -> RunParams -> FsPath -> UniqCounter IO -> SerialisedMergingTreeData -> (Ref (MergingTree IO h) -> IO a) -> IO a Source #
Create a temporary MergingTree
using unsafeCreateMergingTree
.
unsafeCreateMergingTree :: HasFS IO h -> HasBlockIO IO h -> ResolveSerialisedValue -> RunParams -> FsPath -> UniqCounter IO -> SerialisedMergingTreeData -> IO (Ref (MergingTree IO h)) Source #
Flush serialised merging tree data to disk.
This might leak resources if not run with asynchronous exceptions masked.
Consider using withMergingTree
instead.
Use of this function should be paired with a releaseRef
.
MergingTreeData
data MergingTreeData k v b Source #
A data structure suitable for creating arbitrary MergingTree
s.
Note: 'b ~ Void' should rule out blobs.
Constructors
CompletedTreeMergeData (RunData k v b) | |
OngoingTreeMergeData (MergingRunData TreeMergeType k v b) | |
PendingLevelMergeData [PreExistingRunData k v b] (Maybe (MergingTreeData k v b)) | not both empty! |
PendingUnionMergeData [MergingTreeData k v b] | at least 2 children |
Instances
(Ord k, Arbitrary k, Arbitrary v, Arbitrary b) => Arbitrary (MergingTreeData k v b) Source # | |
Defined in Database.LSMTree.Extras.MergingTreeData Methods arbitrary :: Gen (MergingTreeData k v b) Source # shrink :: MergingTreeData k v b -> [MergingTreeData k v b] Source # | |
(Show k, Show b, Show v) => Show (MergingTreeData k v b) Source # | |
Defined in Database.LSMTree.Extras.MergingTreeData Methods showsPrec :: Int -> MergingTreeData k v b -> ShowS # show :: MergingTreeData k v b -> String # showList :: [MergingTreeData k v b] -> ShowS # | |
(Eq k, Eq b, Eq v) => Eq (MergingTreeData k v b) Source # | |
Defined in Database.LSMTree.Extras.MergingTreeData Methods (==) :: MergingTreeData k v b -> MergingTreeData k v b -> Bool # (/=) :: MergingTreeData k v b -> MergingTreeData k v b -> Bool # |
data PreExistingRunData k v b Source #
Constructors
PreExistingRunData (RunData k v b) | |
PreExistingMergingRunData (MergingRunData LevelMergeType k v b) |
Instances
(Show k, Show b, Show v) => Show (PreExistingRunData k v b) Source # | |
Defined in Database.LSMTree.Extras.MergingTreeData Methods showsPrec :: Int -> PreExistingRunData k v b -> ShowS # show :: PreExistingRunData k v b -> String # showList :: [PreExistingRunData k v b] -> ShowS # | |
(Eq k, Eq b, Eq v) => Eq (PreExistingRunData k v b) Source # | |
Defined in Database.LSMTree.Extras.MergingTreeData Methods (==) :: PreExistingRunData k v b -> PreExistingRunData k v b -> Bool # (/=) :: PreExistingRunData k v b -> PreExistingRunData k v b -> Bool # |
mergingTreeDataInvariant :: MergingTreeData k v b -> Either String () Source #
See treeInvariant
in prototype.
mapMergingTreeData :: Ord k' => (k -> k') -> (v -> v') -> (b -> b') -> MergingTreeData k v b -> MergingTreeData k' v' b' Source #
type SerialisedMergingTreeData = MergingTreeData SerialisedKey SerialisedValue SerialisedBlob Source #
serialiseMergingTreeData :: (SerialiseKey k, SerialiseValue v, SerialiseValue b) => MergingTreeData k v b -> SerialisedMergingTreeData Source #
QuickCheck
genMergingTreeData :: Ord k => Gen k -> Gen v -> Gen b -> Gen (MergingTreeData k v b) Source #
shrinkMergingTreeData :: Ord k => (k -> [k]) -> (v -> [v]) -> (b -> [b]) -> MergingTreeData k v b -> [MergingTreeData k v b] Source #