src/Compact.bend checks
raw source on the hub · import mylsm-lsm-store@0.4.0.0/src/Compact.bend as Compact
9 imports
import Base import ./Keys.bend as Keys import ./MemTable.bend as MemTable import ./Sstable.bend as Sstable import ./SortedRun.bend as SortedRun import ./SstFile.bend as SstFile import ./Wal.bend as Wal import ./Manifest.bend as Manifest import ./Db.bend as Db
Definitions
def ov_and source · line 33 · raw
@lhs:Bool -> @rhs:Bool -> Bool
Handle ov and in the level compaction.
def le_cmp source · line 41 · raw
@ord:Cmp -> Bool
Handle le cmp in the level compaction.
def ov12 source · line 51 · raw
@fa:Maybe<&2, String> -> @lb:Maybe<&2, String> -> Bool
Handle ov12 in the level compaction.
def table_overlap source · line 62 · raw
@+ta:0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table -> @+tb:0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table -> Bool
Return the table overlap for the level compaction.
def pick_lo source · line 66 · raw
@ord:Cmp -> @k1:String -> @k2:String -> Maybe<&2, String>
Hull bound folds (pump+fuel+leaf; single-Maybe state, no pairs).
def min_step source · line 76 · raw
@fm:Maybe<&2, String> -> @cur:Maybe<&2, String> -> Maybe<&2, String>
Handle min step in the level compaction.
def min_go source · line 86 · raw
@fuel:Nat -> @+cur:Maybe<&2, String> -> @tabs:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table> -> Maybe<&2, String>
Handle min go in the level compaction.
def min_first source · line 98 · raw
@+tabs:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table> -> Maybe<&2, String>
Handle min first in the level compaction.
def pick_hi source · line 102 · raw
@ord:Cmp -> @k1:String -> @k2:String -> Maybe<&2, String>
Select hi for the level compaction.
def max_step source · line 112 · raw
@lm:Maybe<&2, String> -> @cur:Maybe<&2, String> -> Maybe<&2, String>
Handle max step in the level compaction.
def max_go source · line 122 · raw
@fuel:Nat -> @+cur:Maybe<&2, String> -> @tabs:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table> -> Maybe<&2, String>
Handle max go in the level compaction.
def max_last source · line 134 · raw
@+tabs:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table> -> Maybe<&2, String>
Handle max last in the level compaction.
def hull_step source · line 138 · raw
@keep:Bool -> @+tab:0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table -> @+acc:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table> -> List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table>
Overlap of one table against a hull (bounds as params).
def hull_neg source · line 146 · raw
@keep:Bool -> @+tab:0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table -> @+acc:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table> -> List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table>
Handle hull neg in the level compaction.
def ov_hull source · line 154 · raw
@+tab:0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table -> @+lo:Maybe<&2, String> -> @+hi:Maybe<&2, String> -> Bool
Handle ov hull in the level compaction.
def filt_go source · line 158 · raw
@fuel:Nat -> @+lo:Maybe<&2, String> -> @+hi:Maybe<&2, String> -> @+acc:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table> -> @rest:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table> -> List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table>
Handle filt go in the level compaction.
def filter_pos source · line 176 · raw
@+rest:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table> -> @+lo:Maybe<&2, String> -> @+hi:Maybe<&2, String> -> List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table>
Handle filter pos in the level compaction.
def filt_neg_go source · line 184 · raw
@fuel:Nat -> @+lo:Maybe<&2, String> -> @+hi:Maybe<&2, String> -> @+acc:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table> -> @rest:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table> -> List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table>
Handle filt neg go in the level compaction.
def filter_neg source · line 202 · raw
@+rest:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table> -> @+lo:Maybe<&2, String> -> @+hi:Maybe<&2, String> -> List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table>
Handle filter neg in the level compaction.
def drop_none source · line 211 · raw
@+key:String -> @+_shadow:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/MemTable.Entry> -> @+acc:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/MemTable.Entry> -> List<&2, 0x571fd57004366c423dfd4b51196743b5/src/MemTable.Entry>
The production policy is conservative: every winning tombstone is retained regardless of the lower-level shadow list.
def drop_go source · line 219 · raw
@fuel:Nat -> @+shadow:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/MemTable.Entry> -> @+acc:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/MemTable.Entry> -> @xs:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/MemTable.Entry> -> List<&2, 0x571fd57004366c423dfd4b51196743b5/src/MemTable.Entry>
Handle drop go in the level compaction.
def shadow_drop source · line 240 · raw
@+xs:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/MemTable.Entry> -> @+shadow:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/MemTable.Entry> -> List<&2, 0x571fd57004366c423dfd4b51196743b5/src/MemTable.Entry>
Handle shadow drop in the level compaction.
def table_runs source · line 245 · raw
@tabs:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table> -> List<&2, List<&2, 0x571fd57004366c423dfd4b51196743b5/src/MemTable.Entry>>
Preserve each table's strict sorted-run boundary and stored read order.
def finish_runs source · line 256 · raw
@+l0_runs:List<&2, List<&2, 0x571fd57004366c423dfd4b51196743b5/src/MemTable.Entry>> -> @+l1_runs:List<&2, List<&2, 0x571fd57004366c423dfd4b51196743b5/src/MemTable.Entry>> -> @+rest:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table> -> List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table>
Production output: merge L0 in chronological stored order, merge absorbed L1 in its original stored order, then merge L0 as strictly newer than L1. Tombstones are retained, so a triggered compaction publishes exactly one table.
def closed_runs_go source · line 267 · raw
@major:Nat -> @+lo:Maybe<&2, String> -> @+hi:Maybe<&2, String> -> @+l0_runs:List<&2, List<&2, 0x571fd57004366c423dfd4b51196743b5/src/MemTable.Entry>> -> @+all_l1:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table> -> @+rest:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table> -> List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table>
Closure rounds retain the original L1 list so the final absorbed runs are selected in exact stored read order, independent of the round that found them.
def compact_snd source · line 284 · raw
@+l0:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table> -> @rest1:List<&2, List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table>> -> List<&2, List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table>>
Top dispatch (all matches on params; count gate inside).
def compact_dec source · line 295 · raw
@gt:Bool -> @+l0:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table> -> @+rest1:List<&2, List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table>> -> List<&2, List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table>>
Compact dec for the level compaction.
def compact_levels source · line 307 · raw
@levels:List<&2, List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table>> -> List<&2, List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table>>
Compact levels for the level compaction.
def or_leaf source · line 319 · raw
@+hit:Bool -> @+acc:Bool -> Bool
Combine leaf for the level compaction.
def in_go source · line 327 · raw
@fuel:Nat -> @+tab:0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table -> @+acc:Bool -> @rem:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table> -> Bool
Handle in go in the level compaction.
def in_rem source · line 339 · raw
@+tab:0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table -> @+rem:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table> -> Bool
Handle in rem in the level compaction.
def abs_pick source · line 343 · raw
@+inr:Bool -> @+name:String -> @+acc:List<&2, String> -> List<&2, String>
Handle abs pick in the level compaction.
def abs_go source · line 351 · raw
@fuel:Nat -> @+rem:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table> -> @+acc:List<&2, String> -> @tabs:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table> -> @names:List<&2, String> -> List<&2, String>
Handle abs go in the level compaction.
def abs_names source · line 373 · raw
@+tabs:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table> -> @+names:List<&2, String> -> @+rem:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table> -> List<&2, String>
Handle abs names in the level compaction.
def rem_pick source · line 381 · raw
@+inr:Bool -> @+name:String -> @+acc:List<&2, String> -> List<&2, String>
Handle rem pick in the level compaction.
def rem_go source · line 389 · raw
@fuel:Nat -> @+rem:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table> -> @+acc:List<&2, String> -> @tabs:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table> -> @names:List<&2, String> -> List<&2, String>
Handle rem go in the level compaction.
def rem_names source · line 411 · raw
@+tabs:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table> -> @+names:List<&2, String> -> @+rem:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table> -> List<&2, String>
Handle rem names in the level compaction.
def l1hd source · line 428 · raw
@r1:List<&2, List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table>> -> List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table>
Handle l1hd in the level compaction.
def l1list source · line 436 · raw
@lvls:List<&2, List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table>> -> List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table>
Handle l1list in the level compaction.
def l0list source · line 444 · raw
@lvls:List<&2, List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table>> -> List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table>
Handle l0list in the level compaction.
def hd_tbl source · line 452 · raw
@tabs:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table> -> 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table
Handle hd tbl in the level compaction.
def tail_of source · line 460 · raw
@tabs:List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table> -> List<&2, 0x571fd57004366c423dfd4b51196743b5/src/Sstable.Table>
Process the remaining of for the level compaction.
def ml0 source · line 468 · raw
@mfst:0x571fd57004366c423dfd4b51196743b5/src/Manifest.Manifest -> List<&2, String>
Handle ml0 in the level compaction.
def ml1b source · line 478 · raw
@r1:List<&2, List<&2, String>> -> List<&2, String>
Handle ml1b in the level compaction.
def ml1 source · line 486 · raw
@mfst:0x571fd57004366c423dfd4b51196743b5/src/Manifest.Manifest -> List<&2, String>
Handle ml1 in the level compaction.
def mbelb source · line 496 · raw
@r1:List<&2, List<&2, String>> -> List<&2, List<&2, String>>
Handle mbelb in the level compaction.
def mbelow source · line 504 · raw
@mfst:0x571fd57004366c423dfd4b51196743b5/src/Manifest.Manifest -> List<&2, List<&2, String>>
Handle mbelow in the level compaction.
def mfst_new source · line 514 · raw
@+mfst:0x571fd57004366c423dfd4b51196743b5/src/Manifest.Manifest -> @+remnames:List<&2, String> -> @+outname:String -> 0x571fd57004366c423dfd4b51196743b5/src/Manifest.Manifest
Handle mfst new in the level compaction.
def prefix_go source · line 518 · raw
@names:List<&2, String> -> @+dir:String -> @+acc:List<&2, String> -> List<&2, String>
Handle prefix go in the level compaction.
def prefix source · line 526 · raw
@+names:List<&2, String> -> @+dir:String -> List<&2, String>
Handle prefix in the level compaction.