Skip to content

Attempt at a Datatoad-like FactLSM #39

Open
FiV0 wants to merge 2 commits into
mainfrom
worktree-fact-lsm
Open

Attempt at a Datatoad-like FactLSM #39
FiV0 wants to merge 2 commits into
mainfrom
worktree-fact-lsm

Conversation

@FiV0

@FiV0 FiV0 commented Jul 13, 2026

Copy link
Copy Markdown
Owner

TODO: explaination

FiV0 and others added 2 commits July 13, 2026 09:08
Add org.hooray.facts: the in-memory fact-store representation from
frankmcsherry/datatoad — Strides offsets, byte-string Terms columns,
layered Forest tries, and the FactLSM/FactSet log-structured merge —
with the layer-at-a-time kernels (sort with width-4 radix path, union
via report queues, intersect, retain, filter, gallop).

Query-side machinery (act_on/permute, join_cols, comms) is out of
scope for now; width specializations beyond sort are deferred with
comments at the dispatch points.

Tests port datatoad's model-based forest_model.rs oracle suite in both
width regimes, plus kernel-level tests for the porting hazards.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Since the engine is purely in-memory, drop datatoad's byte-string
representation from org.hooray.facts: Terms is now a flat object
column ordered by UniversalComparator, with item equality defined as
compare == 0 so deduplication stays consistent with the sort order.
Strides remains solely as the layers' list partitioning.

ByteList, RadixSort, the width-4 u32 sort, and colSort's fixed-width
fast path disappear; the representation-agnostic kernels (union,
intersect, retain, filter, gallop) are untouched. Tests swap the two
byte-width regimes for uniformly-typed and mixed-type object domains,
each equals-consistent with the comparator so the model oracles hold.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant