Skip to documentation
SLOP

tiny.sql.WalReader

Reference tiny.sql WalReader

Defined in wal.

API (10)

Actions

Public operations.

Fields and members

Public fields and members.

No direct callersNo direct callswalReader
Static calls · unresolved targets: unknown · external targets: unknown.

Source

Source: lib/sql/src/wal.zig:1026

zig
pub const Reader = struct {    data: []const u8,    salt: Salt,    checksum: Checksum,    offset: usize = header_size,    index: usize = 0,    stopped: bool = false,    pub fn init(data: []const u8) ReadError!Reader {        return initControlled(data, .{}) catch |err| switch (err) {            error.Interrupted => unreachable,            else => return @errorCast(err),        };    }    pub fn initControlled(data: []const u8, control: Control) ControlledReadError!Reader {        try control.check();        if (data.len < header_size) return error.InvalidWal;        if (readU32(data[0..4]) != magic) return error.InvalidWal;        if (readU32(data[4..8]) != format_version) return error.InvalidWal;        if (readU32(data[8..12]) != page.size) return error.UnsupportedPageSize;        var checksum: Checksum = .{};        checksum.update(data[0..24]);        if (readU32(data[24..28]) != checksum.first) return error.InvalidChecksum;        if (readU32(data[28..32]) != checksum.second) return error.InvalidChecksum;        try control.check();        return .{            .data = data,            .salt = .{                .first = readU32(data[16..20]),                .second = readU32(data[20..24]),            },            .checksum = checksum,        };    }    pub fn next(self: *Reader) ReadError!?Frame {        return self.nextControlled(.{}) catch |err| switch (err) {            error.Interrupted => unreachable,            else => return @errorCast(err),        };    }    pub fn nextControlled(self: *Reader, control: Control) ControlledReadError!?Frame {        const phase = trace.scope("wal.next");        defer phase.end();        try control.check();        if (self.stopped) return null;        if (self.offset + frame_size > self.data.len) {            self.stopped = true;            return null;        }        const frame_header = self.data[self.offset..][0..frame_header_size];        const image = self.data[self.offset + frame_header_size ..][0..page.size];        if (readU32(frame_header[8..12]) != self.salt.first or readU32(frame_header[12..16]) != self.salt.second) {            self.stopped = true;            return null;        }        var checksum = self.checksum;        checksum.update(frame_header[0..8]);        checksum.update(image);        if (readU32(frame_header[16..20]) != checksum.first or readU32(frame_header[20..24]) != checksum.second) {            self.stopped = true;            return null;        }        try control.check();        self.checksum = checksum;        self.index += 1;        self.offset += frame_size;        return .{            .index = self.index,            .page_id = readU32(frame_header[0..4]),            .db_page_count = readU32(frame_header[4..8]),            .image = image,        };    }};

Source: lib/sql/src/root.zig:304

zig
pub const WalReader = wal.Reader;
Called byCallstest sourcelib.sql.src.filetest: file transaction commits multip...test sourcelib.sql.src.filetest: file transaction transfers stag...WalWriterrewriteTailwalpageAttest sourcelib.sql.src.waltest: wal header validates and has no...WalReaderinitControlledWalReaderinit
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsprivate sourcelib.sql.src.filereplayReadOnlyWalprivate sourcelib.sql.src.filereplayWalprivate sourcelib.sql.src.pager.PagerrebuildWalFramesFromJournalControlledWalReaderinitWalWriterloadControlledwalendMarkControlledprivate sourcelib.sql.src.wal.Checksumupdateprivate sourcelib.sql.src.walreadU32WalReaderinitControlled
Static calls · unresolved targets: 0 · external targets: 1.
Called byCallstest sourcelib.sql.src.filetest: file transaction commits multip...test sourcelib.sql.src.filetest: file transaction transfers stag...WalWriterrewriteTailwalpageAttest sourcelib.sql.src.waltest: wal header validates and has no...WalReadernextControlledWalReadernext
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsWalReadernextprivate sourcelib.sql.src.walreadU32WalReadernextControlled
Static calls · unresolved targets: 1 · external targets: 3.

Audit

Definitions5
Public names10
Members6
Version26.7.0
Revisiondaab053ee433