fsqlite-types 0.1.2

Core type definitions for FrankenSQLite
Documentation

fsqlite-types

Core type definitions for the FrankenSQLite database engine.

Overview

fsqlite-types provides the shared vocabulary types used throughout the FrankenSQLite workspace. It defines page-level primitives, SQL values, transaction identifiers, b-tree structures, record serialization, MVCC glossary types, erasure coding (ECS) support, GF(256) arithmetic, and database limits.

This crate depends only on fsqlite-error and a small set of external crates (bitflags, blake3, smallvec, serde, xxhash-rust). It is a direct dependency of most other fsqlite crates.

fsqlite-error
  ^
  |
fsqlite-types
  ^
  |-- fsqlite-ast
  |-- fsqlite-func
  |-- fsqlite-observability
  |-- fsqlite-core, fsqlite-vfs, ...
  |-- fsqlite (facade)

Modules

  • value - SqliteValue enum (Integer, Float, Text, Blob, Null) for runtime SQL values.
  • glossary - MVCC and transaction vocabulary: TxnId, TxnToken, CommitSeq, Snapshot, PageVersion, IntentLog, RowId, RowIdAllocator, Saga, and many more.
  • cx - Capability context (Cx) for threading cancellation and trace context.
  • ecs - Erasure coding symbol types: SymbolRecord, ObjectId, PayloadHash, systematic run layout/reconstruction/validation helpers.
  • record - SQLite record format serialization/deserialization.
  • serial_type - SQLite serial type encoding.
  • opcode - VDBE opcode definitions.
  • flags - Bitflag types for database open modes and configuration.
  • encoding - Text encoding types.
  • limits - Compile-time and runtime limit constants (max page size, max columns, etc.).
  • obligation - Obligation tracking types.

Key Types

  • PageNumber - A 1-based page number backed by NonZeroU32. Page 0 does not exist in SQLite.
  • PageSize - Database page size (power of two, 512..=65536, default 4096).
  • PageData - Owned page byte buffer with Arc-backed copy-on-write.
  • SqliteValue - Runtime SQL value enum (Integer, Float, Text, Blob, Null).
  • MergePageKind - Page classification for merge-safety policy (leaf/interior table/index, overflow, freelist, etc.).
  • PageNumberHasher / PageNumberBuildHasher - Zero-cost identity hasher for PageNumber keys in hash maps.
  • BTreePageType - B-tree page type discriminant (LeafTable, InteriorTable, LeafIndex, InteriorIndex).
  • gf256_mul_byte, gf256_add_byte, gf256_inverse_byte - GF(256) arithmetic primitives for RaptorQ encoding and XOR-delta compression.

Usage

use fsqlite_types::{PageNumber, PageSize, PageData, SqliteValue};

// Page numbers are 1-based
let page = PageNumber::new(1).expect("page 1 is valid");
assert_eq!(page.get(), 1);

// Page sizes must be powers of two in [512, 65536]
let size = PageSize::new(4096).unwrap();
let data = PageData::zeroed(size);
assert_eq!(data.as_bytes().len(), 4096);

// SQL values
let val = SqliteValue::Integer(42);
let text = SqliteValue::Text("hello".to_owned());

License

MIT