2121
2222## DataFusion 53.0.0
2323
24- ** Note:** DataFusion ` 53.0.0 ` has not been released yet. The information provided
25- * in this section pertains to features and changes that have already been merged
26- * to the main branch and are awaiting release in this version. See [ #19692 ] for
27- \* more details.
28-
29- [ #19692 ] : https://github.com/apache/datafusion/issues/19692
30-
3124### Upgrade arrow/parquet to 58.0.0 and object_store to 0.13.0
3225
3326DataFusion 53.0.0 uses ` arrow ` and ` parquet ` 58.0.0, and ` object_store ` 0.13.0.
@@ -39,6 +32,39 @@ See the [Arrow 58.0.0 release notes] and the [object_store 0.13.0 upgrade guide]
3932[ arrow 58.0.0 release notes ] : https://github.com/apache/arrow-rs/releases/tag/58.0.0
4033[ object_store 0.13.0 upgrade guide ] : https://github.com/apache/arrow-rs-object-store/blob/v0.13.0/CHANGELOG.md
4134
35+ ### ` ExecutionPlan::statistics ` removed
36+
37+ The deprecated ` ExecutionPlan::statistics() ` method has been removed. If you
38+ implement custom ` ExecutionPlan ` s, remove that method from your impl and
39+ implement ` partition_statistics() ` instead.
40+
41+ ** Before:**
42+
43+ ``` rust,ignore
44+ impl ExecutionPlan for MyExec {
45+ // ...
46+
47+ fn statistics(&self) -> Result<Statistics> {
48+ Ok(Statistics::new_unknown(&self.schema()))
49+ }
50+ }
51+ ```
52+
53+ ** After:**
54+
55+ ``` rust,ignore
56+ impl ExecutionPlan for MyExec {
57+ // ...
58+
59+ fn partition_statistics(&self, _partition: Option<usize>) -> Result<Statistics> {
60+ Ok(Statistics::new_unknown(&self.schema()))
61+ }
62+ }
63+ ```
64+
65+ If you do not have partition-specific statistics, return the same value for
66+ ` None ` and for any partition index.
67+
4268### ` ExecutionPlan::properties ` now returns ` &Arc<PlanProperties> `
4369
4470Now ` ExecutionPlan::properties() ` returns ` &Arc<PlanProperties> ` instead of a
@@ -125,6 +151,16 @@ let sub_plan = self.query_to_plan(subquery, planner_context)?;
125151planner_context.pop_outer_query_schema();
126152```
127153
154+ ### ` HashJoinExec::try_new ` adds ` null_aware `
155+
156+ ` HashJoinExec::try_new ` now takes an extra ` null_aware: bool ` argument. This
157+ flag is used for null-aware anti joins, such as plans generated for ` NOT IN `
158+ subqueries.
159+
160+ Most callers should pass ` false ` . Pass ` true ` only for null-aware
161+ ` JoinType::LeftAnti ` joins. DataFusion validates that null-aware joins are
162+ single-column ` LeftAnti ` joins.
163+
128164### ` FileSinkConfig ` adds ` file_output_mode `
129165
130166` FileSinkConfig ` now includes a ` file_output_mode: FileOutputMode ` field to control
0 commit comments