Skip to content
Opensource internals
  • Posts

Datafusion

Shipping a Query to Another Machine: DataFusion's Physical Plan Wire Format and the Expression Deduplication Trick

Oct 21, 2026 7 min read Jay Hubbert

DataFusion’s proto layer serializes physical plans for distributed execution, and its deduplicating converter preserves the identity of shared expressions so a dynamic filter stays …

DatafusionProtoDistributedPerformanceInternals

Read more →

One Await Per Batch, Not Per Row: How DataFusion Runs Async UDFs Without Blocking Its Workers

Oct 21, 2026 12 min read Jay Hubbert

DataFusion invokes async UDFs once per Arrow batch (with an optional ideal_batch_size chunking), lifts them out of arbitrary expressions during physical planning, and rewrites …

DatafusionRuntimePerformanceInternals

Read more →

DataFusion Rewrites Its Plan Trees In Place: Arc::make_mut and the End of the Clone-Collect-Rebuild Cycle

Oct 21, 2026 8 min read Jay Hubbert

DataFusion’s optimizer rewrites plan trees in place with Arc::make_mut, avoiding the clone-collect-rebuild cycle of the ownership-based TreeNode API, and skips the expensive …

DatafusionOptimizerRustPerformanceInternals

Read more →

How DataFusion rewrites COUNT(DISTINCT x) into two passes

Oct 21, 2026 11 min read Jay Hubbert

COUNT(DISTINCT x) becomes a group-by on x plus a count of the resulting rows, count is rolled up as sum, and DISTINCT is stripped from aggregates whose merge is idempotent.

DatafusionOptimizerPerformanceInternals

Read more →

Nulls Are Not Values: How DataFusion Skips Work Using Arrow's Validity Bitmaps

Oct 21, 2026 20 min read Jay Hubbert

Nulls live in a side-channel validity bitmap, not in the value buffer, which lets DataFusion branch once on ‘has any nulls’ and skip whole loops, filters, and comparisons.

DatafusionArrowPerformanceInternals

Read more →

← Newer Page 5 of 15 Older →

© 2026 Jay Hubbert · Built with Hugo 0.168.0

RSS ·