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) ---
Sess@-a:Quant -> @-A:Kind(a) -> @run:(@_:0x0ae7ac793853e753f5f74c16e06ee078/src/Db.Db -> Pair(0x0ae7ac793853e753f5f74c16e06ee078/src/Db.Db, A)) -> Sess<a, A>
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.