Skip to content
Opensource internals
  • Posts

Datafusion

Bitwise Semi Joins: Tracking Matches in a Bitset Instead of Materialising Row Pairs

Oct 21, 2026 8 min read Jay Hubbert

DataFusion’s bitwise sort-merge join tracks per-outer-row matches in a bit-packed BooleanBuffer, ORing filter results 64 bits at a time and using popcnt to count, so a semi join …

DatafusionJoinsSort merge joinSimdPerformanceInternals

Read more →

DataFusion's Memory Pool: RAII Reservations, Fair Shares, and Who Gets to Spill

Oct 21, 2026 10 min read Jay Hubbert

DataFusion does not count allocations — it counts reservations. Operators ask a MemoryPool for bytes; the pool decides; the reservation releases on drop.

DatafusionMemoryPerformanceInternals

Read more →

DataFusion Swaps Join Sides on Statistics and Applies Non-Equi Filters After the Hash Lookup

Oct 21, 2026 12 min read Jay Hubbert

DataFusion’s JoinSelection rule swaps join inputs when the left side’s estimated size exceeds the right’s, and any non-equi join predicate becomes a JoinFilter evaluated on …

DatafusionJoinsPerformanceInternals

Read more →

Splitting File Groups by Statistics: Giving Each Partition a Contiguous Slice of the Sort Key

Oct 21, 2026 6 min read Jay Hubbert

DataFusion’s statistics-based file group splitter assigns files to partitions by best-fit on their min/max ranges, preserving the table’s ordering while balancing the file counts.

DatafusionFile scanPartitioningPerformanceInternals

Read more →

DataFusion's Aggregate Split: One UDF, Two Accumulator Traits, and a Serializable State Format

Oct 21, 2026 9 min read Jay Hubbert

DataFusion aggregates are state machines: update_batch feeds them rows, state() serializes them, merge_batch combines them across partitions.

DatafusionFunctionsPerformanceInternals

Read more →

← Newer Page 3 of 15 Older →

© 2026 Jay Hubbert · Built with Hugo 0.168.0

RSS ·