Skip to content

Commit da536d7

Browse files
committed
fix: update schema handling for fixed size lists in Parquet serialization
1 parent 2a9a4bb commit da536d7

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

datafusion/core/src/dataframe/parquet.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ use super::{
2828
use datafusion_common::config::TableParquetOptions;
2929
use datafusion_expr::dml::InsertOp;
3030

31+
use crate::error::Result;
32+
use arrow::datatypes::{DataType, Field, Schema};
3133
impl DataFrame {
3234
/// Execute the `DataFrame` and write the results to Parquet file(s).
3335
///
@@ -76,25 +78,24 @@ impl DataFrame {
7678

7779
// Ensure that the schema is preserved during serialization
7880
let schema = self.plan.schema();
79-
let fields: Vec<Field> = schema
81+
let fields: Vec<Arc<Field>> = schema
8082
.fields()
8183
.iter()
8284
.map(|field| {
8385
if let DataType::FixedSizeList(_, size) = field.data_type() {
84-
Field::new(
86+
Arc::new(Field::new(
8587
field.name(),
8688
DataType::FixedSizeList(
87-
Box::new(Field::new("item", DataType::Float32, true)),
89+
Arc::new(Field::new("item", DataType::Float32, true)),
8890
*size,
8991
),
9092
field.is_nullable(),
91-
)
93+
))
9294
} else {
9395
field.clone()
9496
}
9597
})
9698
.collect();
97-
let schema = Arc::new(Schema::new(fields));
9899

99100
let plan = LogicalPlanBuilder::copy_to(
100101
self.plan,

0 commit comments

Comments
 (0)