Skip to content
Opensource internals
  • Posts

Posts

All posts published on this site.

Everything published here, newest first.

The Arrow Row Format: How DataFusion Packs a Multi-Column Sort Key Into One Comparable Byte String

Oct 21, 2026 11 min read Jay Hubbert

Arrow’s RowConverter encodes each key column into a byte layout where lexicographic row order equals byte order, turning a multi-column sort key comparison into a single memcmp.

DatafusionArrowPerformanceInternals

Read more →

Polars Buffers Are Immutable: The Refcounted Storage Behind Every Column

Oct 21, 2026 14 min read Jay Hubbert

The buffer layer of Polars is deliberately dumb: an immutable (ptr, length) view over a hand-rolled refcounted storage, with all growth pushed into the mutable builders.

PolarsInternalsMemoryArrowSimd

Read more →

A Memory Ordering Bug in DataFusion's Hash Join, Found by Model Checking Rather Than Testing

Oct 21, 2026 9 min read Jay Hubbert

DataFusion’s hash join probe partitions coordinate through a single AcqRel counter decrement; a subtle ordering bug was found with loom’s model checker and cannot be reproduced by …

DatafusionJoinsConcurrencyMemory orderingInternals

Read more →

Coalesce Batches, Don't Shrink Them: How DataFusion Rebuilds 8K-Row Batches Out of 3-Row Ones

Oct 21, 2026 12 min read Jay Hubbert

Tiny batches destroy vectorized throughput; DataFusion merges them with arrow-rs BatchCoalescer, wrapped in a LIMIT-aware coalescer that slices instead of copying, and fused into …

DatafusionRuntimePerformanceInternals

Read more →

Multi-Level Merge: How DataFusion Sorts More Data Than It Can Hold, One Pass at a Time

Oct 21, 2026 8 min read Jay Hubbert

DataFusion’s multi-level merge merges the sorted runs it can afford, spills the merged result back to disk, and repeats until one pass remains, re-spilling skewed runs whose widest …

DatafusionSortingSpillingPerformanceInternals

Read more →

← Newer Page 27 of 74 Older →

© 2026 Jay Hubbert · Built with Hugo 0.168.0

RSS ·