dev/changelog/55.0.0.md
This release consists of 877 commits from 175 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:
Any to QueryPlanner trait #22241 (milenkovicm)Partitioning::Range enum variant #22207 (gene-bordegaray)EXPLAIN (...) option list #21768 (adriangb)enabled flag #22632 (kszucs)placement for FFI_ScalarUDF #22608 (Amogh-2404)opt_filter in GroupsAccumulator::merge_batch #22816 (haohuaijin)collect_stat and target_partitions on ListingOptions #22969 (gabotechs)approx_distinct (-200 LoC) #22921 (2010YOUY01)datafusion-physical-expr-adapter #23125 (AdamGS)create_writer free function (Closes #23080 — partial) #23129 (Dodothereal)ListingOptions::output_partitioning and FileScanConfig::output_partitioning for pre-defined file partitioning #22657 (gene-bordegaray)DFParser::new and DFParser::new_with_dialect #23101 (mgkz0)EXPLAIN ANALYZE for multiple operators #23140 (2010YOUY01)Distribution::HashPartitioned to Distribution::KeyPartitioned API bridge #23259 (gene-bordegaray)DynamicFilterPhysicalExpr after proto migration #23423 (jayshrivastava)time ± interval returns a wrapped time instead of an interval #23279 (vismaytiwari)PhysicalPlanningContext explicitly through planner traits #23649 (timsaucer)1.88.0 to 1.94.0 #23632 (Jefffrey)GroupsAccumulator::supports_convert_to_state and require convert_to_state #23489 (lyne7-sc)unused_async lint, make some functions sync #23679 (neilconway)ScalarUdfImpl::strictly_order_preserving: Allow expression to report whether they keep the same ordering of the input #23807 (rluvaton)unnest_outer function for arrays. #22100 (athlcode)BoundedWindowAggExec Linear-mode watermark once per stream #24033 (neilconway)ParquetFileReader and CachedParquetFileReader #24036 (alamb)AsyncFuncExec::async_exprs, which only existed for proto serialization #24168 (adriangb)Performance related:
translate to use new bulk-NULL string builders #22171 (neilconway)overlay with new string builder #22182 (neilconway)array_replace for scalar needle #22387 (lyne7-sc)split_part using bulk-NULL string builders #22283 (neilconway)Projection nodes in EliminateOuterJoin #22534 (neilconway)ScalarValue::cast_to #22576 (alamb)date_part isodow by using DayOfWeekMonday1 #23491 (theirix)round expression #23471 (andygrove)string_trim #23541 (andygrove)date_trunc #23542 (andygrove)trunc for scalar precision case (10x faster) #23593 (andygrove)upper (6% faster) #23588 (andygrove)pad #23586 (theirix)replace (2x faster) #23589 (andygrove)regexp_match for literal pattern usage (20% faster) #23547 (andygrove)get_field #23537 (andygrove)regexp_instr (40% faster) #23540 (andygrove)bit_length, octet_length, and ascii #23743 (lyne7-sc)find_in_set (up to 24x faster) #23460 (andygrove)array_empty udf #23923 (rluvaton)array_agg() performance improvements #23716 (fred1268)percentile_cont, median #23954 (neilconway)BoundedWindowAggExec #23984 (neilconway)character_length, initcap, and reverse #23930 (lyne7-sc)btrim, ltrim, and rtrim #24100 (lyne7-sc)ParquetMetaData clone) when the file has no page index #24150 (alamb)regexp_count #24153 (neilconway)Implemented enhancements:
slice function on OOB ranges #22404 (comphead)VALUES for nullability #22089 (neilconway)monthname function to datafusion-spark #21639 (JeelRajodiya)Decimal values #22500 (neilconway)concat_ws with array support #20928 (davidlghellin)input_file_name UDF for file-backed scans #22978 (AdamGS)approx_distinct #23190 (mkleen)FusedStreams #23283 (rluvaton)--list, optional DATA_DIR #23354 (Omega359)ansi for elt #23928 (comphead)sum from column statistics when available #23863 (AdamGS)Fixed bugs:
Operator::returns_null_on_null() should include string concat (||) #22458 (neilconway)IS TRUE correctly in EliminateOuterJoin #22444 (neilconway)atan2 with integer args #22516 (neilconway)power(decimal, float) to Float64, fix bugs #22482 (neilconway)FilterExec output #22718 (neilconway)power(decimal, int) code path #22651 (neilconway)assert_*_or_internal_err helpers #18910 (rluvaton)nanvl #22575 (neilconway)date_bin negative subsecond and overflow cases #22610 (kumarUjjawal)HashJoinExec::swap_inputs #23078 (haohuaijin)HashJoinExec and NestedLoopJoinExec #23082 (haohuaijin)array_compact handle edge case with NULLs #23192 (comphead)ArrayMap probe keys on 32-bit targets #22911 (neilconway)[] to FixedSizeList(0, _) #23381 (Jefffrey)buffer_len RecordBatches are cached in spawn_buffered #23560 (ariel-miculas)avg(decimal) #22714 (AdamGS)sum(sum(x))) during logical planning #23813 (adriangb)FilterNullJoinKeys when its enabled #23848 (AdamGS)input_file_name() pushdown into ParquetSource with filter pushdown enabled #23638 (AdamGS)min() returns wrong value for all-NULL windows #23874 (neilconway)InSubquery expression #23429 (AdamGS)regexp_count, regexp_instr #24239 (neilconway)log and power simplification #24247 (lyne7-sc)Documentation updates:
ExecutionPlan::apply_expressions() (#20337)" #22437 (alamb)array_product UDF #22703 (SubhamSinghal)SELECT reference #22672 (neilconway)file_row_index UDF to query file-level row indexes from Parquet files #22604 (AdamGS)PartialSortExec documentation #23092 (alamb)status:success for pending PR shield #23846 (comphead)UserDefinedLogicalNode comment #23992 (vikrantmehta123)PartialSortExec operator #24048 (alamb)DFParquetMetadata #24037 (alamb)ExecutionPlan API with replace_children #24296 (JSOD11)Other:
build_join in ScalarSubqueryToJoin #22316 (neilconway)partitioned_by_file_group in serialization #22365 (marc-pydantic)reserve() in clippy to prevent panics #22386 (2010YOUY01)union_with_mix_of_presorted_and_explicitly_resorted_inputs_impl cross platform #22478 (nuno-faria)try_to_proto to HashTableLookupExpr #22451 (AnuragRaut08)NegativeExpr to use the try_to_proto / try_from_proto hooks #22483 (kevinhongzl)maintain-one-comment and instead do it manually #22568 (rluvaton)SELECT statement #22486 (2010YOUY01)format_string integer conversion dispatch #22388 (kosiew)BuildReportHandle #22623 (kosiew)AggregateMode::PartialReduce #22800 (2010YOUY01)GroupsHashAggregateStream #22953 (2010YOUY01)null_aware status in the relevant Join node display implementations #22913 (AdamGS)Cargo.lock for depcheck to unblock CI #22933 (AdamGS)snowflake_flatten_validation.sql script #22938 (AdamGS).gitignore for proto-models #22977 (Jefffrey)replace and initcap #22990 (kosiew)try_to_proto / try_from_proto to DynamicFilterPhysicalExpr #22452 (AnuragRaut08)batch_size configuration when setting it #23054 (2010YOUY01)internal_datafusion_err import behind the proto feature #23075 (Phoenix500526)input_file_name() tests to input_file_name.slt #23123 (AdamGS)cargo update -p quinn to resolve security audit issue #23122 (Jefffrey)EmitTo to output #23055 (2010YOUY01)Vec instead of OffsetBuilder #23195 (comphead)EmitTo::First in partial hash aggregate output #23250 (hhhizzz)preserve_order=true #20924 (xanderbailey)make_map_batch array handling #23228 (nathanb9)Partitioning::Range #23239 (gene-bordegaray)EnsureRequirements): remap sort requirement through ProjectionExec on pushdown #23199 (Jeadie)BloomFilterStatistics and RowGroupAccessPlanFilter::prune_by_bloom_filters public #23302 (xudong963)collect_list collect_set for windows execution #23281 (comphead)NOT IN predicates #23378 (alamb)median and avg #23357 (lyne7-sc)concat_elements_dyn from arrow-rs #23211 (pepijnve).gitignore item for datafusion-examples #23409 (2010YOUY01)OffsetBuffer::subtract helper #23424 (rluvaton)install-action instead of cargo install to speed up CI #23477 (2010YOUY01)SortPreservingMergeStream to use generators instead of state machine #23407 (rluvaton)octet_length for ClickBench Q27/Q28 byte-length semantics #23475 (kosiew)recursion_limit when setting it #23592 (2010YOUY01)max_spill_file_size_bytes when setting it #23594 (2010YOUY01)soft_max_rows_per_output_file when setting it #23597 (2010YOUY01)minimum_parallel_output_files when setting it #23596 (2010YOUY01)meta_fetch_concurrency when setting it #23595 (2010YOUY01)install-action to speed up ci #23661 (2010YOUY01)regexp_instr error tests and add slt coverage #23620 (alamb)sql_planner_extended logical_plan_optimize sample size to 5 #23659 (Jefffrey)array_agg() add tests and benchmarks #23740 (fred1268)slt tests for iszero function #23713 (2010YOUY01)SlidingDistinctCountAccumulator::size() to include budget for distinct values #23399 (comphead)md5 function SQL test coverage #23757 (2010YOUY01)isnan function SQL test coverage #23754 (2010YOUY01)digest function SQL test coverage #23756 (2010YOUY01)sha function SQL test coverage #23758 (2010YOUY01)lcm function SQL test coverage #23755 (2010YOUY01)TaskContext::task_id #23837 (pepijnve)array_agg(DISTINCT) on dictionaries and bounded retract_batch memory #23873 (alamb)size accounting for min_max #23899 (comphead)ScalarValue numeric method fixes & refactors (especially decimal) #23631 (Jefffrey)header file #23958 (Jefffrey)VarianceAccumulator, add tests and benchmark #23977 (neilconway)OrderedPartialAggregateStream to generators for readability #23951 (rluvaton)round sqllogictest coverage #23973 (2010YOUY01)gcd sqllogictest coverage #23972 (2010YOUY01)rpad sqllogictest coverage #23968 (2010YOUY01)lpad sqllogictest coverage #23969 (2010YOUY01)MaterializingSortMergeJoinStream into generators and simplify code to be textbook like as possible #23976 (rluvaton)slt test for nullable window retract #24025 (2010YOUY01)find_in_set sqllogictest coverage #23970 (2010YOUY01)OrderedPartialAggregateStream more #24012 (rluvaton)partial and final mode aggregation #24061 (2010YOUY01)MERGE INTO #24174 (alamb)Thank you to everyone who contributed to this release. Here is a breakdown of commits (PRs merged) per contributor.
80 dependabot[bot]
46 Neil Conway
42 Yongting You
41 Adrian Garcia Badaracco
37 Andrew Lamb
27 Burak Şen
24 Phoenix
24 linfeng
22 Andy Grove
19 Kumar Ujjawal
19 Michael Kleen
18 Raz Luvaton
17 Qi Zhu
16 Adam Gutglick
14 Bruce Ritchie
14 Giorgio Maria Federico Birnthaler
13 Jeffrey Vo
12 Geoffrey Claude
12 Oleks V
12 xudong.w
10 Gene Bordegaray
10 Saad Tajwar
10 Subham Singhal
10 Tim Saucer
10 kosiew
9 Nathan
9 theirix
8 Huaijin
6 Daniël Heres
6 Zhen Chen
5 Alessandro Solimando
5 Amogh Ramesh
5 Ariel Miculas-Trif
5 Jayant Shrivastava
5 Liang-Chi Hsieh
5 Lía Adriana
5 Matt Butrovich
5 RIchard Baah
5 kid
4 Brent Gardner
4 Goutam Adwant
4 H
4 Megakaizo
4 Nuno Faria
4 Pepijn Van Eeckhoudt
4 Sean Kenneth Doherty
4 Varun
4 Xuanyi Li
4 chakkk309
4 discord9
3 Alex Metelli
3 ByteBaker
3 Huang Qiwei
3 Justin O'Dwyer
3 Matthew Patton
3 Mithun Chicklore Yogendra
3 Moe
3 Shehab Ali
3 Simon Vandel Sillesen
3 Xin Huang
3 Yin Li
3 crm26
3 gstvg
3 pantShrey
3 pchintar
2 Anurag Tryambak Raut
2 Bert Vermeiren
2 Bhargava Vadlamani
2 David López
2 Diego Perez Giordán
2 Edson Petry
2 EeshanBembi
2 Emily Matheys
2 Filip Petkovski
2 Florian Müller
2 Ford
2 Fred Thomas
2 Gabriel
2 Guocheng(Eric) Song
2 JS
2 Kanishk Sachan
2 Karpagam Balasubramaniam
2 Krishna Sudarshan J
2 Louis Vialar
2 Matthew Kim
2 Nagato Yuzuru
2 Naman Modi
2 Peter L
2 Peter Lee
2 Pierre Lacave
2 Prateek Ganigi
2 Puneet Dixit
2 Tobias Schwarzinger
2 WeblWabl
2 Zac Farrell
2 Zeel Rajodiya
2 dario curreri
2 fys
2 jackylee
2 jj.lee
2 nanookclaw
1 7. Sun
1 Ahmed EL.
1 Asish Kumar
1 Aurélien Pupier
1 Ben Chambers
1 Braedon Wooding
1 Brijesh Thakkar
1 Bruno Volpato
1 Bukhtawar Khan
1 Daipayan Mukherjee
1 DevShiba
1 Dmitrii Blaginin
1 Eduardo Aguilar
1 Egor Markov
1 Emil Ernerfeldt
1 Evgeniy Mineev
1 Filippo
1 Floze
1 Georgi Krastev
1 Gunther Xing
1 Gustavo Schneiter
1 Harrison Crosse
1 Haseeb Nazir
1 Jack Eadie
1 Jason Wong
1 Jordan Epstein
1 Joseph Lenton
1 Kazantsev Maksim
1 Kent Wu
1 Kristin Cowalcijk
1 Krisztián Szűcs
1 Lavkesh Lahngir
1 Lining Pan
1 Ma Zhengxuan
1 Marc Brinkmann
1 Marko Milenković
1 Matt Van Horn
1 Max Burke
1 Minh Vu
1 Nam2ee
1 Namgung Chan
1 Nathan Bezualem
1 Pablo Abad Rubio
1 Pavan51
1 Ratul Dawar
1 Recoordinate
1 Ruchir Tripathi
1 RyanStewart
1 Sai Asish Y
1 Savan Nahar
1 Sergei Grebnov
1 Sergey Zhukov
1 Stu Hood
1 Thomas Santerre
1 Tian Teng
1 Vadim Piven
1 VaibhaveS
1 Victorien
1 Vikrant Mehta
1 Vismay
1 Wenqi Mou
1 Xander
1 Xuanwo
1 Yonatan Striem Amit
1 Zhen-Lun (Kevin) Hong
1 ajegou
1 blinding-pixels
1 eliot1480
1 jeroenflvr
1 kkrainov
1 subotac
1 yoongbok lee
1 zhengpeng
1 zhigang
Thank you also to everyone who contributed in other ways such as filing issues, reviewing PRs, and providing feedback on this release.