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

Database.LSMTree.Internal.Paths

Synopsis

Documentation

newtype SessionRoot Source #

Constructors

SessionRoot 

Instances

Instances details
Eq SessionRoot Source # 
Instance details

Defined in Database.LSMTree.Internal.Paths

newtype ActiveDir Source #

Constructors

ActiveDir 

Fields

toSnapshotName :: String -> SnapshotName Source #

Create snapshot name.

The given string must satsify isValidSnapshotName.

Throws the following exceptions:

InvalidSnapshotNameError
If the given string is not a valid snapshot name.

isValidSnapshotName :: String -> Bool Source #

Check if a String would be a valid snapshot name.

Snapshot names consist of lowercase characters, digits, dashes -, and underscores _, and must be between 1 and 64 characters long. >>> isValidSnapshotName "main" True

>>> isValidSnapshotName "temporary-123-test_"
True
>>> isValidSnapshotName "UPPER"
False
>>> isValidSnapshotName "dir/dot.exe"
False
>>> isValidSnapshotName ".."
False
>>> isValidSnapshotName "\\"
False
>>> isValidSnapshotName ""
False
>>> isValidSnapshotName (replicate 100 'a')
False

Snapshot names must be valid directory on both POSIX and Windows. This rules out the following reserved file and directory names on Windows:

>>> isValidSnapshotName "con"
False
>>> isValidSnapshotName "prn"
False
>>> isValidSnapshotName "aux"
False
>>> isValidSnapshotName "nul"
False
>>> isValidSnapshotName "com1" -- "com2", "com3", etc.
False
>>> isValidSnapshotName "lpt1" -- "lpt2", "lpt3", etc.
False

See, e.g., the VBA docs for the "Bad file name or number" error.

newtype NamedSnapshotDir Source #

The directory for a specific, named snapshot.

Not to be confused with the snapshots directory, which holds all named snapshot directories.

Table paths

tableBlobPath :: SessionRoot -> Unique -> FsPath Source #

The file name for a table's write buffer blob file

Run paths

data RunFsPaths Source #

The (relative) file path locations of all the files used by the run:

The following files exist for a run:

  1. ${n}.keyops: the sorted run of key/operation pairs
  2. ${n}.blobs: the blob values associated with the key/operations
  3. ${n}.filter: a Bloom filter of all the keys in the run
  4. ${n}.index: an index from keys to disk page numbers
  5. ${n}.checksums: a file listing the crc32c checksums of the other files

The representation doesn't store the full, name, just the number n. Use the accessor functions to get the actual names.

Constructors

RunFsPaths 

Fields

Instances

Instances details
Show RunFsPaths Source # 
Instance details

Defined in Database.LSMTree.Internal.Paths

NFData RunFsPaths Source # 
Instance details

Defined in Database.LSMTree.Internal.Paths

Methods

rnf :: RunFsPaths -> () #

pathsForRunFiles :: RunFsPaths -> ForRunFiles FsPath Source #

Paths to all files associated with this run, except runChecksumsPath.

Checksums for Run files

Checksums for WriteBuffer files

ForRunFiles abstraction

newtype ForKOps a Source #

Constructors

ForKOps 

Fields

Instances

Instances details
Foldable ForKOps Source # 
Instance details

Defined in Database.LSMTree.Internal.Paths

Methods

fold :: Monoid m => ForKOps m -> m #

foldMap :: Monoid m => (a -> m) -> ForKOps a -> m #

foldMap' :: Monoid m => (a -> m) -> ForKOps a -> m #

foldr :: (a -> b -> b) -> b -> ForKOps a -> b #

foldr' :: (a -> b -> b) -> b -> ForKOps a -> b #

foldl :: (b -> a -> b) -> b -> ForKOps a -> b #

foldl' :: (b -> a -> b) -> b -> ForKOps a -> b #

foldr1 :: (a -> a -> a) -> ForKOps a -> a #

foldl1 :: (a -> a -> a) -> ForKOps a -> a #

toList :: ForKOps a -> [a] #

null :: ForKOps a -> Bool #

length :: ForKOps a -> Int #

elem :: Eq a => a -> ForKOps a -> Bool #

maximum :: Ord a => ForKOps a -> a #

minimum :: Ord a => ForKOps a -> a #

sum :: Num a => ForKOps a -> a #

product :: Num a => ForKOps a -> a #

Traversable ForKOps Source # 
Instance details

Defined in Database.LSMTree.Internal.Paths

Methods

traverse :: Applicative f => (a -> f b) -> ForKOps a -> f (ForKOps b) #

sequenceA :: Applicative f => ForKOps (f a) -> f (ForKOps a) #

mapM :: Monad m => (a -> m b) -> ForKOps a -> m (ForKOps b) #

sequence :: Monad m => ForKOps (m a) -> m (ForKOps a) #

Functor ForKOps Source # 
Instance details

Defined in Database.LSMTree.Internal.Paths

Methods

