~/bend-docscommunity

mylsm.bend fails

raw source on the hub · import mylsm-lsm-store@0.3.1.0/mylsm.bend as Mylsm

10 imports
import Base
import ./src/Keys.bend as Keys
import ./src/MemTable.bend as MemTable
import ./src/SortedRun.bend as SortedRun
import ./src/Sstable.bend as Sstable
import ./src/SstFile.bend as SstFile
import ./src/Wal.bend as Wal
import ./src/Manifest.bend as Manifest
import ./src/MergeIter.bend as MergeIter
import ./src/Db.bend as Db

Types

type Sess source · line 85 · raw

@-a:Quant -> @-A:Kind(a) -> Kind(a <&> &1)

--- Level 1: Sess session monad (primary API) ---

Definitions

def cmp source · line 13 · raw

@+s1:String -> @+s2:String -> Cmp

--- Level 2: part control (1:1 delegates) ---

def eq source · line 17 · raw

@+s1:String -> @+s2:String -> Bool

Key equality: true exactly for identical strings.

def mem_empty source · line 21 · raw

0x0ae7ac793853e753f5f74c16e06ee078/src/MemTable.MemTable

Empty MemTable: no entries, count zero.

def mem_put source · line 25 · raw

@tab:0x0ae7ac793853e753f5f74c16e06ee078/src/MemTable.MemTable -> @key:String -> @val:String -> 0x0ae7ac793853e753f5f74c16e06ee078/src/MemTable.MemTable

MemTable with one live version prepended (newest-first log).

def mem_del source · line 29 · raw

@tab:0x0ae7ac793853e753f5f74c16e06ee078/src/MemTable.MemTable -> @key:String -> 0x0ae7ac793853e753f5f74c16e06ee078/src/MemTable.MemTable

MemTable with one tombstone prepended; hides older versions on read.

def mem_get source · line 33 · raw

@tab:0x0ae7ac793853e753f5f74c16e06ee078/src/MemTable.MemTable -> @+key:String -> Maybe<&2, String>

Newest-first read; a tombstone answers None and hides older versions.

def mem_count source · line 37 · raw

@tab:0x0ae7ac793853e753f5f74c16e06ee078/src/MemTable.MemTable -> Nat

Number of log entries, live and tombstoned.

def sort_newest source · line 41 · raw

@entries:List<&2, 0x0ae7ac793853e753f5f74c16e06ee078/src/MemTable.Entry> -> List<&2, 0x0ae7ac793853e753f5f74c16e06ee078/src/MemTable.Entry>

Canonicalize newest-first entries into a strict ordered run.

def range_scan source · line 45 · raw

@+merged:List<&2, 0x0ae7ac793853e753f5f74c16e06ee078/src/MemTable.Entry> -> @lo:String -> @hi:String -> List<&2, 0x0ae7ac793853e753f5f74c16e06ee078/src/MemTable.Entry>

Range scan over a merged run: lo <= key < hi, tombstones dropped.

def sst_build source · line 49 · raw

@+entries:List<&2, 0x0ae7ac793853e753f5f74c16e06ee078/src/MemTable.Entry> -> @level:Nat -> @est_keys:Nat -> 0x0ae7ac793853e753f5f74c16e06ee078/src/Sstable.Table

Build an SSTable, canonicalizing entries newest-first.

def sst_from_sorted_unique source · line 53 · raw

@+entries:List<&2, 0x0ae7ac793853e753f5f74c16e06ee078/src/MemTable.Entry> -> @level:Nat -> 0x0ae7ac793853e753f5f74c16e06ee078/src/Sstable.Table

Build an SSTable trusting an already strict, unique run (no sorting).

def sst_build_sorted source · line 57 · raw

@+entries:List<&2, 0x0ae7ac793853e753f5f74c16e06ee078/src/MemTable.Entry> -> @level:Nat -> @est_keys:Nat -> 0x0ae7ac793853e753f5f74c16e06ee078/src/Sstable.Table

Build an SSTable from a sorted run with an explicit key estimate.

def wal_encode source · line 61 · raw

@batch:0x0ae7ac793853e753f5f74c16e06ee078/src/Wal.Batch -> String

Encode a WAL batch to its exact on-disk bytes.

def wal_decode source · line 65 · raw

@+str:String -> Maybe<&2, 0x0ae7ac793853e753f5f74c16e06ee078/src/Wal.Batch>

Decode WAL bytes; None on corrupt or truncated input (fail-closed).

def sst_serialize source · line 69 · raw

@+entries:List<&2, 0x0ae7ac793853e753f5f74c16e06ee078/src/MemTable.Entry> -> @+level:Nat -> String

