def flush.sst.loaded

mylsm-lsm-store@0.6.0.1 · src/ByteDurableDb.bend:897

import mylsm-lsm-store@0.6.0.1/src/ByteDurableDb.bend as ByteDurableDb
import Base
import mylsm-lsm-store@0.6.0.1/src/ByteMemTable.bend as ByteMemTable
import mylsm-lsm-store@0.6.0.1/src/ByteSstFile.bend as ByteSstFile
import mylsm-lsm-store@0.6.0.1/src/DbLock.bend as DbLock
import mylsm-lsm-store@0.6.0.1/src/scan/VisibleStats.bend as VisibleStats

897# Merges the persisted SST beneath the newest in-memory WAL delta.
898def flush.sst.loaded(
899  +path: String,
900  lock: DbLock.Lock,
901  table: ByteMemTable.Table,
902  result: Result<&1, &1, U32 & String, ByteMemTable.Table>
903) -> IO(Handle & Result<&1, &1, Error, Unit>):
904  match table:
905    case ByteMemTable.Table{delta}:
906      match result:
907        case Fail{(code, message)}:
908          IO.pure(Handle & Result<&1, &1, Error, Unit>,
909            (Handle{path, lock, ByteMemTable.Table{delta}, Open{}, VisibleStats.Stats{0n, 0n}},
910              Fail{recovery.error(code, message)}))
911        case Done{ByteMemTable.Table{base}}:
912          flush.cloned(path, lock,
913            ByteSstFile.entries.clone(ByteMemTable.append(delta, base)))

Uses (18)

Used by (1)