fmap :: (a -> b) -> ForKOps a -> ForKOps b #

(<$) :: a -> ForKOps b -> ForKOps a #

Show a => Show (ForKOps a) Source # 
Instance details

Defined in Database.LSMTree.Internal.Paths

Methods

showsPrec :: Int -> ForKOps a -> ShowS #

show :: ForKOps a -> String #

showList :: [ForKOps a] -> ShowS #

newtype ForBlob a Source #

Constructors

ForBlob 

Fields

Instances

Instances details
Foldable ForBlob Source # 
Instance details

Defined in Database.LSMTree.Internal.Paths

Methods

fold :: Monoid m => ForBlob m -> m #

foldMap :: Monoid m => (a -> m) -> ForBlob a -> m #

foldMap' :: Monoid m => (a -> m) -> ForBlob a -> m #

foldr :: (a -> b -> b) -> b -> ForBlob a -> b #

foldr' :: (a -> b -> b) -> b -> ForBlob a -> b #

foldl :: (b -> a -> b) -> b -> ForBlob a -> b #

foldl' :: (b -> a -> b) -> b -> ForBlob a -> b #

foldr1 :: (a -> a -> a) -> ForBlob a -> a #

foldl1 :: (a -> a -> a) -> ForBlob a -> a #

toList :: ForBlob a -> [a] #

null :: ForBlob a -> Bool #

length :: ForBlob a -> Int #

elem :: Eq a => a -> ForBlob a -> Bool #

maximum :: Ord a => ForBlob a -> a #

minimum :: Ord a => ForBlob a -> a #

sum :: Num a => ForBlob a -> a #

product :: Num a => ForBlob a -> a #

Traversable ForBlob Source # 
Instance details

Defined in Database.LSMTree.Internal.Paths

Methods

traverse :: Applicative f => (a -> f b) -> ForBlob a -> f (ForBlob b) #

sequenceA :: Applicative f => ForBlob (f a) -> f (ForBlob a) #

mapM :: Monad m => (a -> m b) -> ForBlob a -> m (ForBlob b) #

sequence :: Monad m => ForBlob (m a) -> m (ForBlob a) #

Functor ForBlob Source # 
Instance details

Defined in Database.LSMTree.Internal.Paths

Methods

fmap :: (a -> b) -> ForBlob a -> ForBlob b #

(<$) :: a -> ForBlob b -> ForBlob a #

Show a => Show (ForBlob a) Source # 
Instance details

Defined in Database.LSMTree.Internal.Paths

Methods

showsPrec :: Int -> ForBlob a -> ShowS #

show :: ForBlob a -> String #

showList :: [ForBlob a] -> ShowS #

newtype ForFilter a Source #

Constructors

ForFilter 

Fields

Instances

Instances details
Foldable ForFilter Source # 
Instance details

Defined in Database.LSMTree.Internal.Paths

Methods

fold :: Monoid m => ForFilter m -> m #

foldMap :: Monoid m => (a -> m) -> ForFilter a -> m #

foldMap' :: Monoid m => (a -> m) -> ForFilter a -> m #

foldr :: (a -> b -> b) -> b -> ForFilter a -> b #

foldr' :: (a -> b -> b) -> b -> ForFilter a -> b #

foldl :: (b -> a -> b) -> b -> ForFilter a -> b #

foldl' :: (b -> a -> b) -> b -> ForFilter a -> b #

foldr1 :: (a -> a -> a) -> ForFilter a -> a #

foldl1 :: (a -> a -> a) -> ForFilter a -> a #

toList :: ForFilter a -> [a] #

null :: ForFilter a -> Bool #

length :: ForFilter a -> Int #

elem :: Eq a => a -> ForFilter a -> Bool #

maximum :: Ord a => ForFilter a -> a #

minimum :: Ord a => ForFilter a -> a #

sum :: Num a => ForFilter a -> a #

product :: Num a => ForFilter a -> a #

Traversable ForFilter Source # 
Instance details

Defined in Database.LSMTree.Internal.Paths

Methods

traverse :: Applicative f => (a -> f b) -> ForFilter a -> f (ForFilter b) #

sequenceA :: Applicative f => ForFilter (f a) -> f (ForFilter a) #

mapM :: Monad m => (a -> m b) -> ForFilter a -> m (ForFilter b) #

sequence :: Monad m => ForFilter (m a) -> m (ForFilter a) #

Functor ForFilter Source # 
Instance details

Defined in Database.LSMTree.Internal.Paths

Methods

fmap :: (a -> b) -> ForFilter a -> ForFilter b #

(<$) :: a -> ForFilter b -> ForFilter a #

Show a => Show (ForFilter a) Source # 
Instance details

Defined in Database.LSMTree.Internal.Paths

newtype ForIndex a Source #

Constructors

ForIndex 

Fields

Instances

Instances details
Foldable ForIndex Source # 
Instance details

Defined in Database.LSMTree.Internal.Paths

Methods