Serialize entries to the compact v2 table wire format.

def sst_parse source · line 73 · raw

@+encoded:String -> Maybe<&2, 0x0ae7ac793853e753f5f74c16e06ee078/src/Sstable.Table>

Parse v2 table bytes with checksum verification; None when rejected.

def mfst_serialize source · line 77 · raw

@mfst:0x0ae7ac793853e753f5f74c16e06ee078/src/Manifest.Manifest -> String

Serialize a Manifest to its exact on-disk bytes.

def mfst_parse source · line 81 · raw

@+str:String -> Maybe<&2, 0x0ae7ac793853e753f5f74c16e06ee078/src/Manifest.Manifest>

Parse Manifest bytes; None on corrupt input (fail-closed).

def Sess.pure source · line 88 · raw

@-a:Quant -> @-A:Kind(a) -> @val:A -> Sess<a, A>

def Sess.run_go source · line 91 · raw

@-b:Quant -> @-B:Kind(b) -> @sess:Sess<b, B> -> @st:0x0ae7ac793853e753f5f74c16e06ee078/src/Db.Db -> Pair(0x0ae7ac793853e753f5f74c16e06ee078/src/Db.Db, B)

def Sess.apply source · line 95 · raw

@-a:Quant -> @-A:Kind(a) -> @-b:Quant -> @-B:Kind(b) -> @pair:Pair(0x0ae7ac793853e753f5f74c16e06ee078/src/Db.Db, A) -> @fun:(@_:A -> Sess<b, B>) -> Pair(0x0ae7ac793853e753f5f74c16e06ee078/src/Db.Db, B)

def Sess.bind source · line 99 · raw

@-a:Quant -> @-A:Kind(a) -> @-B:Kind(a) -> @sess:Sess<a, A> -> @fun:(@_:A -> Sess<a, B>) -> Sess<a, B>

def open source · line 103 · raw

@+dir:String -> 0x0ae7ac793853e753f5f74c16e06ee078/src/Db.Db

Open a database handle over a directory label (pure; no IO touched).

def put_go source · line 107 · raw

@+db:0x0ae7ac793853e753f5f74c16e06ee078/src/Db.Db -> @+key:String -> @+val:String -> 0x0ae7ac793853e753f5f74c16e06ee078/src/Db.Db

Pure put transition used by the session action.

def del_go source · line 113 · raw

@+db:0x0ae7ac793853e753f5f74c16e06ee078/src/Db.Db -> @+key:String -> 0x0ae7ac793853e753f5f74c16e06ee078/src/Db.Db

Pure delete transition used by the session action.

def batch_go source · line 119 · raw

@+db:0x0ae7ac793853e753f5f74c16e06ee078/src/Db.Db -> @+muts:List<&2, 0x0ae7ac793853e753f5f74c16e06ee078/src/Wal.Mut> -> 0x0ae7ac793853e753f5f74c16e06ee078/src/Db.Db

Pure batch transition used by the session action.

def sget_go source · line 125 · raw

@+db:0x0ae7ac793853e753f5f74c16e06ee078/src/Db.Db -> @+key:String -> Pair(0x0ae7ac793853e753f5f74c16e06ee078/src/Db.Db, Maybe<&2, String>)

Pure point-read transition used by the session action (cache-backed).

def sput source · line 129 · raw

@+key:String -> @+val:String -> Sess<&2, Unit>

Session step writing one key.

def sdel source · line 133 · raw

@+key:String -> Sess<&2, Unit>

Session step deleting one key.

def sbatch source · line 137 · raw

@+muts:List<&2, 0x0ae7ac793853e753f5f74c16e06ee078/src/Wal.Mut> -> Sess<&2, Unit>

Session step applying a whole mutation batch at once.

def sget source · line 141 · raw

@+key:String -> Sess<&2, Maybe<&2, String>>

Session step reading one key.

def run_sess source · line 145 · raw

@-a:Quant -> @-A:Kind(a) -> @st:0x0ae7ac793853e753f5f74c16e06ee078/src/Db.Db -> @sess:Sess<a, A> -> Pair(0x0ae7ac793853e753f5f74c16e06ee078/src/Db.Db, A)

Execute a whole session against a handle.

def value_of source · line 149 · raw

@-a:Quant -> @-A:Kind(a) -> @pair:Pair(0x0ae7ac793853e753f5f74c16e06ee078/src/Db.Db, A) -> A

Project the answer out of a runner pair.

def encode_batch source · line 154 · raw

@batch:0x0ae7ac793853e753f5f74c16e06ee078/src/Wal.Batch -> String

Render the exact WAL bytes a VFS adapter frames with wal_frame plus fsync.