Skip to content

v0.3.0

Choose a tag to compare

@zvndev zvndev released this 18 May 03:28
· 94 commits to main since this release
4d9c6a3

What's New

DDL WAL Replay

  • Schema mutations (CREATE TABLE, DROP TABLE, ADD COLUMN, DROP COLUMN) are now logged to the WAL with record types 6-9
  • Crash recovery replays DDL operations idempotently — if the table/column already exists or was already dropped, replay skips gracefully
  • WAL records are flushed immediately before filesystem mutations for durability

CRC32 Checksums on B+ Tree Nodes

  • Every serialized B+ tree node now includes a CRC32 checksum (last 4 bytes)
  • Checksum is verified on load — returns io::Error(InvalidData) on mismatch
  • Protects against silent corruption of index data on disk

Hardened Hot Paths

  • Bounds-checked compiled predicates in CompiledLeaf::eval() — no panics on corrupt row data
  • Bounds checks in sort+limit fast path and mmap heap scan slot directory reads
  • Fixed UTF-8 slicing bug found by fuzzer: &s[..20]&s[..s.floor_char_boundary(20)] in token display

CI Improvements

  • Added Miri job (scoped to non-mmap modules: btree, page, row, types, tx, view)
  • Added AddressSanitizer job (hard gate, leak detection disabled for mmap regions)
  • Fixed fuzz workflow cargo-fuzz install (removed --locked to avoid stale transitive deps)
  • Updated required status check names in branch protection

Other

  • TypeId::from_u8() convenience method on storage types
  • Doc-tests added across lexer, parser, executor, and storage modules
  • Fixed clippy collapsible_if lint in connection management tests

What's Changed

  • Release v0.3.0: DDL WAL replay, CRC32 checksums, hardened hot paths by @zvndev in #29

Full Changelog: v0.2.1...v0.3.0