Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
878 commits
Select commit Hold shift + click to select a range
7d42518
perf: optimize LEAD/LAG IGNORE NULLS evaluation (#23711)
xudong963 Jul 24, 2026
a0a6836
refactor(proto): migrate symmetric hash join serde (#23736)
Phoenix500526 Jul 24, 2026
f40d99a
feat: migrate EmptyExec and PlaceholderRowExec to ExecutionPlan proto…
847850277 Jul 24, 2026
18b1e35
fix: grouped first_value/last_value FILTER excludes NULL predicate ro…
u70b3 Jul 24, 2026
5d1c3cd
Unwrap widening Date32 -> Date64 casts in comparison predicates (#23729)
adriangb Jul 24, 2026
7dfeeb0
test (slt): add memory-limited aggregation sqllogictests (#23838)
naman-modi Jul 24, 2026
e9a75bf
feat: add OR pre-selection short-circuit (#22979)
kumarUjjawal Jul 24, 2026
b8d3b0b
perf: optimize `find_in_set` (up to 24x faster) (#23460)
andygrove Jul 24, 2026
82f1b36
fix: NOT IN with NULL subquery returns wrong results under SortMergeJ…
nathanb9 Jul 24, 2026
3f81613
Remove `GroupsAccumulator::supports_convert_to_state` and require `co…
lyne7-sc Jul 24, 2026
7d0ca3e
chore(deps-dev): bump ws from 8.18.2 to 8.21.1 in /datafusion/wasmtes…
dependabot[bot] Jul 24, 2026
0a8eacf
chore(deps-dev): bump http-proxy-middleware from 2.0.9 to 2.0.10 in /…
dependabot[bot] Jul 24, 2026
592eeab
Add codecov badge to README (#23860)
Jefffrey Jul 24, 2026
582453b
fix: align physical CASE nullability through casts (#23844)
friendlymatthew Jul 24, 2026
efa84e8
test: add functional_dependencies.slt covering functional dependency …
alamb Jul 24, 2026
7269d13
chore: Enable `unused_async` lint, make some functions sync (#23679)
neilconway Jul 24, 2026
0d8482c
chore(deps-dev): bump webpack-dev-server from 5.2.6 to 6.0.0 in /data…
dependabot[bot] Jul 24, 2026
562f87d
refactor(proto): migrate HashJoinExec serde (#23853)
buraksenn Jul 24, 2026
16471ee
refactor(proto): migrate AsyncFuncExec to self-serializing proto (#23…
mattp5657 Jul 24, 2026
9808e83
refactor(proto): migrate window serde (#23780)
Phoenix500526 Jul 25, 2026
4a40101
Migrate ExplainExec and AnalyzeExec protobuf serde (#23742)
Phoenix500526 Jul 25, 2026
9e3c71f
refactor(proto): migrate aggregate exec serde (#23779)
Phoenix500526 Jul 25, 2026
abec311
refactor(unparser): centralize aggregate-scope rendering in the SQL u…
naman-modi Jul 25, 2026
f1ab86d
Add FixedSizeList support for recursive struct schema adaptation (#22…
kosiew Jul 25, 2026
8393fd3
refactor: share hex encoding across datafusion-common, functions, and…
andygrove Jul 25, 2026
68a676e
test: cover `array_agg(DISTINCT)` on dictionaries and bounded `retrac…
alamb Jul 25, 2026
36c417b
perf: avoid per-row String allocation in Spark bin and char (#23881)
andygrove Jul 25, 2026
6d76482
fix: Handle null-aware joins correctly in `FilterNullJoinKeys` when i…
AdamGS Jul 25, 2026
0fcf628
fix: don't infer join predicates for null-aware joins in push_down_fi…
viirya Jul 26, 2026
e3e2cb2
IN LIST: add branchless filter for small primitive lists (#23014)
geoffreyclaude Jul 26, 2026
e660118
feat: add Spark-compatible hypot function (#23774)
KarpagamKarthikeyan Jul 26, 2026
88365dd
chore: adjust `size` accounting for `min_max` (#23899)
comphead Jul 26, 2026
551c592
Add ObjectStore-backed TempFileFactor / spill example (#23170)
alamb Jul 26, 2026
bb670fb
refactor(proto): remove legacy scan field (#23445)
Phoenix500526 Jul 26, 2026
5975a2d
fix: skip dynamic filter pushdown for null-aware anti joins with a nu…
mdashti Jul 26, 2026
50ae076
Various `ScalarValue` numeric method fixes & refactors (especially de…
Jefffrey Jul 26, 2026
dd4dcbc
fix: Handle `input_file_name()` pushdown into `ParquetSource` with fi…
AdamGS Jul 26, 2026
7576762
fix: exclude precision-losing integer-to-float conversions from CastE…
getChan Jul 26, 2026
77b172e
chore: simplify SortPreservingMergeStream to be as textbook-like as p…
rluvaton Jul 26, 2026
e8a65f2
feat: add BuildHasher variants for hash_utils (#21820)
xudong963 Jul 27, 2026
1c3232c
`ScalarUdfImpl::strictly_order_preserving`: Allow expression to repor…
rluvaton Jul 27, 2026
9facaaa
FFI: forward ScalarUDF preserves_lex_ordering (#23069)
Amogh-2404 Jul 27, 2026
8d2ffc9
perf(functions-aggregate): optimize sliding window MIN/MAX using mono…
pavan51 Jul 27, 2026
9cad861
docs: add datapress to known users list (#23919)
jeroenflvr Jul 27, 2026
9ab2068
fix: eliminate group by constant empty input (#22132)
HairstonE Jul 27, 2026
2028927
fix: sliding window `min()` returns wrong value for all-NULL windows …
neilconway Jul 27, 2026
daacd72
chore: Squelch "unused code" warning (#23924)
neilconway Jul 28, 2026
0b07e58
fix: correct percentile_cont(DISTINCT) accumulation and sliding-windo…
viirya Jul 28, 2026
bb75d92
fix: support parentheses for negative decimal formatting (#23718)
wangzhigang1999 Jul 28, 2026
1b32517
Add name filter to metrics (#23719)
gabotechs Jul 28, 2026
8fbbfdc
perf: optimize `array_empty` udf (#23923)
rluvaton Jul 28, 2026
53f5bf5
chore(deps): bump the codeql-actions group with 2 updates (#23938)
dependabot[bot] Jul 28, 2026
0d7bfd5
chore(deps): bump taiki-e/install-action from 2.84.0 to 2.85.2 (#23941)
dependabot[bot] Jul 28, 2026
6cc7fa4
chore(deps): bump actions/stale from 10.4.0 to 11.0.0 (#23942)
dependabot[bot] Jul 28, 2026
994fc81
chore(deps): bump base64 from 0.22.1 to 0.23.0 (#23944)
dependabot[bot] Jul 28, 2026
5d9638c
chore(deps): bump astral-sh/setup-uv from 8.3.2 to 9.0.0 (#23939)
dependabot[bot] Jul 28, 2026
b0b9dae
chore: refactor SortMergeJoin bitwise stream to generators and simpli…
rluvaton Jul 28, 2026
73b8ad3
refactor: address review feedback on percentile_cont(DISTINCT) accumu…
viirya Jul 28, 2026
cdc4124
fix: last value accumulator merge indexing (#23905)
peterxcli Jul 28, 2026
d61d31a
chore(deps): bump syn from 2.0.119 to 3.0.2 (#23945)
dependabot[bot] Jul 28, 2026
ef94a85
feat: support `ansi` for `elt` (#23928)
comphead Jul 29, 2026
74eebbb
chore: remove unused `header` file (#23958)
Jefffrey Jul 29, 2026
68d5874
feat(physical-plan): generic Rows-backed GroupColumn keeps mixed sche…
zhuqi-lucas Jul 29, 2026
cd28203
perf: `array_agg()` performance improvements (#23716)
fred1268 Jul 29, 2026
5f7feda
fix: accept LargeUtf8 and Utf8View patterns in SIMILAR TO planning (#…
u70b3 Jul 29, 2026
1727b7d
Fill in missing utf8view support in function type coercion (#23916)
Jefffrey Jul 29, 2026
043d97f
perf: Optimize hashing, null-free fast path for `percentile_cont`, `m…
neilconway Jul 29, 2026
5941552
perf: null-free fast path for COUNT(DISTINCT) primitive accumulator (…
viirya Jul 29, 2026
1955d5a
chore: refactor `VarianceAccumulator`, add tests and benchmark (#23977)
neilconway Jul 29, 2026
2fb472a
test: add regression coverage and docs for NULL format handling (#23669)
U0001F3A2 Jul 29, 2026
2f25454
fix: preserve aggregate filter pushdown order (#22926)
discord9 Jul 29, 2026
2e3626e
minor(test): cover partially ordered aggregate spilling (#23947)
buraksenn Jul 30, 2026
95226ac
feat: centralizing higher-order list lambda evaluation helpers (#23911)
saadtajwar Jul 30, 2026
0f7bddd
fix(common): preserve an exact zero through filter selectivity estima…
asolimando Jul 30, 2026
86da5a8
chore(ordered-partial-aggregate): move `OrderedPartialAggregateStream…
rluvaton Jul 30, 2026
4651003
test: improve `round` sqllogictest coverage (#23973)
2010YOUY01 Jul 30, 2026
802d8d2
test: improve `gcd` sqllogictest coverage (#23972)
2010YOUY01 Jul 30, 2026
cc1326a
fix: preserve dictionary-value nulls in scalar regex operators (#23966)
discord9 Jul 30, 2026
0bcbe40
test: improve `rpad` sqllogictest coverage (#23968)
2010YOUY01 Jul 30, 2026
64bc392
test: improve `lpad` sqllogictest coverage (#23969)
2010YOUY01 Jul 30, 2026
eacdf75
Add benchmarks for hashjoin candidate equality filtering (#23980)
shehab-ali Jul 30, 2026
455a3ad
docs: Fixes incorrect type name in `UserDefinedLogicalNode` comment (…
vikrantmehta123 Jul 30, 2026
44aae94
perf: precompile formats in to_time (#23964)
lyne7-sc Jul 30, 2026
6a0e771
Optimize Spark hex null handling (#23688)
floze-the-genius Jul 30, 2026
62cfc0c
fix(datasource): avoid over-conservative transformation of num_rows s…
tschwarzinger Jul 30, 2026
3aef16c
refactor(proto): migrate scalar subquery serde (#23915)
Phoenix500526 Jul 30, 2026
541caab
refactor: mark the ExecutionPlan proto dispatch traits as non-public …
adriangb Jul 30, 2026
833e501
fix(proto): prevent duplicate partition statistics on roundtrip (#23…
buraksenn Jul 30, 2026
f398301
Report peak MemoryPool reservation per query in benchmarks (#23985)
adriangb Jul 30, 2026
30ae8bf
refactor(proto): move PartitionedFile / FileGroup serde into datafusi…
adriangb Jul 30, 2026
1ae6b87
perf: Replace SipHash with foldhash in `BoundedWindowAggExec` (#23984)
neilconway Jul 30, 2026
39d5064
chore: refactor `MaterializingSortMergeJoinStream` into generators an…
rluvaton Jul 30, 2026
a589b4b
refactor(proto): put Partitioning / sort-expression serde on the type…
adriangb Jul 31, 2026
6636d6b
fix: keep a CoalescePartitionsExec required by a SinglePartition chil…
adriangb Jul 31, 2026
f8b9ed8
fix: TopK aggregation drops groups whose MIN/MAX value is NULL (#23684)
u70b3 Jul 31, 2026
aa9b7bb
feat: add GroupColumn support for Duration in multi-column GROUP BY …
tohuya6 Jul 31, 2026
dbcb5c0
refactor: move planning APIs to session crate (#23842)
timsaucer Jul 31, 2026
2eaba47
bench: use seedable rng for reproducibility (#23653)
theirix Jul 31, 2026
285559e
test: Fix data_pagesize_limit extraction in parquet writer props roun…
jackylee-ch Jul 31, 2026
7547280
bench: extend BoundedWindowAggExec many-partitions benchmark (#24032)
neilconway Jul 31, 2026
219d256
feat: add GroupColumn support for Float16 in multi-column GROUP BY (#…
tohuya6 Jul 31, 2026
9f1c5c9
fix(sql): preserve source qualifiers in CTAS with explicit schema (#2…
lyne7-sc Jul 31, 2026
5cf7bff
refactor: move arrow integer hex dispatch to datafusion-common (#23917)
buraksenn Jul 31, 2026
062cbcb
test: add IN list slt coverage for temporal, Decimal128 and Interval …
alamb Jul 31, 2026
f2b4835
feat: Add support for `explode_outer` function for arrays (#22100)
athlcode Jul 31, 2026
8c46388
fix: reject nested arrays in array_distance (#23995)
2010YOUY01 Aug 1, 2026
b4cde12
fix: Improve error message for metadata conflict in schema (#23952)
mkleen Aug 1, 2026
b902256
fix: rows_to_array cleanup for expecting single field (#24040)
saadtajwar Aug 1, 2026
f3a895f
minor: Add `slt` test for nullable window retract (#24025)
2010YOUY01 Aug 2, 2026
60d9b67
WindowTopN dense_rank benchmark (#24050)
SubhamSinghal Aug 2, 2026
eb8e38e
minor(fix): correct to_date results for formatted pre-epoch datetimes…
buraksenn Aug 2, 2026
66c3840
minor(test): strengthen sort-merge join spilling coverage (#23988)
buraksenn Aug 2, 2026
212d613
refactor(hash-aggr): Support spilling for single mode aggregation (#2…
2010YOUY01 Aug 3, 2026
21ad189
test: improve `find_in_set` sqllogictest coverage (#23970)
2010YOUY01 Aug 3, 2026
37baf42
perf: preserve dictionary encoding for `character_length`, `initcap`,…
lyne7-sc Aug 3, 2026
9051efd
feat: switch VirtualTable producer to use expressions field instead o…
eliot1480 Aug 3, 2026
62650ef
feat: add GroupColumn support for Interval in multi-column GROUP BY (…
tohuya6 Aug 3, 2026
28c8afa
IN LIST: isolate branchless filter implementation (#23907)
geoffreyclaude Aug 3, 2026
f9dde71
feat: drop generator on error to free memory faster (#23967)
rluvaton Aug 3, 2026
882d906
docs: Add more documentation about `PartialSortExec` operator (#24048)
alamb Aug 3, 2026
47ca490
perf: skip re-slicing window partition batches with nothing to prune …
neilconway Aug 3, 2026
b2ac10f
feat: eliminate LEFT/RIGHT JOINs with redundant sides (#23566)
simonvandel Aug 4, 2026
f248f45
fix: handle empty patterns in regexp_instr (#24054)
iamhaseebn Aug 4, 2026
17694ac
feat(parquet): multi-column lexicographic stats reorder for TopK sort…
zhuqi-lucas Aug 4, 2026
a3f0f93
fix: prevent incorrect results when pushing filters through anti join…
buraksenn Aug 4, 2026
3ef9a8c
perf: track `BoundedWindowAggExec` Linear-mode watermark once per str…
neilconway Aug 4, 2026
26fbf4d
bench: add nested-type (List/Struct/Map) cases to first_value/last_va…
zhuqi-lucas Aug 4, 2026
db0c31b
fix(ffi): preserve aggregate null-handling support (#23908)
Amogh-2404 Aug 4, 2026
bf613a1
chore(deps): bump taiki-e/install-action from 2.85.2 to 2.85.6 (#24081)
dependabot[bot] Aug 4, 2026
597170e
chore(deps): bump the codeql-actions group with 2 updates (#24080)
dependabot[bot] Aug 4, 2026
9114e78
bench: add ArrowBytesMap benchmarks (#24078)
Punisheroot Aug 4, 2026
179b32c
perf: gather Linear-mode window input more efficiently (#24034)
neilconway Aug 4, 2026
30eccb4
Docs: Update PR template to ask for user-visible rationale (#24053)
alamb Aug 4, 2026
c8665ce
docs: document all fields and methods of `DFParquetMetadata` (#24037)
alamb Aug 4, 2026
bc8b1a7
chore(deps): bump cryptography from 48.0.1 to 50.0.0 (#24091)
dependabot[bot] Aug 4, 2026
9eb31bf
fix(physical-plan): preserve Exact(0) in FilterExec for null_count, d…
asolimando Aug 4, 2026
e948f17
fix: UnionExec now conforms each batch to the union's declared schema…
dariocurr Aug 4, 2026
e8015e4
refactor: unify `ParquetFileReader` and `CachedParquetFileReader` (#2…
alamb Aug 4, 2026
f6d4f04
chore: cleanup `OrderedPartialAggregateStream` more (#24012)
rluvaton Aug 4, 2026
d813358
perf: use Vec in ArrowBytesMap (#24071)
Punisheroot Aug 4, 2026
c1366b5
chore: apply workspace lints to all crates (#24076)
emilk Aug 5, 2026
31ffab1
feat(functions-aggregate): support nested types (List, Struct, Map) i…
zhuqi-lucas Aug 5, 2026
e7304ee
fix: do not derive ordering for arithmetic that can overflow (#23910)
buraksenn Aug 5, 2026
a0124a4
fix: preserve projection field metadata during physical planning (#23…
subotac Aug 5, 2026
2dd1a14
perf: preallocate RowsGroupColumn buffers in take_n (#24070)
saadtajwar Aug 5, 2026
426b351
Add config-matrix tests in enforce_distribution.rs for range-satisfac…
blinding-pixels Aug 5, 2026
9db5c5d
feat: add Spark-compatible atan2 function (#23962)
KarpagamKarthikeyan Aug 5, 2026
c4a539b
chore(deps-dev): bump fast-uri from 3.1.4 to 3.1.5 in /datafusion/was…
dependabot[bot] Aug 5, 2026
3e3a92d
feat: Calculate non-distinct `sum` from column statistics when availa…
AdamGS Aug 5, 2026
373fab7
Add support for running sql benchmarks with command line arguments (#…
Omega359 Aug 5, 2026
ce2f153
fix(proto): preserve empty projection when ser/de MemoryScanExec (#24…
buraksenn Aug 5, 2026
5eba27f
feat: prune unread Parquet leaves when a nested column is cast to a n…
mbutrovich Aug 5, 2026
aa38d3c
feat(pruning): expose pruning predicate IN-list rewrite size cap as a…
zhuqi-lucas Aug 6, 2026
f27e50c
refactor join-key equality filtering (#23843)
shehab-ali Aug 6, 2026
70c26a0
fix: Fix nullability of logical `InSubquery` expression (#23429)
AdamGS Aug 6, 2026
4fcbfb1
Fix syntax examples of some functions (#23212)
Viicos Aug 6, 2026
e6b4221
refactor(hash-aggr): Support spilling for `partial` and `final` mode …
2010YOUY01 Aug 6, 2026
0e0cbd5
Proto: add DataSink serialization hook (#23752)
Phoenix500526 Aug 6, 2026
24483db
bench: multi-conjunct shared-prefix struct row-filter pushdown (#23524)
SubhamSinghal Aug 6, 2026
491de04
Proto: migrate file sink serialization (#23781)
Phoenix500526 Aug 7, 2026
f05869b
refactor(pruning): deprecate PruningPredicate::try_new (#24129)
goutamadwant Aug 7, 2026
e64e3f7
Preserve grouping ID during aggregate CSE (#24144)
notfilippo Aug 7, 2026
1a18915
fix: keep every spilled slice of a sort-merge join inner key group (#…
buraksenn Aug 7, 2026
0646a31
fix: reduce peak memory usage when round robin tiebreaker is disabled…
ariel-miculas Aug 7, 2026
c8f89cf
chore(deps): Update to arrow/parquet 59.2.0 (#24030)
alamb Aug 7, 2026
0ef844e
refactor: move lambda variable scope into Physical Planning Context (…
sweb Aug 7, 2026
e08aed1
feat: Implement FFI_QueryPlanner (#24028)
timsaucer Aug 7, 2026
09dd8d2
fix: preserve total_byte_size in calculate_total_byte_size when num_r…
bert-beyondloops Aug 7, 2026
e2e8e1c
Add DataSource/FileSource proto hooks and FileScanConfig serde (#23683)
kumarUjjawal Aug 7, 2026
92f4e8f
add ExecutionPlan::dynamic_expressions_produced() method (#24068)
jayshrivastava Aug 7, 2026
fc846dd
fix(proto): preserve HashJoinExec fetch across serialization (#24165)
adriangb Aug 7, 2026
634f0b3
feat: Add SQL planner, physical planner, and TableProvider hook for M…
wirybeaver Aug 7, 2026
1cb89d2
fix: box aws-config loading future avoid clippy warning (#24175)
neilconway Aug 8, 2026
e0a05a6
Fix duplicated words in documentation (#24176)
latent-9 Aug 8, 2026
038bfa2
feat: add GroupColumn support for Decimal256 in multi-column GROUP BY…
tohuya6 Aug 8, 2026
c1cb715
refactor(proto): migrate CsvSource serde (#24177)
buraksenn Aug 8, 2026
a478fb1
fix: Correctly process numeric literals with underscores (#24046)
nuno-faria Aug 8, 2026
7d31a09
fix: typo for the builder error type (#24052)
JosephLenton Aug 8, 2026
4b48cb0
tests: add SLT test coverage for `MERGE INTO` (#24174)
alamb Aug 8, 2026
e440932
refactor(proto): migrate ParquetSource serde (#24169)
buraksenn Aug 8, 2026
eec8b94
refactor(proto): migrate JsonSource serde (#24178)
buraksenn Aug 8, 2026
c8b4aea
chore: add runendencoded & listview types to dfschema equality method…
Jefffrey Aug 9, 2026
6b6cc09
perf: preserve dictionary encoding for `btrim`, `ltrim`, and `rtrim` …
lyne7-sc Aug 9, 2026
cc61491
fix: support untyped NULL input for median (#24104)
Sigma-Ma Aug 9, 2026
abc5ce7
Proto: migrate MemorySourceConfig to per-source try_to_proto / try_fr…
adriangb Aug 9, 2026
b225ded
fix(proto): prevent logical plan serialization stack overflow (#24124)
mithuncy Aug 9, 2026
354f2d7
fix: prevent next_day panic on far-future start dates (#24194)
viirya Aug 9, 2026
ddb0250
refactor(proto): destructure plan and proto structs in aggregate and …
adriangb Aug 9, 2026
918013e
refactor(proto): migrate AvroSource serde (#24190)
buraksenn Aug 9, 2026
73cc86d
refactor(proto): migrate ArrowSource serde (#24189)
buraksenn Aug 9, 2026
33f3688
chore(proto): deprecate `AsyncFuncExec::async_exprs`, which only exis…
adriangb Aug 9, 2026
da99206
fix: return error instead of panic when decoding ParquetScan/AvroScan…
nam2ee Aug 9, 2026
0062b4b
chore(deps): bump the all-other-cargo-deps group across 1 directory w…
dependabot[bot] Aug 9, 2026
0d5f9b1
fix: re-enable null-equal join dynamic filters with an IS NULL predic…
mdashti Aug 9, 2026
7e66fdd
test: add UnionArray hashing SQL coverage. (#24199)
VaibhaveS Aug 10, 2026
bc48a4f
chore: fix some scalar function docs (#24134)
Jefffrey Aug 10, 2026
585867b
fix(physical-plan): count empty grouping sets in the aggregate row es…
asolimando Aug 10, 2026
308e212
fix: generate_series overflow panics at i64 boundary and out-of-range…
u70b3 Aug 10, 2026
2bfdd4a
Reapply "Add ExecutionPlan::apply_expressions() (apache#20337)" (apac…
jayshrivastava Aug 10, 2026
0f68e23
test(proto): add missing physical plan round-trip coverage (#24172)
adriangb Aug 10, 2026
f4c8ba1
fix(proto): serialize Global/LocalLimitExec required_ordering (#24183)
buraksenn Aug 10, 2026
a942c0b
Skip page index load (and `ParquetMetaData` clone) when the file has …
alamb Aug 10, 2026
f6879b4
fix: clear stale sliding aggregate state for empty RANGE frames (#24185)
lyne7-sc Aug 10, 2026
d443bab
test(proto): split roundtrip_physical_plan.rs by plan category (#24223)
adriangb Aug 10, 2026
33ad1cc
perf: optimize char -> byte offset mapping in `regexp_count` (#24153)
neilconway Aug 10, 2026
a251b94
fix(proto): preserve AggregateExec schema and reversed state (#24207)
buraksenn Aug 10, 2026
d5bd10d
physical-plan: coerce UNION/INTERLEAVE schema mismatches at plan time…
dariocurr Aug 10, 2026
a9b61ab
fix(parquet): remap sorting columns for partitioned writes (#24211)
xudong963 Aug 11, 2026
9f2a23f
feat(dataframe): add f16 support to dataframe! macro (#24234)
cj-zhukov Aug 11, 2026
a05388e
Parquet row filter struct access tree (#23217)
SubhamSinghal Aug 11, 2026
a1f64e9
fix: reject max_buffered_batches_per_output_file values below 2 (#24204)
DevShiba Aug 11, 2026
8cb7c84
Fix aggregate accumulator capacity accounting (#24099)
kosiew Aug 11, 2026
d3100e2
refactor: Refactor numeric sign and padding in Spark format_string (#…
JSOD11 Aug 11, 2026
4978706
Docs: Add community showcase to the docs page (#24217)
alamb Aug 11, 2026
d5868e6
docs: explain Parquet content-defined chunking (#24155)
goutamadwant Aug 11, 2026
047f531
fix: avoid buffering unbounded repartition output indefinitely (#24193)
goutamadwant Aug 11, 2026
87f9443
chore(deps): bump the all-other-cargo-deps group with 4 updates (#24254)
dependabot[bot] Aug 11, 2026
264a917
chore(deps): bump taiki-e/install-action from 2.85.6 to 2.85.10 (#24253)
dependabot[bot] Aug 11, 2026
72fbbe7
chore(deps): bump runs-on/action from 2.2.0 to 2.3.0 (#24252)
dependabot[bot] Aug 11, 2026
1d000c2
chore(deps): bump Swatinem/rust-cache from 2.9.1 to 2.9.2 (#24251)
dependabot[bot] Aug 11, 2026
3f0a953
Add FixedSizeBinary support for MultiGroupBy (#23646)
maxburke Aug 11, 2026
66ef276
perf: remove per-row String allocations from the Spark url functions …
andygrove Aug 11, 2026
66677fe
docs: add IceGate to the list of featured data platforms (#24240)
frisbeeman Aug 11, 2026
a253a6a
Expose accumulator state to allow prefix scanning (#24035)
avantgardnerio Aug 11, 2026
e6be9cd
perf: skip evaluating fully calculated window partitions (#24127)
neilconway Aug 11, 2026
4e6acfe
fix(lambda): only push referenced params into the merged batch (#24162)
LiaCastaneda Aug 11, 2026
618aaff
Enable dynamic filters for range-partitioned joins (#23854)
peterxcli Aug 11, 2026
9ecb75f
Docs: Add PR review guide (#24051)
alamb Aug 11, 2026
7544051
chore(proto): remove never-released deprecated PhysicalPlanNodeExt sc…
adriangb Aug 11, 2026
041a716
Restore the From / TryFrom proto conversions dropped since 54.1.0 (#2…
adriangb Aug 11, 2026
bc99f40
refactor: make apply_expression_roots more ergonomic (#24226)
jayshrivastava Aug 11, 2026
b5c4bf2
chore(deps): bump toml from 0.9.12+spec-1.1.0 to 1.1.3+spec-1.1.0 (#2…
dependabot[bot] Aug 11, 2026
0ef1aaa
refactor: moving WindowTopN before EnsureRequirements (#24191)
saadtajwar Aug 11, 2026
149bdb5
fix: infer placeholder types in GROUP BY, HAVING, QUALIFY and ORDER B…
Braedon-Wooding-Displayr Aug 11, 2026
570d2e1
perf: prune window state only for partitions that made progress (#24148)
neilconway Aug 11, 2026
8e5c789
FFI: plumb with_updated_config for FFI_ScalarUDF (#22797)
Amogh-2404 Aug 11, 2026
fc4e43e
chore(deps): bump the codeql-actions group with 2 updates (#24250)
dependabot[bot] Aug 11, 2026
30ca39b
fix: Propagate NULLs in `regexp_count`, `regexp_instr` (#24239)
neilconway Aug 11, 2026
7e015b7
fix(physical-plan): CTAS panic on wasm32-unknown-unknown (#24275)
kentkwu Aug 11, 2026
c08832d
fix: preserve NULL semantics in `log` and `power` simplification (#24…
lyne7-sc Aug 12, 2026
9b3b518
fix: ensure new_list respects data_type argument (#24029)
Ruchirtripathi Aug 12, 2026
46bd88a
[branch-55] Prepare for 55 release - version number, changelog (#24292)
timsaucer Aug 12, 2026
6541608
[branch-55] Update additional references to version number (#24295)
timsaucer Aug 12, 2026
83d3489
[branch-55] Backport of refactor(physical-plan): Simplify `ExecutionP…
JSOD11 Aug 12, 2026
209fd94
[branch-55] Update changelog (#24314)
timsaucer Aug 13, 2026
85406f3
[branch-55] fix: correct list field inner type in array functions (#2…
timsaucer Aug 14, 2026
26c0204
[branch-55] fix wrong TopK results from re-reading already-delivered …
zhuqi-lucas Aug 14, 2026
f51b9ea
[branch-55]: don't runtime-prune row groups while a page-index RowSel…
zhuqi-lucas Aug 14, 2026
520f389
[branch-55] fix: preserve the input list's inner field in array_appen…
timsaucer Aug 14, 2026
d555234
update changelog (#24385)
timsaucer Aug 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
364 changes: 364 additions & 0 deletions .ai/skills/datafusion-ffi/SKILL.md

Large diffs are not rendered by default.

35 changes: 35 additions & 0 deletions .ai/skills/pr_review/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
---
name: pr_review
description: Review Apache DataFusion pull requests following the project's PR review guide. Use whenever asked to review a DataFusion PR or PR URL, and whenever creating a PR, to check the changes against the same criteria before submitting.
---

# DataFusion PR Review

This skill describes the mechanics for doing PR reviews from the command line.

When creating a PR, skip the "Collect PR context" step and instead check the
changes against each area of the
[PR review guide](../../../docs/source/contributor-guide/pr_review.md) before
submitting.

## Collect PR context

- Check out the PR locally: `gh pr checkout <PR number>` (ask first if the
working tree has other work in progress).
- Fetch the PR description, comments, and reviews:
`gh pr view <PR number> --json title,body,comments,reviews`
- Fetch CI status: `gh pr checks <PR number>`.

## Compute the diff

```bash
# find the remote that points at apache/datafusion (e.g. `apache`, `upstream`, or `origin`)
UPSTREAM=$(git remote -v | grep -m1 'apache/datafusion' | cut -f1)
git fetch $UPSTREAM main
git diff $(git merge-base HEAD $UPSTREAM/main)
```

## Review checklist

Work through each area from the
[PR review guide](../../../docs/source/contributor-guide/pr_review.md).
8 changes: 7 additions & 1 deletion .asf.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ github:
- "cargo test (macos-aarch64)"
- "Verify Vendored Code"
- "Check cargo fmt"
- "Check GitHub Actions install tooling"
- "clippy"
- "check Cargo.toml formatting"
- "check configs.md and ***_functions.md is up-to-date"
Expand All @@ -97,6 +98,12 @@ github:
branch-52:
required_pull_request_reviews:
required_approving_review_count: 1
branch-53:
required_pull_request_reviews:
required_approving_review_count: 1
branch-54:
required_pull_request_reviews:
required_approving_review_count: 1
pull_requests:
# enable updating head branches of pull requests
allow_update_branch: true
Expand All @@ -108,4 +115,3 @@ github:
# https://datafusion.apache.org/
publish:
whoami: asf-site

2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ body:
description: Please describe what you are trying to do.
placeholder: >
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
(This section helps Arrow developers understand the context and *why* for this feature, in addition to the *what*)
(This section helps DataFusion developers understand the context and *why* for this feature, in addition to the *what*)
- type: textarea
attributes:
label: Describe the solution you'd like
Expand Down
11 changes: 11 additions & 0 deletions .github/actions/setup-rust-runtime/action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,14 @@ runs:
run: |
echo "RUST_BACKTRACE=1" >> $GITHUB_ENV
echo "RUSTFLAGS=-C debuginfo=line-tables-only -C incremental=false" >> $GITHUB_ENV
# Work around intermittent "[16] Error in the HTTP2 framing layer"
# failures from curl when cargo fetches crates from crates.io.
# Disabling HTTP/2 multiplexing forces cargo to serialize requests,
# and raising retries makes transient network hiccups self-heal.
#
# Reference:
# https://doc.rust-lang.org/cargo/reference/config.html?#httpmultiplexing
# https://doc.rust-lang.org/cargo/reference/config.html?#netretry
echo "CARGO_HTTP_MULTIPLEXING=false" >> $GITHUB_ENV
echo "CARGO_NET_RETRY=10" >> $GITHUB_ENV
echo "CARGO_HTTP_RETRY=10" >> $GITHUB_ENV
4 changes: 4 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,10 @@ updates:
interval: "weekly"
open-pull-requests-limit: 10
labels: [auto-dependencies]
groups:
codeql-actions:
patterns:
- "github/codeql-action/*"
- package-ecosystem: "pip"
directory: "/docs"
schedule:
Expand Down
11 changes: 8 additions & 3 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,19 @@ We generally require a GitHub issue to be filed for all bug fixes and enhancemen
<!--
Why are you proposing this change? If this is already explained clearly in the issue then this section is not needed.
Explaining clearly why changes are proposed helps reviewers understand your changes and offer better suggestions for fixes.

Please explain the problem you are trying to solve in terms of the user-visible
behavior, rather than the implementation.

For example, "The code in `foo.rs` doesn't handle nulls" is a symptom of the
implementation. "COUNT(DISTINCT) returns wrong results when the column contains
nulls" is the user-visible problem.
-->

## What changes are included in this PR?

<!--
There is no need to duplicate the description in the issue here but it is sometimes worth providing a summary of the individual changes in this PR.
There is no need to duplicate the description in the issue here, but it is sometimes worth providing a summary of the individual changes in this PR.
-->

## Are these changes tested?
Expand All @@ -33,8 +40,6 @@ If tests are not included in your PR, please explain why (for example, are they

<!--
If there are user-facing changes then we may require documentation to be updated before approving the PR.
-->

<!--
If there are any breaking changes to public APIs, please add the `api change` label.
-->
8 changes: 5 additions & 3 deletions .github/workflows/audit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,14 @@ jobs:
security_audit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Install cargo-audit
uses: taiki-e/install-action@213ccc1a076163c093f914550b94feb90fab916d # v2.79.2
uses: taiki-e/install-action@6c6fd71fe4fb72c3697d269963d0e15df8adedad # v2.85.10
with:
tool: cargo-audit
- name: Run audit check
# Note: you can ignore specific RUSTSEC issues using the `--ignore` flag ,for example:
# run: cargo audit --ignore RUSTSEC-2026-0001
run: cargo audit
# TODO: remove once object_store upgrades to quick-xml >= 0.41.0
# https://github.com/apache/datafusion/issues/23297
run: cargo audit --ignore RUSTSEC-2026-0194 --ignore RUSTSEC-2026-0195
4 changes: 2 additions & 2 deletions .github/workflows/breaking_changes_detector.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0

Expand Down Expand Up @@ -89,7 +89,7 @@ jobs:

- name: Install cargo-semver-checks
if: steps.changed_crates.outputs.packages != ''
uses: taiki-e/install-action@213ccc1a076163c093f914550b94feb90fab916d # v2.79.2
uses: taiki-e/install-action@6c6fd71fe4fb72c3697d269963d0e15df8adedad # v2.85.10
with:
tool: cargo-semver-checks

Expand Down
85 changes: 56 additions & 29 deletions .github/workflows/breaking_changes_detector_comment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -104,39 +104,66 @@ jobs:
echo "${DELIM}"
} >> "$GITHUB_OUTPUT"

# The marker `<!-- semver-check-comment -->` is what makes the comment
# "sticky": maintain-one-comment uses it to find and replace (or
# delete) the existing comment instead of stacking new ones.

# Find any existing sticky comment by its hidden marker so we can update
# or delete it instead of stacking new ones.
- name: Find existing sticky comment
id: find
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
REPO: ${{ github.repository }}
PR_NUMBER: ${{ steps.read.outputs.pr_number }}
run: |
COMMENT_ID=$(gh api --paginate "repos/${REPO}/issues/${PR_NUMBER}/comments" \
--jq '.[] | select(.body | contains("<!-- semver-check-comment -->")) | .id' \
| head -n1)
echo "comment_id=${COMMENT_ID}" >> "$GITHUB_OUTPUT"

# update the existing comment found above, or create a new one. The hidden
# marker `<!-- semver-check-comment -->` stays in the body so the next run
# finds it again. LOGS is interpolated via a shell parameter expansion,
# whose result bash does not re-scan, so untrusted log content cannot
# inject further commands.
- name: Upsert sticky comment
if: steps.read.outputs.result != 'success'
uses: actions-cool/maintain-one-comment@909842216bc8e8658364c572ec52100f4c2cc50a # v3.3.0
with:
token: ${{ secrets.GITHUB_TOKEN }}
number: ${{ steps.read.outputs.pr_number }}
body-include: '<!-- semver-check-comment -->'
body: |
<!-- semver-check-comment -->
Thank you for opening this pull request!

Reviewer note: [cargo-semver-checks](https://github.com/obi1kenobi/cargo-semver-checks) reported the current version number is not SemVer-compatible with the changes in this pull request (compared against the base branch).

<details>
<summary>Details</summary>

```
${{ steps.read.outputs.logs }}
```

</details>
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
REPO: ${{ github.repository }}
PR_NUMBER: ${{ steps.read.outputs.pr_number }}
COMMENT_ID: ${{ steps.find.outputs.comment_id }}
LOGS: ${{ steps.read.outputs.logs }}
run: |
set -euo pipefail
BODY="<!-- semver-check-comment -->
Thank you for opening this pull request!

Reviewer note: [cargo-semver-checks](https://github.com/obi1kenobi/cargo-semver-checks) reported the current version number is not SemVer-compatible with the changes in this pull request (compared against the base branch).

<details>
<summary>Details</summary>

\`\`\`
${LOGS}
\`\`\`

</details>"

# Use --raw-field (not --field): always sends the value as a literal string. while --field would treat a leading `@` as a file to read
# (even though the body does not start with user input we are being cautious)
if [ -n "$COMMENT_ID" ]; then
gh api "repos/${REPO}/issues/comments/${COMMENT_ID}" --method PATCH --raw-field body="$BODY"
else
gh api "repos/${REPO}/issues/${PR_NUMBER}/comments" --method POST --raw-field body="$BODY"
fi

# Clear a stale comment once the breaking change is resolved.
- name: Delete sticky comment
if: steps.read.outputs.result == 'success'
uses: actions-cool/maintain-one-comment@909842216bc8e8658364c572ec52100f4c2cc50a # v3.3.0
with:
token: ${{ secrets.GITHUB_TOKEN }}
number: ${{ steps.read.outputs.pr_number }}
body-include: '<!-- semver-check-comment -->'
delete: true
if: steps.read.outputs.result == 'success' && steps.find.outputs.comment_id != ''
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
REPO: ${{ github.repository }}
COMMENT_ID: ${{ steps.find.outputs.comment_id }}
run: gh api -X DELETE "repos/${REPO}/issues/comments/${COMMENT_ID}"

- name: Add "auto detected api change" label
if: steps.read.outputs.result != 'success'
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,16 +40,16 @@ jobs:

steps:
- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false

- name: Initialize CodeQL
uses: github/codeql-action/init@9e0d7b8d25671d64c341c19c0152d693099fb5ba # v4
uses: github/codeql-action/init@5595ccaf912efad79be6eef63a5619ff05969be3 # v4
with:
languages: actions

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@9e0d7b8d25671d64c341c19c0152d693099fb5ba # v4
uses: github/codeql-action/analyze@5595ccaf912efad79be6eef63a5619ff05969be3 # v4
with:
category: "/language:actions"
13 changes: 8 additions & 5 deletions .github/workflows/dependencies.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ on:
push:
branches-ignore:
- 'gh-readonly-queue/**'
- 'dependabot/**'
pull_request:
merge_group:
# manual trigger
Expand All @@ -41,7 +42,7 @@ jobs:
container:
image: amd64/rust
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
submodules: true
fetch-depth: 1
Expand All @@ -50,18 +51,20 @@ jobs:
with:
rust-version: stable
- name: Check dependencies
working-directory: dev/depcheck
run: |
cd dev/depcheck
cargo run
cargo run --locked

detect-unused-dependencies:
name: Detect Unused Dependencies
runs-on: ubuntu-latest
container:
image: amd64/rust
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Install cargo-machete
run: cargo install cargo-machete --version ^0.9 --locked
uses: taiki-e/install-action@6c6fd71fe4fb72c3697d269963d0e15df8adedad # v2.85.10
with:
tool: cargo-machete@0.9
- name: Detect unused dependencies
run: cargo machete --with-metadata
26 changes: 15 additions & 11 deletions .github/workflows/dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ on:
push:
branches-ignore:
- 'gh-readonly-queue/**'
- 'dependabot/**'
pull_request:
merge_group:

Expand All @@ -35,19 +36,20 @@ jobs:
runs-on: ubuntu-latest
name: Check License Header
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Install HawkEye
# This CI job is bound by installation time, use `--profile dev` to speed it up
run: cargo install hawkeye --version 6.2.0 --locked --profile dev
uses: taiki-e/install-action@6c6fd71fe4fb72c3697d269963d0e15df8adedad # v2.85.10
with:
tool: hawkeye@6.2.0
- name: Run license header check
run: ci/scripts/license_header.sh

prettier:
name: Use prettier to check formatting of documents
runs-on: ubuntu-slim
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: "20"
- name: Prettier check
Expand All @@ -58,13 +60,13 @@ jobs:
name: Check Markdown Links
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Load tool versions
run: |
source ci/scripts/utils/tool_versions.sh
echo "LYCHEE_VERSION=${LYCHEE_VERSION}" >> "$GITHUB_ENV"
- name: Install lychee
uses: taiki-e/install-action@213ccc1a076163c093f914550b94feb90fab916d # v2.79.2
uses: taiki-e/install-action@6c6fd71fe4fb72c3697d269963d0e15df8adedad # v2.85.10
with:
tool: lychee@${{ env.LYCHEE_VERSION }}
- name: Run markdown link check
Expand All @@ -74,21 +76,23 @@ jobs:
name: Validate required_status_checks in .asf.yaml
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- run: pip install pyyaml
- run: python3 ci/scripts/check_asf_yaml_status_checks.py

typos:
name: Spell Check with Typos
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
# Version fixed on purpose. It uses heuristics to detect typos, so upgrading
# it may cause checks to fail more often.
# We can upgrade it manually once a while.
- name: Install typos-cli
run: cargo install typos-cli --locked --version 1.37.0
- name: Install typos
uses: taiki-e/install-action@6c6fd71fe4fb72c3697d269963d0e15df8adedad # v2.85.10
with:
tool: typos@1.37.0
- name: Run typos check
run: ci/scripts/typos_check.sh
Loading
Loading