@@ -77,7 +77,7 @@ fn apply_expressions(
7777
7878** Node whose only expressions are in ` output_ordering() ` (e.g. a synthetic test node with no owned expression fields):**
7979
80- ```` rust,ignore
80+ ``` rust,ignore
8181fn apply_expressions(
8282 &self,
8383 f: &mut dyn FnMut(&dyn PhysicalExpr) -> Result<TreeNodeRecursion>,
@@ -90,6 +90,7 @@ fn apply_expressions(
9090 }
9191 Ok(tnr)
9292}
93+ ```
9394
9495### ` ExecutionPlan::partition_statistics ` now returns ` Arc<Statistics> `
9596
@@ -101,7 +102,7 @@ fn apply_expressions(
101102fn partition_statistics(&self, partition: Option<usize>) -> Result<Statistics> {
102103 Ok(Statistics::new_unknown(&self.schema()))
103104}
104- ````
105+ ```
105106
106107** After:**
107108
@@ -122,3 +123,36 @@ stats.column_statistics[0].min_value = ...;
122123let mut stats = Arc::unwrap_or_clone(plan.partition_statistics(None)?);
123124stats.column_statistics[0].min_value = ...;
124125```
126+
127+ ### Avro API and timestamp decoding changes
128+
129+ DataFusion has switched to use ` arrow-avro ` (see [ #17861 ] ) when reading Avro
130+ files which results in a few changes:
131+
132+ - ` DataFusionError::AvroError ` has been removed.
133+ - ` From<apache_avro::Error> for DataFusionError ` has been removed.
134+ - Avro crate re-export changed:
135+ - Before: ` datafusion::apache_avro `
136+ - After: ` datafusion::arrow_avro `
137+ - ** Avro timestamp logical type interpretation changed.** Notable effects:
138+ - Avro ` timestamp-* ` logical types are read as UTC timezone-aware Arrow
139+ timestamps (` Timestamp(..., Some("+00:00")) ` )
140+ - Avro ` local-timestamp-* ` logical types remain timezone-naive
141+ (` Timestamp(..., None) ` )
142+
143+ ** Who is affected:**
144+
145+ - Users matching on ` DataFusionError::AvroError `
146+ - Users importing ` datafusion::apache_avro `
147+ - Users relying on previous Avro timestamp logical type behavior
148+
149+ ** Migration guide:**
150+
151+ - Replace ` datafusion::apache_avro ` imports with ` datafusion::arrow_avro ` .
152+ - Update error handling code that matches on ` DataFusionError::AvroError ` to use
153+ the current error surface.
154+ - Validate timestamp handling where timezone semantics matter:
155+ ` timestamp-* ` is UTC timezone-aware, while ` local-timestamp-* ` is
156+ timezone-naive.
157+
158+ [ #17861 ] : https://github.com/apache/datafusion/pull/17861
0 commit comments