Skip to content
Opensource internals
  • Posts

Datafusion

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 →

DataFusion's PruningPredicate: Turning a Filter into a Per-File 'Can This Possibly Match?' Test

Oct 21, 2026 19 min read Jay Hubbert

DataFusion rewrites filters into min/max expressions over per-container statistics and evaluates them in one vectorized batch across thousands of files.

DatafusionPlanningPerformanceInternals

Read more →

DataFusion's Parquet Access Plan: How Row Groups, Pages and Files Get Skipped Before a Byte Is Read

Oct 21, 2026 9 min read Jay Hubbert

DataFusion never reads a Parquet file row group by row group and hopes for the best: it builds an access plan, proves which row groups cannot match using footer statistics, the …

DatafusionParquetPerformanceInternals

Read more →

DataFusion's Parquet Push Decoder: Pruning Row Groups in the Middle of a Scan You Already Started

Oct 21, 2026 9 min read Jay Hubbert

DataFusion’s push decoder interleaves byte-range fetches with decoding and re-checks a dynamic filter at every row-group boundary, so a filter that tightens mid-scan still prunes …

DatafusionParquetDynamic filtersPerformanceInternals

Read more →

Pruning Joins in DataFusion: Monotone Merge Cursors, a Key-Range Bitmap, and Watermarks

Oct 21, 2026 14 min read Jay Hubbert

DataFusion prunes joins three ways: merge cursors that only move forward over key groups, a bitmap that lets the probe side skip containers whose key range cannot match, and a …

DatafusionJoinsPerformanceInternals

Read more →

← Newer Page 7 of 15 Older →

© 2026 Jay Hubbert · Built with Hugo 0.168.0

RSS ·