Skip to content
Opensource internals
  • Posts

Posts

All posts published on this site.

Everything published here, newest first.

No Row-by-Row Interpreter: How DataFusion's Physical Expression Tree Compiles Into Whole-Batch Arrow Kernel Calls

Oct 21, 2026 15 min read Jay Hubbert

DataFusion evaluates a physical expression tree by walking it once per RecordBatch, dispatching on a Rust enum at each node, and handing whole arrays to Arrow kernels — never …

DatafusionArrowPerformanceInternals

Read more →

DataFusion Checks Its Own Optimizer: Plan Invariants as a Debugging and Correctness Net

Oct 21, 2026 8 min read Jay Hubbert

DataFusion validates the plan after every optimizer rule, using a two-level invariant system where the cheap structural checks always run and the expensive semantic checks are …

DatafusionOptimizerCorrectnessInternalsDesign

Read more →

DataFusion's Hash Join Keeps One Hash Table Per Partition and One Chain Per Key

Oct 21, 2026 13 min read Jay Hubbert

DataFusion’s hash join builds one hash table per partition: a hashbrown table maps a folded 64-bit hash to a chain of row indices stored in a flat u32/u64 array, and the payload …

DatafusionJoinsPerformanceInternals

Read more →

DataFusion's Group Values Are Columnar: How Multi-Column GROUP BY Keys Skip the Row Copy

Oct 21, 2026 10 min read Jay Hubbert

DataFusion splits group-key interning into a hash table of (hash, group id) plus one column builder per key column, so multi-column GROUP BY never materializes a row per group.

DatafusionAggregationPerformanceInternals

Read more →

ClickHouse Charges Memory Four Times Over: Global, User, Query, and Thread

Oct 20, 2026 17 min read Jay Hubbert

ClickHouse charges every allocation to a chain of memory trackers — global, user, query, thread.

ClickhousePerformanceInternalsMemoryMemory tracking

Read more →

← Newer Page 42 of 83 Older →

© 2026 Jay Hubbert · Built with Hugo 0.168.0

RSS ·