Skip to content
Opensource internals
  • Posts

Functions

Signatures, Volatility, and the Type-Coercion Lattice: How DataFusion's UDF Metadata Drives the Optimizer

Oct 21, 2026 10 min read Jay Hubbert

A UDF’s Signature is three orthogonal promises: which types it accepts, how it coerces them, and whether its result is repeatable.

DatafusionFunctionsPerformanceInternals

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 →

Once Per Batch: How DataFusion's ColumnarValue API Killed the Per-Row UDF Call

Oct 21, 2026 11 min read Jay Hubbert

Scalar UDFs receive whole Arrow arrays per batch, not one ScalarValue per row — ColumnarValue is the currency that makes that possible.

DatafusionFunctionsPerformanceInternals

Read more →

How DataFusion Approximates Quantiles with a Mergeable t-Digest (and Distinct Counts with HyperLogLog)

Oct 21, 2026 9 min read Jay Hubbert

DataFusion’s approx_percentile_cont compresses values into weighted centroids whose state can be merged across partitions — approximately, not exactly.

DatafusionFunctionsPerformanceInternals

Read more →

© 2026 Jay Hubbert · Built with Hugo 0.168.0

RSS ·