Safe Haskell | Safe-Inferred |
---|---|
Language | GHC2021 |
Database.LSMTree.Internal.Index.CompactAcc
Description
Incremental construction of a compact index yields chunks of the primary array that can be serialised incrementally.
Incremental construction is an ST
computation that can be started using
new
, returning an IndexCompactAcc
structure that accumulates internal
state. append
ing new pages to the IndexCompactAcc
might yield Chunk
s.
Incremental construction can be finalised with unsafeEnd
, which yields both
a Chunk
(possibly) and the IndexCompact
.
Synopsis
- data IndexCompactAcc s = IndexCompactAcc {
- icaPrimary :: !(STRef s (NonEmpty (MVector s Word64)))
- icaClashes :: !(STRef s (NonEmpty (MVector s Bit)))
- icaTieBreaker :: !(STRef s (Map (Unsliced SerialisedKey) PageNo))
- icaLargerThanPage :: !(STRef s (NonEmpty (MVector s Bit)))
- icaMaxChunkSize :: !Int
- icaCurrentPageNumber :: !(STRef s Int)
- icaLastMaxPrimbits :: !(STRef s (SMaybe Word64))
- icaLastMinKey :: !(STRef s (SMaybe SerialisedKey))
- new :: Int -> ST s (IndexCompactAcc s)
- newWithDefaults :: ST s (IndexCompactAcc s)
- appendSingle :: forall s. (SerialisedKey, SerialisedKey) -> IndexCompactAcc s -> ST s (Maybe Chunk)
- appendMulti :: forall s. (SerialisedKey, Word32) -> IndexCompactAcc s -> ST s [Chunk]
- unsafeEnd :: IndexCompactAcc s -> ST s (Maybe Chunk, IndexCompact)
- data SMaybe a
- unsafeWriteRange :: Unbox a => MVector s a -> Bound Int -> Bound Int -> a -> ST s ()
- vectorLowerBound :: Bound Int -> Int
- mvectorUpperBound :: MVector v a => v s a -> Bound Int -> Int
Construction
data IndexCompactAcc s Source #
A mutable version of IndexCompact
. See incremental
construction.
Constructors
IndexCompactAcc | |
Fields
|
new :: Int -> ST s (IndexCompactAcc s) Source #
creates a new mutable index with a maximum chunk size of
new
maxcsizemaxcsize
.
PRECONDITION: maxcsize > 0
Note: after initialisation, maxcsize
can no longer be changed.
newWithDefaults :: ST s (IndexCompactAcc s) Source #
For a specification of this operation, see the documentation of its type-agnostic version.
appendSingle :: forall s. (SerialisedKey, SerialisedKey) -> IndexCompactAcc s -> ST s (Maybe Chunk) Source #
For a specification of this operation, see the documentation of its type-agnostic version.
appendMulti :: forall s. (SerialisedKey, Word32) -> IndexCompactAcc s -> ST s [Chunk] Source #
For a specification of this operation, see the documentation of its type-agnostic version.
unsafeEnd :: IndexCompactAcc s -> ST s (Maybe Chunk, IndexCompact) Source #
For a specification of this operation, see the documentation of its type-agnostic version.