fold :: Monoid m => ForIndex m -> m #

foldMap :: Monoid m => (a -> m) -> ForIndex a -> m #

foldMap' :: Monoid m => (a -> m) -> ForIndex a -> m #

foldr :: (a -> b -> b) -> b -> ForIndex a -> b #

foldr' :: (a -> b -> b) -> b -> ForIndex a -> b #

foldl :: (b -> a -> b) -> b -> ForIndex a -> b #

foldl' :: (b -> a -> b) -> b -> ForIndex a -> b #

foldr1 :: (a -> a -> a) -> ForIndex a -> a #

foldl1 :: (a -> a -> a) -> ForIndex a -> a #

toList :: ForIndex a -> [a] #

null :: ForIndex a -> Bool #

length :: ForIndex a -> Int #

elem :: Eq a => a -> ForIndex a -> Bool #

maximum :: Ord a => ForIndex a -> a #

minimum :: Ord a => ForIndex a -> a #

sum :: Num a => ForIndex a -> a #

product :: Num a => ForIndex a -> a #

Traversable ForIndex Source # 
Instance details

Defined in Database.LSMTree.Internal.Paths

Methods

traverse :: Applicative f => (a -> f b) -> ForIndex a -> f (ForIndex b) #

sequenceA :: Applicative f => ForIndex (f a) -> f (ForIndex a) #

mapM :: Monad m => (a -> m b) -> ForIndex a -> m (ForIndex b) #

sequence :: Monad m => ForIndex (m a) -> m (ForIndex a) #

Functor ForIndex Source # 
Instance details

Defined in Database.LSMTree.Internal.Paths

Methods

fmap :: (a -> b) -> ForIndex a -> ForIndex b #

(<$) :: a -> ForIndex b -> ForIndex a #

Show a => Show (ForIndex a) Source # 
Instance details

Defined in Database.LSMTree.Internal.Paths

Methods

showsPrec :: Int -> ForIndex a -> ShowS #

show :: ForIndex a -> String #

showList :: [ForIndex a] -> ShowS #

data ForRunFiles a Source #

Stores someting for each run file (except the checksums file), allowing to easily do something for all of them without mixing them up.

Constructors

ForRunFiles 

Fields

Instances

Instances details
Foldable ForRunFiles Source # 
Instance details

Defined in Database.LSMTree.Internal.Paths

Methods

fold :: Monoid m => ForRunFiles m -> m #

foldMap :: Monoid m => (a -> m) -> ForRunFiles a -> m #

foldMap' :: Monoid m => (a -> m) -> ForRunFiles a -> m #

foldr :: (a -> b -> b) -> b -> ForRunFiles a -> b #

foldr' :: (a -> b -> b) -> b -> ForRunFiles a -> b #

foldl :: (b -> a -> b) -> b -> ForRunFiles a -> b #

foldl' :: (b -> a -> b) -> b -> ForRunFiles a -> b #

foldr1 :: (a -> a -> a) -> ForRunFiles a -> a #

foldl1 :: (a -> a -> a) -> ForRunFiles a -> a #

toList :: ForRunFiles a -> [a] #

null :: ForRunFiles a -> Bool #

length :: ForRunFiles a -> Int #

elem :: Eq a => a -> ForRunFiles a -> Bool #

maximum :: Ord a => ForRunFiles a -> a #

minimum :: Ord a => ForRunFiles a -> a #

sum :: Num a => ForRunFiles a -> a #

product :: Num a => ForRunFiles a -> a #

Traversable ForRunFiles Source # 
Instance details

Defined in Database.LSMTree.Internal.Paths

Methods

traverse :: Applicative f => (a -> f b) -> ForRunFiles a -> f (ForRunFiles b) #

sequenceA :: Applicative f => ForRunFiles (f a) -> f (ForRunFiles a) #

mapM :: Monad m => (a -> m b) -> ForRunFiles a -> m (ForRunFiles b) #

sequence :: Monad m => ForRunFiles (m a) -> m (ForRunFiles a) #

Applicative ForRunFiles Source # 
Instance details

Defined in Database.LSMTree.Internal.Paths

Methods

pure :: a -> ForRunFiles a #

(<*>) :: ForRunFiles (a -> b) -> ForRunFiles a -> ForRunFiles b #

liftA2 :: (a -> b -> c) -> ForRunFiles a -> ForRunFiles b -> ForRunFiles c #

(*>) :: ForRunFiles a -> ForRunFiles b -> ForRunFiles b #

(<*) :: ForRunFiles a -> ForRunFiles b -> ForRunFiles a #

Functor ForRunFiles Source # 
Instance details

Defined in Database.LSMTree.Internal.Paths

Methods

fmap :: (a -> b) -> ForRunFiles a -> ForRunFiles b #

(<$) :: a -> ForRunFiles b -> ForRunFiles a #

Show a => Show (ForRunFiles a) Source # 
Instance details

Defined in Database.LSMTree.Internal.Paths

WriteBuffer paths