~/bend-docscommunity

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.