Skip to documentation
SLOP

tiny.sql.record

Reference tiny.sql record

Defined in tiny.sql.

API (12)

Actions

Public operations.

Types and contracts

Public types and contracts.

Values and defaults

Public values and defaults.

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

Source

Called byCallstest sourcelib.sql.src.recordtest: record encodes inline valuesprivate sourcelib.sql.src.tree.TreewriteValueRecordtest sourcelib.sql.src.treetest: tree delete retains a safe lowe...recordinlineSizerecordencodeInline
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.sql.src.recordtest: record encodes overflow referen...private sourcelib.sql.src.tree.TreewriteValueRecordtest sourcelib.sql.src.treetest: tree scan projection controls o...recordencodeOverflow
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callsrecordencodeInlinerecordinlineSize
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.sql.src.recordtest: record encodes inline valuestest sourcelib.sql.src.recordtest: record encodes overflow referen...private sourcelib.sql.src.tree.HashBuilderrecordValueprivate sourcelib.sql.src.tree.TreeentryStateFromRecordprivate sourcelib.sql.src.treelatticeEntryFromRecord+3 morerecordinlineValue
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.sql.src.recordtest: record encodes inline valuestest sourcelib.sql.src.recordtest: record encodes overflow referen...private sourcelib.sql.src.tree.HashBuilderrecordValueprivate sourcelib.sql.src.tree.TreeentryStateFromRecordprivate sourcelib.sql.src.treelatticeEntryFromRecord+4 morerecordkind
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest sourcelib.sql.src.recordtest: record encodes inline valuestest sourcelib.sql.src.recordtest: record encodes overflow referen...private sourcelib.sql.src.tree.HashBuilderrecordValueprivate sourcelib.sql.src.tree.ScanvalueForprivate sourcelib.sql.src.tree.TreeentryStateFromRecord+6 morerecordoverflow
Static calls · unresolved targets: 0 · external targets: 0.

Source: lib/sql/src/record.zig

zig
const std = @import("std");pub const Error = error{    InvalidRecord,    ValueTooLarge,};pub const Kind = enum {    inline_value,    overflow,};pub const Overflow = struct {    len: u64,    first_page: u32,};pub const inline_tag: u8 = 0;pub const overflow_tag: u8 = 1;pub const overflow_size: usize = 13;pub fn inlineSize(value: []const u8) Error!usize {    if (value.len == std.math.maxInt(usize)) return error.ValueTooLarge;    return value.len + 1;}pub fn encodeInline(target: []u8, value: []const u8) Error![]const u8 {    const len = try inlineSize(value);    if (target.len < len) return error.ValueTooLarge;    target[0] = inline_tag;    @memcpy(target[1..][0..value.len], value);    return target[0..len];}pub fn encodeOverflow(target: *[overflow_size]u8, value: Overflow) Error![]const u8 {    if (value.len == 0 or value.first_page == 0) return error.InvalidRecord;    target[0] = overflow_tag;    std.mem.writeInt(u64, target[1..][0..8], value.len, .big);    std.mem.writeInt(u32, target[9..][0..4], value.first_page, .big);    return target[0..];}pub fn kind(bytes: []const u8) Error!Kind {    if (bytes.len == 0) return error.InvalidRecord;    return switch (bytes[0]) {        inline_tag => .inline_value,        overflow_tag => .overflow,        else => error.InvalidRecord,    };}pub fn inlineValue(bytes: []const u8) Error![]const u8 {    if (bytes.len == 0 or bytes[0] != inline_tag) return error.InvalidRecord;    return bytes[1..];}pub fn overflow(bytes: []const u8) Error!Overflow {    if (bytes.len != overflow_size) return error.InvalidRecord;    if (bytes[0] != overflow_tag) return error.InvalidRecord;    const value = Overflow{        .len = std.mem.readInt(u64, bytes[1..][0..8], .big),        .first_page = std.mem.readInt(u32, bytes[9..][0..4], .big),    };    if (value.len == 0 or value.first_page == 0) return error.InvalidRecord;    return value;}test "record encodes inline values" {    var bytes: [16]u8 = undefined;    const encoded = try encodeInline(&bytes, "value");    try std.testing.expectEqual(Kind.inline_value, try kind(encoded));    try std.testing.expectEqualStrings("value", try inlineValue(encoded));    try std.testing.expectError(error.InvalidRecord, overflow(encoded));}test "record encodes overflow references" {    var bytes: [overflow_size]u8 = undefined;    const encoded = try encodeOverflow(&bytes, .{        .len = 9000,        .first_page = 42,    });    const decoded = try overflow(encoded);    try std.testing.expectEqual(Kind.overflow, try kind(encoded));    try std.testing.expectEqual(@as(u64, 9000), decoded.len);    try std.testing.expectEqual(@as(u32, 42), decoded.first_page);    try std.testing.expectError(error.InvalidRecord, inlineValue(encoded));}

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

zig
pub const record = @import("record.zig");

Complete caller list for record.inlineValue

8 direct callers.

Complete caller list for record.kind

9 direct callers.

Complete caller list for record.overflow

11 direct callers.

Audit

Definitions13
Public names13
Members6
Version26.7.0
Revisiondaab053ee433