dev/changelog/54.0.0.md
This release consists of 740 commits from 139 contributors. See credits at the end of this changelog for more information.
See the upgrade guide for information on how to upgrade from previous versions.
Breaking changes:
ExecutionPlan::apply_expressions() #20337 (LiaCastaneda)Field to Expr::Cast -- allow logical expressions to express a cast to an extension type #18136 (paleolimbot)JsonAccess as a binary operator, add Operator::Colon #20628 (Samyak2)partition_statistics API #20570 (xudong963)arrays_zip/list_zip allow single array argument #21047 (hsiang-c)StringViewArrayBuilder #21538 (neilconway)as_any on the PhysicalExpr trait #21573 (timsaucer)as_any from datafusion-datasource #21576 (timsaucer)FFI_ExecutionPlan #22136 (mailmindlin)ExecutionPlan statistics across the FFI boundary #22157 (mailmindlin)Performance related:
array_to_string to avoid a copy #20639 (neilconway)array_concat using MutableArrayData #20620 (neilconway)to_char to allocate less, fix NULL handling #20635 (neilconway)array_has_any, array_has_all #20588 (neilconway)array_positions() for scalar needle #20770 (neilconway)approx_distinct() for string, binary inputs #21037 (neilconway)approx_distinct for inline Utf8View #21064 (neilconway)strpos() for scalar needle, plus optimize UTF-8 codepath #20754 (neilconway)lpad(), rpad() for scalar args #20657 (neilconway)array_sort() #21083 (neilconway)SimplifyContext to avoid allocating default values #21092 (AdamGS)array_min, array_max for arrays of primitive types #21101 (neilconway)GroupsAccumulator to string_agg #21154 (neilconway)split_part, support Utf8View #21119 (neilconway)string_to_array for scalar args #21131 (neilconway)split_part for scalar args #21238 (neilconway)split_part for Utf8View #21420 (neilconway)regexp_replace by stripping trailing .* from anchored patterns. 2.4x improvement (ClickBench Q28) #21379 (Dandandan)substr #21519 (neilconway)find_in_set #21464 (neilconway)lcm, gcd #21468 (neilconway)arrays_zip #21475 (neilconway)array_remove #21532 (neilconway)array_slice #21482 (neilconway)array_has #21471 (neilconway)Utf8View string concat #21535 (neilconway)array_resize #20617 (lyne7-sc)left, right to reduce copying #21442 (neilconway)substr for Utf8, LargeUtf8 #21366 (neilconway)OptimizeProjections pass #21726 (neilconway)DFSchema::qualified_name #21722 (neilconway)project_statistics #21734 (neilconway)Box and Arc allocation churn during tree rewriting #21749 (neilconway)lower, upper for sliced arrays #21814 (neilconway)lower and upper #21789 (neilconway)uuid #21845 (neilconway)initcap #21863 (neilconway)chr #21847 (neilconway)first_value, last_value aggregate function #21383 (theirix)substr_index to use bulk-NULL string builder #21877 (neilconway)replace #21849 (neilconway)BulkNullStringArrayBuilder trait, use in repeat #21854 (neilconway)median and percentile_cont #21894 (lyne7-sc)reverse using bulk-NULL string builders #21991 (neilconway)lower, upper for ASCII inputs #21980 (neilconway)NullBuffer::union_many #22070 (neilconway)generate_series and range performance #21891 (lyne7-sc)array_replace #22119 (lyne7-sc)append_with to string builders, use in replace #22029 (neilconway)truncate_list_nulls and avoid counting all true bits #22158 (rluvaton)Implemented enhancements:
array_contains builtin function #20685 (comphead)partition_statistics() for HashJoinExec #20711 (jonathanc-n)arrays_zip return type #20886 (comphead)Statistics #20768 (jonathanc-n)custom_string_literal_override to unparser Dialect trait #20590 (goldmedal)sqllogictests datafusion-substrait behind optional 'substrait' feature #21268 (zhuqi-lucas)LATERAL JOIN functionality #21202 (neilconway)with_metadata scalar UDF to attach Arrow field metadata #21509 (adriangb)array_compact builtin function #21522 (comphead)LEFT JOIN LATERAL #21352 (neilconway)MemoryPool details in ResourcesExhausted error messages #20387 (erenavsarogullari)ListView and LargeListView in ScalarValue #21669 (Jefffrey)__unnest_placeholder from struct unnest projection #21725 (akoshchiy)Filter → TableScan predicates to WHERE instead of moving to JOIN ON #21694 (sgrebnov)ListView to List for UDFs #21855 (Jefffrey)Vec<bool> #21886 (huymq1710)TryFrom #21985 (Soham-Bhattacharjee-work)Fixed bugs:
sql feature truly optional #20625 (linhr)array_has scalar path with sliced arrays #20677 (neilconway)HashJoin panic with String dictionary keys (don't flatten keys) #20505 (alamb)probe_side.len() for RightMark/Anti count(*) queries #20710 (jonathanc-n)mod/pmod with ANSI mode support #20461 (davidlghellin)concat_ws #20436 (neilconway)!=0 check from supports_collect_by_thresholds #20730 (jonathanc-n)!~ '.*' case to col IS NULL AND Boolean(NULL) instead of Eq "" #20702 (petern48)parse_url #20506 (davidlghellin)--profile=ci #20987 (alamb)main compilation failure #21242 (2010YOUY01)SELECT * EXCLUDE(...) silently returns empty rows when all columns are excluded #21259 (xiedeyantu)lpad, rpad, translate #21405 (neilconway)pivot_unpivot example #21432 (niebayes)main #21664 (2010YOUY01)median retract logic for sliding window frames #21300 (lyne7-sc)slice function Null type to GenericListArray casting issue #20469 (erenavsarogullari)handle_child_pushdown_result for SortExec #21527 (haohuaijin)optimize_projections failure after mark joins created by EXISTS OR EXISTS #21265 (buraksenn)datafusion_expr in make_valid_utf8 #21687 (hcrosse)as_any() to fix compilation error #21693 (Jefffrey)BigQueryDialect more robust #21296 (sgrebnov)datafusion-cli test failure #21761 (2010YOUY01)arrow-ipc/zstd in datasource-arrow to make test_spill_compression pass in every config #21504 (AdamGS).gitignore in benchmarks/ #21954 (2010YOUY01)ScalarSubqueryExec #21986 (neilconway)median returns Float64 for integer inputs to avoid truncation #21988 (CuteChuanChuan)CoalescePartitionsExec #22017 (Samyak2)overlay panic on valid Unicode input, Postgres compatibility #22046 (neilconway)format_string for illegal characters #22077 (neilconway)FILTER on NULLs #22068 (neilconway)array_replace bench #22120 (kumarUjjawal)Documentation updates:
datafusion-cli doc for top-memory-consumers config #20390 (erenavsarogullari)Precision #20713 (jonathanc-n)TypePlanner to plan SQL types as extension types #20676 (paleolimbot)SessionContext::parse_duration API #20816 (erenavsarogullari)substr() benchmarks, refactor #20803 (neilconway)arrow_try_cast UDF #21130 (adriangb)RESET Command Documentation #21245 (erenavsarogullari)null values in struct comparisons #21226 (xiedeyantu)arrow_field(expr) scalar UDF #21389 (adriangb)cargo publish commands by dependency #21552 (alamb)map_extract examples #21360 (nuno-faria)branch-53, update some dependencies #21708 (comphead)array_remove_* NULL handling changes to Upgrade Guide #21769 (comphead)date_part('isodow') #22116 (sdf-jkl)ExecutionPlan::apply_expressions() (#20337)" (#22437) #22445 (alamb)Other:
assigning_clones clippy lint #20670 (neilconway)AggregateUdfImpl::simplify and WindowUDFImpl::simplify #20712 (alamb)datafusion-cli fair and unbounded memory-pool test coverage #20565 (erenavsarogullari)ParquetPushDecoder in ParquetOpener #20839 (Dandandan)PartitionedFileStream #20869 (alamb)SUM(expr + scalar) --> SUM(expr) + scalar*COUNT(expr) #20749 (alamb)columns_sorted in row_filters #20497 (sdf-jkl)SessionContext::register_* methods consistent #20873 (alexandreyc)ParquetReadPlan for leaf column resolution #20913 (friendlymatthew)paste crate #20946 (coderfender)COUNT(DISTINCT column)) calculations #20845 (buraksenn)array_remove_* with NULLS #21013 (comphead)max_distinct_count when hash join has a pushed-down limit #20799 (KARTIK64-rgb)elapsed_compute metric for Parquet DataSourceExec #20767 (ernestprovo23)58.1.0 #21044 (alamb)ProjectionMask for parquet projections #20925 (friendlymatthew)sort_mem_validation #21222 (blaginin)check_run_id and pr_number from extended tests #21228 (blaginin)TryInto impl by TryFrom #21203 (Tpt)TrackConsumersPool::metrics() to expose cons… #21147 (bert-beyondloops).claude/settings.local.json to .gitignore #21312 (jonahgao)FileStreamBuilder for creating FileStreams #21261 (alamb)ProjectionExecs #21333 (Dandandan)datafusion.format.* configs test coverage #21355 (erenavsarogullari)ParquetOpener to ParquetMorselizer #21327 (alamb)CastColumnExpr branches in pruning and ordering equivalence #21545 (kosiew)regexp_match logic #21486 (alamb)typo problems #21495 (erenavsarogullari)array_element, array_any_value. #21672 (tabac)array.slt into smaller files #21658 (comphead)GROUP BY to test spark collect_set #21659 (comphead)test_display_pg_json pass regardless of build setup and dependencies #21502 (AdamGS)read_spill_as_stream #21713 (2010YOUY01)ReplayableStreamSource #21742 (2010YOUY01)add_months overflow test #21774 (Jefffrey)array_union nested null array edge case test #21773 (Jefffrey)publish = false for internal crates #21869 (rluvaton)sha & md-5 to 0.11.0 #21840 (Jefffrey)EmptyTable scans #20844 (OlegWock)array_remove benchmarks & add nested benches #21834 (Jefffrey)astral-tokio-tar to appease cargo_audit #21902 (alamb)rust.yml and docs.yaml workflows #21884 (Jefffrey)iff typos #21904 (comphead)datafusion-spark substring #21963 (comphead)auto detected api change label on breaking change detecting in the CI #21953 (rluvaton)physical-plan #21917 (kosiew)datafusion-spark substring to support Binary types #21979 (comphead)linux-build-lib from extended tests #21227 (blaginin)IS (NOT) DISTINCT FROM in Unparser #22054 (cetra3)--benches --all-features #22081 (neilconway)arrow / parquet from 58.2.0 --> 58.3.0 #22066 (alamb)array_expression benchmark #22143 (kumarUjjawal)LIKE expressions with escape sequences #22375 (masonh22)substr #22183 (neilconway)format_string numeric %c conversion dispatch #22166 (kosiew)build_join in ScalarSubqueryToJoin (#… #22693 (LiaCastaneda)enabled flag (backport #22632) #22648 (kszucs)Thank you to everyone who contributed to this release. Here is a breakdown of commits (PRs merged) per contributor.
70 Neil Conway
68 dependabot[bot]
56 Andrew Lamb
26 Burak Şen
26 Oleks V
21 Daniël Heres
20 Adrian Garcia Badaracco
18 Kumar Ujjawal
17 Matt Butrovich
16 kosiew
15 Qi Zhu
15 Tim Saucer
14 Zhen Chen
13 Dmitrii Blaginin
13 Jeffrey Vo
13 Yongting You
13 xudong.w
12 Huaijin
11 Bhargava Vadlamani
10 Eren Avsarogullari
10 Matthew Kim
9 gstvg
8 Raz Luvaton
8 Subham Singhal
8 theirix
6 Adam Gutglick
6 Gabriel
6 Jonathan Chen
5 Alessandro Solimando
5 Alfonso Subiotto Marqués
5 Bruce Ritchie
5 Liang-Chi Hsieh
5 Lía Adriana
5 Nuno Faria
5 Sergei Grebnov
4 Andy Grove
4 Ariel Miculas-Trif
4 Geoffrey Claude
4 Jayant Shrivastava
4 Kevin Liu
4 lyne
3 Brent Gardner
3 David López
3 Dewey Dunnington
3 Harrison Crosse
3 Huy Mac
3 Kazantsev Maksim
3 Konstantin Tarasov
3 Namgung Chan
3 Peter L
3 RIchard Baah
3 Ratul Dawar
3 Raushan Prabhakar
3 Xander
3 Yonatan Striem Amit
3 Yu-Chuan Hung
3 crm26
2 Acfboy
2 Adam Curtis
2 Albert Skalt
2 Anastasios Bakogiannis
2 Bert Vermeiren
2 Frederic Branczyk
2 Geethapranay1
2 Jonah Gao
2 Krisztián Szűcs
2 Liam Feehery
2 Marko Grujic
2 Michael Kleen
2 Peter Nguyen
2 Rafael Herrero
2 Rohan Krishnaswamy
2 Samyak Sarnayak
2 Sergey Zhukov
2 Shiv Bhatia
2 Tobias Schwarzinger
2 hsiang-c
2 jj.lee
2 linfeng
2 yaommen
1 Adam Reeve
1 Ahmed Mezghani
1 Alex Zhang
1 Alexander Alexandrov
1 Alexander Rafferty
1 Alexandre Crayssac
1 Andrey Koshchiy
1 Asish Kumar
1 Ben Bellick
1 Bruno Volpato
1 Daniel Tu
1 Druva
1 EeshanBembi
1 Emil Ernerfeldt
1 Emily Matheys
1 Ernest Provo
1 Filip Petkovski
1 Filip Wojciechowski
1 Florian Müller
1 Fred Thomas
1 Gene Bordegaray
1 Georgi Krastev
1 Guillaume Boucher
1 Haresh Khanna
1 Helgi Kristvin Sigurbjarnarson
1 Heran Lin
1 Jamal Saad
1 Jarro van Ginkel
1 Jax Liu
1 Joan Antoni RE
1 Justin O'Dwyer
1 Kartik Gupta
1 Krishna Sudarshan J
1 Kristin Cowalcijk
1 Lavkesh Lahngir
1 Martin Hilton
1 Mason
1 Nathan
1 Oleh
1 Ramakrishna Chilaka
1 Rizky Mirzaviandy Priambodo
1 RyanStewart
1 Shivaang
1 Soham Bhattacharjee
1 Stu Hood
1 Thomas Tanon
1 Tim-53
1 UBarney
1 Viktor Yershov
1 Vinay Mehta
1 Zhang Xiaofeng
1 aditya singh rathore
1 alexanderbianchi
1 blaginin
1 dario curreri
1 dd-david-levin
1 gabriel
1 nathan
1 niebayes
Thank you also to everyone who contributed in other ways such as filing issues, reviewing PRs, and providing feedback on this release.