src/Db.bend checks
raw source on the hub · import mylsm-lsm-store@0.4.0.0/src/Db.bend as Db
6 imports
import Base import ./Keys.bend as Keys import ./MemTable.bend as MemTable import ./Sstable.bend as Sstable import ./Wal.bend as Wal import ./Manifest.bend as Manifest
Types
type BEntry source · line 27 · raw
Data
Represent BEntry data used by the database state and operations.
BEntry@tab:String -> @key:String -> @val:Maybe<&2, String> -> BEntry
type Db source · line 40 · raw
Data
manifest_token is the exact serialized Manifest observed by this handle. Flush and compaction compare it before publication to reject stale-handle drift.
Db@dir:String -> @mem:0x571fd57004366c423dfd4b51196743b5/src/MemTable.MemTable -> @frozen:0x571fd57004366c423dfd4b51196743b5/src/MemTable.MemTable -> @batch_cap:Nat -> @bcache:List<&2, BEntry> -> @levels:List<&2, List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table>> -> @flushed:Nat -> @manifest_token:String -> @mem_count:Nat -> @frozen_count:Nat -> Db
type RotRes source · line 47 · raw
Data
Rotation result: both tables plus their exact counts, so no pass ever walks a memtable to learn its size. Counts stay exact by construction (open_db starts 0/0; every transition does arithmetic, never List.length).
Rot@mem:0x571fd57004366c423dfd4b51196743b5/src/MemTable.MemTable -> @frozen:0x571fd57004366c423dfd4b51196743b5/src/MemTable.MemTable -> @mem_count:Nat -> @frozen_count:Nat -> RotRes
Definitions
def default_batch_cap source · line 31 · raw
Nat
Return the default batch cap in the database state and operations.
def bcache_bound source · line 35 · raw
Nat
Handle bcache bound in the database state and operations.
def wal_path source · line 51 · raw
@+dir:String -> String
Handle wal path in the database state and operations.
def open_db source · line 55 · raw
@+dir:String -> Db
Open db for the database state and operations.
def apply_mut source · line 61 · raw
@+mem:0x571fd57004366c423dfd4b51196743b5/src/MemTable.MemTable -> @+mut:0x571fd57004366c423dfd4b51196743b5/src/Wal.Mut -> 0x571fd57004366c423dfd4b51196743b5/src/MemTable.MemTable
Apply mut for the database state and operations.
def apply_batch source · line 69 · raw
@+muts:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Wal.Mut> -> @+mem:0x571fd57004366c423dfd4b51196743b5/src/MemTable.MemTable -> 0x571fd57004366c423dfd4b51196743b5/src/MemTable.MemTable
Apply batch for the database state and operations.
def table_entries source · line 79 · raw
@+tab:0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table -> List<&2, 0x571fd57004366c423dfd4b51196743b5/src/MemTable.Entry>
Return the table entries for the database state and operations.
def level_entries source · line 85 · raw
@+tabs:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table> -> List<&2, 0x571fd57004366c423dfd4b51196743b5/src/MemTable.Entry>
Return the level entries for the database state and operations.
def all_level_entries source · line 93 · raw
@+lvls:List<&2, List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table>> -> List<&2, 0x571fd57004366c423dfd4b51196743b5/src/MemTable.Entry>
Check all level entries for the database state and operations.
def all_entries source · line 101 · raw
@+db:Db -> List<&2, 0x571fd57004366c423dfd4b51196743b5/src/MemTable.Entry>
Check all entries for the database state and operations.
def table_hit_if source · line 109 · raw
@present:Bool -> @tab:0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table -> @+key:String -> Maybe<&2, Maybe<&2, String>>
Return the table hit if for the database state and operations.
def table_hit source · line 117 · raw
@+tab:0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table -> @+key:String -> Maybe<&2, Maybe<&2, String>>
Return the table hit for the database state and operations.
def tables_hits source · line 121 · raw
@+tabs:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table> -> @+key:String -> List<&2, Maybe<&2, Maybe<&2, String>>>
Return the table s hits for the database state and operations.
def levels_hits source · line 129 · raw
@+lvls:List<&2, List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table>> -> @+key:String -> List<&2, Maybe<&2, Maybe<&2, String>>>
Return the level s hits for the database state and operations.
def hits_first source · line 137 · raw
@+hits:List<&2, Maybe<&2, Maybe<&2, String>>> -> Maybe<&2, Maybe<&2, String>>
Resolve the hit for s first for the database state and operations.
def flatten_opt source · line 147 · raw
@+opt:Maybe<&2, Maybe<&2, String>> -> Maybe<&2, String>
Flatten opt for the database state and operations.
def db_get source · line 155 · raw
@+db:Db -> @+key:String -> Maybe<&2, String>
Handle db get in the database state and operations.
def pick_hit source · line 167 · raw
@hit:Bool -> @ans:Maybe<&2, String> -> @best:Maybe<&2, Maybe<&2, String>> -> Maybe<&2, Maybe<&2, String>>
Select hit for the database state and operations.
def bcache_go source · line 175 · raw
@+cache:List<&2, BEntry> -> @+tab:String -> @+key:String -> @+best:Maybe<&2, Maybe<&2, String>> -> Maybe<&2, Maybe<&2, String>>
Handle bcache go in the database state and operations.
def bcache_lookup source · line 188 · raw
@+cache:List<&2, BEntry> -> @+tab:String -> @+key:String -> Maybe<&2, Maybe<&2, String>>
Handle bcache lookup in the database state and operations.
def bcache_push_all source · line 192 · raw
@+fresh:List<&2, BEntry> -> @+old:List<&2, BEntry> -> List<&2, BEntry>
Handle bcache push all in the database state and operations.
def probe_fill source · line 196 · raw
@hit:Maybe<&2, Maybe<&2, String>> -> @+tab:String -> @+key:String -> Pair(Maybe<&2, Maybe<&2, String>>, List<&2, BEntry>)
Probe fill for the database state and operations.
def probe_cached source · line 208 · raw
@cached:Maybe<&2, Maybe<&2, String>> -> @+tab:0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table -> @+key:String -> Pair(Maybe<&2, Maybe<&2, String>>, List<&2, BEntry>)
Probe cached for the database state and operations.
def table_probe source · line 220 · raw
@+tab:0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table -> @+key:String -> @+cache:List<&2, BEntry> -> Pair(Maybe<&2, Maybe<&2, String>>, List<&2, BEntry>)
Return the table probe for the database state and operations.
def tables_cons source · line 228 · raw
@cur:Pair(Maybe<&2, Maybe<&2, String>>, List<&2, BEntry>) -> @rest:Pair(List<&2, Maybe<&2, Maybe<&2, String>>>, List<&2, BEntry>) -> Pair(List<&2, Maybe<&2, Maybe<&2, String>>>, List<&2, BEntry>)
Return the table s cons for the database state and operations.
def tables_walk source · line 239 · raw
@+tabs:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table> -> @+key:String -> @+cache:List<&2, BEntry> -> Pair(List<&2, Maybe<&2, Maybe<&2, String>>>, List<&2, BEntry>)
Return the table s walk for the database state and operations.
def levels_cons source · line 251 · raw
@cur:Pair(List<&2, Maybe<&2, Maybe<&2, String>>>, List<&2, BEntry>) -> @rest:Pair(List<&2, Maybe<&2, Maybe<&2, String>>>, List<&2, BEntry>) -> Pair(List<&2, Maybe<&2, Maybe<&2, String>>>, List<&2, BEntry>)
Return the level s cons for the database state and operations.
def levels_cached source · line 262 · raw
@+lvls:List<&2, List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table>> -> @+key:String -> @+cache:List<&2, BEntry> -> Pair(List<&2, Maybe<&2, Maybe<&2, String>>>, List<&2, BEntry>)
Return the level s cached for the database state and operations.
def cached_levels source · line 274 · raw
@lr:Pair(List<&2, Maybe<&2, Maybe<&2, String>>>, List<&2, BEntry>) -> @+dir:String -> @+mem:0x571fd57004366c423dfd4b51196743b5/src/MemTable.MemTable -> @+frozen:0x571fd57004366c423dfd4b51196743b5/src/MemTable.MemTable -> @+batch_cap:Nat -> @+bcache:List<&2, BEntry> -> @+levels:List<&2, List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table>> -> @+flushed:Nat -> @+manifest_token:String -> @+mem_count:Nat -> @+frozen_count:Nat -> Pair(Db, Maybe<&2, String>)
Read the cached levels for the database state and operations.
def cached_frozen source · line 292 · raw
@fhit:Maybe<&2, Maybe<&2, String>> -> @+dir:String -> @+mem:0x571fd57004366c423dfd4b51196743b5/src/MemTable.MemTable -> @+frozen:0x571fd57004366c423dfd4b51196743b5/src/MemTable.MemTable -> @+batch_cap:Nat -> @+bcache:List<&2, BEntry> -> @+levels:List<&2, List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table>> -> @+flushed:Nat -> @+manifest_token:String -> @+key:String -> @+mem_count:Nat -> @+frozen_count:Nat -> Pair(Db, Maybe<&2, String>)
Read the cached frozen for the database state and operations.
def cached_mem source · line 313 · raw
@mhit:Maybe<&2, Maybe<&2, String>> -> @+dir:String -> @+mem:0x571fd57004366c423dfd4b51196743b5/src/MemTable.MemTable -> @+frozen:0x571fd57004366c423dfd4b51196743b5/src/MemTable.MemTable -> @+batch_cap:Nat -> @+bcache:List<&2, BEntry> -> @+levels:List<&2, List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table>> -> @+flushed:Nat -> @+manifest_token:String -> @+key:String -> @+mem_count:Nat -> @+frozen_count:Nat -> Pair(Db, Maybe<&2, String>)
Read the cached mem for the database state and operations.
def db_get_cached source · line 334 · raw
@+db:Db -> @+key:String -> Pair(Db, Maybe<&2, String>)
Handle db get cached in the database state and operations.
def batch_len source · line 340 · raw
@+muts:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Wal.Mut> -> Nat
Handle batch len in the database state and operations.
def rotate_cnt source · line 344 · raw
@full:Bool -> @+grown:0x571fd57004366c423dfd4b51196743b5/src/MemTable.MemTable -> @+frozen:0x571fd57004366c423dfd4b51196743b5/src/MemTable.MemTable -> @+count:Nat -> @+fcount:Nat -> RotRes
Rotate cnt for the database state and operations.
def frozen_empty source · line 352 · raw
@+frozen:0x571fd57004366c423dfd4b51196743b5/src/MemTable.MemTable -> Bool
Handle frozen empty in the database state and operations.
def rotate_after source · line 362 · raw
@+grown:0x571fd57004366c423dfd4b51196743b5/src/MemTable.MemTable -> @+frozen:0x571fd57004366c423dfd4b51196743b5/src/MemTable.MemTable -> @+count:Nat -> @+fcount:Nat -> RotRes
Rotate after for the database state and operations.
def apply_and_rotate source · line 366 · raw
@+muts:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Wal.Mut> -> @+mem:0x571fd57004366c423dfd4b51196743b5/src/MemTable.MemTable -> @+frozen:0x571fd57004366c423dfd4b51196743b5/src/MemTable.MemTable -> @+mem_count:Nat -> @+frozen_count:Nat -> RotRes
Apply and rotate for the database state and operations.
def apply_done source · line 376 · raw
@res:RotRes -> @+dir:String -> @+batch_cap:Nat -> @+bcache:List<&2, BEntry> -> @+levels:List<&2, List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table>> -> @+flushed:Nat -> @+manifest_token:String -> Db
Apply done for the database state and operations.
def rot_done source · line 390 · raw
@res:RotRes -> @+dir:String -> @+batch_cap:Nat -> @+bcache:List<&2, BEntry> -> @+levels:List<&2, List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table>> -> @+flushed:Nat -> @+manifest_token:String -> Result<&1, &1, Pair(U32, String), Db>
Handle rot done in the database state and operations.
def batch_cap_of source · line 402 · raw
@+db:Db -> Nat
Handle batch cap of in the database state and operations.
def with_batch_cap source · line 408 · raw
@+db:Db -> @+cap:Nat -> Db
Handle with batch cap in the database state and operations.
def staged_muts source · line 414 · raw
@+staged:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Wal.Batch> -> List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Wal.Mut>
Stage d muts for the database state and operations.