Skip to content
Opensource internals
  • Posts

Execution

A Tour of DataFusion's Physical Operators: The Ten That Matter and the Trick Each One Uses

Oct 21, 2026 6 min read Jay Hubbert

A guided tour of DataFusion’s physical operators — the scan, the filter, the projection, the repartition, the joins, the aggregate, the sort and the window — and the trick in each.

DatafusionExecutionPerformanceInternalsOverview

Read more →

One take, N slices: how DataFusion's RepartitionExec splits a batch across shuffle partitions

Oct 21, 2026 12 min read Jay Hubbert

The repartition operator hashes each row once, concatenates per-partition row indices, performs exactly one take over the whole batch, and then slices the reordered result into …

DatafusionExecutionPerformanceInternals

Read more →

How DataFusion Stops Reading After Ten Rows: Limit Pushdown, Limit Absorption, and the Volcano Model's Batch Problem

Oct 21, 2026 8 min read Jay Hubbert

DataFusion pushes LIMIT into operators that can absorb it, so a ten-row query stops the scan, the join and the sort after ten rows instead of after a full 8192-row batch.

DatafusionLimitExecutionPerformanceInternals

Read more →

Window frames over preserved sort order: how DataFusion evaluates PARTITION BY and ORDER BY

Oct 21, 2026 20 min read Jay Hubbert

WindowAggExec asks the planner for hash-partitioned, sorted input, then walks each partition’s frame with a sliding accumulator that adds rows entering the frame and retracts rows …

DatafusionExecutionPerformanceInternals

Read more →

Operators declare what they need: how DataFusion's planner inserts the shuffle for you

Oct 21, 2026 13 min read Jay Hubbert

Instead of hard-coding shuffles, each ExecutionPlan states the distribution it needs from its children; a single optimizer rule turns unmet requirements into RepartitionExec nodes.

DatafusionExecutionPerformanceInternals

Read more →

← Newer Page 1 of 2 Older →

© 2026 Jay Hubbert · Built with Hugo 0.168.0

RSS ·