~/bend-docscommunity

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.

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.

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).

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.