| Safe Haskell | Safe-Inferred | 
|---|---|
| Language | GHC2021 | 
Database.LSMTree.Extras.MergingTreeData
Description
Utilities for generating MergingTrees. Tests and benchmarks should
 preferably use these utilities instead of (re-)defining their own.
Synopsis
- withMergingTree :: HasFS IO h -> HasBlockIO IO h -> RefCtx -> ResolveSerialisedValue -> Salt -> RunParams -> FsPath -> UniqCounter IO -> SerialisedMergingTreeData -> (Ref (MergingTree IO h) -> IO a) -> IO a
 - unsafeCreateMergingTree :: HasFS IO h -> HasBlockIO IO h -> RefCtx -> ResolveSerialisedValue -> Salt -> 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 -> RefCtx -> ResolveSerialisedValue -> Salt -> 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 -> RefCtx -> ResolveSerialisedValue -> Salt -> 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 MergingTrees.
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 #