~/bend-docscommunity

src/DbIo.bend relies on unsafe/foreign

raw source on the hub · import mylsm-lsm-store@0.5.0.0/src/DbIo.bend as DbIo

7 imports
import Base
import ./Db.bend as Db
import ./Wal.bend as Wal
import ./Fs.bend as Fs
import ./CrashPoint.bend as CrashPoint
import ./DurableCommit.bend as Commit
import bend-kit-bytes@0.3.2.0/bytes.bend as Bytes

Definitions

def wal_tail source · line 13 · raw

@fr:Pair(File, Result<&1, &1, Pair(U32, String), Unit>) -> @+dir:String -> IO(Result<&1, &1, Pair(U32, String), Unit>)

Handle wal tail in the database filesystem effects.

def wal.initialize.fsync source · line 25 · raw

@result:Result<&1, &1, Pair(U32, String), Unit> -> @+path:String -> IO(Result<&1, &1, Pair(U32, String), Unit>)

def wal.initialize.synced source · line 35 · raw

@result:Result<&1, &1, Pair(U32, String), Unit> -> @+path:String -> IO(Result<&1, &1, Pair(U32, String), Unit>)

def wal.initialize.written source · line 47 · raw

@pair:Pair(File, Result<&1, &1, Pair(U32, String), Unit>) -> @+path:String -> IO(Result<&1, &1, Pair(U32, String), Unit>)

def wal.initialize.opened source · line 57 · raw

@opened:Result<&1, &1, Pair(U32, String), File> -> @+path:String -> IO(Result<&1, &1, Pair(U32, String), Unit>)

def wal.initialize.header source · line 69 · raw

@+path:String -> IO(Result<&1, &1, Pair(U32, String), Unit>)

def wal.initialize.header_if_empty source · line 74 · raw

@empty:Bool -> @+path:String -> IO(Result<&1, &1, Pair(U32, String), Unit>)

def wal.initialize.existing source · line 84 · raw

@result:Result<&1, &1, Pair(U32, String), Nat> -> @+path:String -> IO(Result<&1, &1, Pair(U32, String), Unit>)

def wal.initialize.present source · line 94 · raw

@present:Bool -> @+path:String -> IO(Result<&1, &1, Pair(U32, String), Unit>)

def wal.initialize.exists source · line 106 · raw

@result:Result<&1, &1, Pair(U32, String), Bool> -> @+path:String -> IO(Result<&1, &1, Pair(U32, String), Unit>)

def wal_initialize source · line 117 · raw

@+dir:String -> IO(Result<&1, &1, Pair(U32, String), Unit>)

Creates the WAL only when it is absent.

def wal_encoded source · line 123 · raw

@+dir:String -> @result:Result<&1, &1, 0x4fcd94fa965aa1443134557fd075a483/src/Wal.Error, 0x185ae03c75e3e75be1171471f68b43cb/bytes.Bytes> -> IO(Result<&1, &1, Pair(U32, String), Unit>)

Handle wal encoded in the database filesystem effects.

def wal_append source · line 138 · raw

@+dir:String -> @batch:0x4fcd94fa965aa1443134557fd075a483/src/Wal.Batch -> IO(Result<&1, &1, Pair(U32, String), Unit>)

Handle wal append in the database filesystem effects.

def append_synced source · line 142 · raw

@result:Result<&1, &1, Pair(U32, String), Unit> -> @file:File -> IO(0x4fcd94fa965aa1443134557fd075a483/src/DurableCommit.Stage)

Turns the fsync result into a durable or uncertain commit stage.

def append_written source · line 155 · raw

@pair:Pair(File, Result<&1, &1, Pair(U32, String), Unit>) -> @+path:String -> IO(0x4fcd94fa965aa1443134557fd075a483/src/DurableCommit.Stage)

Syncs the WAL after a successful append and closes the file.

def append_opened source · line 168 · raw

@opened:Result<&1, &1, Pair(U32, String), File> -> @frame:0x185ae03c75e3e75be1171471f68b43cb/bytes.Bytes -> @+path:String -> IO(0x4fcd94fa965aa1443134557fd075a483/src/DurableCommit.Stage)

Rejects an open failure before append or writes the encoded frame.

def append_frame source · line 179 · raw

@+path:String -> @frame:0x185ae03c75e3e75be1171471f68b43cb/bytes.Bytes -> IO(0x4fcd94fa965aa1443134557fd075a483/src/DurableCommit.Stage)

Opens the WAL and appends one encoded frame.

def encoded_append source · line 185 · raw

@result:Result<&1, &1, 0x4fcd94fa965aa1443134557fd075a483/src/Wal.Error, 0x185ae03c75e3e75be1171471f68b43cb/bytes.Bytes> -> @+dir:String -> @muts:List<&2, 0x4fcd94fa965aa1443134557fd075a483/src/Wal.Mut> -> IO(Pair(0x4fcd94fa965aa1443134557fd075a483/src/DurableCommit.Stage, List<&2, 0x4fcd94fa965aa1443134557fd075a483/src/Wal.Mut>))

Rejects encoding errors before opening the WAL.

def wal_commit source · line 199 · raw

@+dir:String -> @+batch:0x4fcd94fa965aa1443134557fd075a483/src/Wal.Batch -> IO(Pair(0x4fcd94fa965aa1443134557fd075a483/src/DurableCommit.Stage, List<&2, 0x4fcd94fa965aa1443134557fd075a483/src/Wal.Mut>))

Encodes a batch and appends it to the WAL.

def db_write_durable source · line 205 · raw

@+db:0x4fcd94fa965aa1443134557fd075a483/src/Db.Db -> @+batch:0x4fcd94fa965aa1443134557fd075a483/src/Wal.Batch -> IO(Pair(0x4fcd94fa965aa1443134557fd075a483/src/Db.Db, 0x4fcd94fa965aa1443134557fd075a483/src/DurableCommit.Stage))

Persists a batch before applying its pure commit transition.

def db_write source · line 213 · raw

@+db:0x4fcd94fa965aa1443134557fd075a483/src/Db.Db -> @+batch:0x4fcd94fa965aa1443134557fd075a483/src/Wal.Batch -> IO(Result<&1, &1, Pair(U32, String), 0x4fcd94fa965aa1443134557fd075a483/src/Db.Db>)

Persists a batch and rotates the MemTable when needed.

def db_put source · line 223 · raw

@+db:0x4fcd94fa965aa1443134557fd075a483/src/Db.Db -> @+key:String -> @+val:String -> IO(Result<&1, &1, Pair(U32, String), 0x4fcd94fa965aa1443134557fd075a483/src/Db.Db>)

Writes one key/value pair through the legacy core path.

def db_write_staged source · line 227 · raw

@+db:0x4fcd94fa965aa1443134557fd075a483/src/Db.Db -> @+staged:List<&2, 0x4fcd94fa965aa1443134557fd075a483/src/Wal.Batch> -> IO(Result<&1, &1, Pair(U32, String), 0x4fcd94fa965aa1443134557fd075a483/src/Db.Db>)

Restores staged mutation order before writing the batch.

def db_del source · line 233 · raw

@+db:0x4fcd94fa965aa1443134557fd075a483/src/Db.Db -> @+key:String -> IO(Result<&1, &1, Pair(U32, String), 0x4fcd94fa965aa1443134557fd075a483/src/Db.Db>)

Writes one tombstone through the legacy core path.