Skip to content

Commit 271de91

Browse files
ding-youngxudong963
authored andcommitted
optimize ScalarValue::to_array_of_size for structural types (apache#16706)
1 parent c7628fb commit 271de91

File tree

1 file changed

+15
-0
lines changed
  • datafusion/common/src/scalar

1 file changed

+15
-0
lines changed

datafusion/common/src/scalar/mod.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2472,18 +2472,33 @@ impl ScalarValue {
24722472
}
24732473
},
24742474
ScalarValue::List(arr) => {
2475+
if size == 1 {
2476+
return Ok(Arc::clone(arr) as Arc<dyn Array>);
2477+
}
24752478
Self::list_to_array_of_size(arr.as_ref() as &dyn Array, size)?
24762479
}
24772480
ScalarValue::LargeList(arr) => {
2481+
if size == 1 {
2482+
return Ok(Arc::clone(arr) as Arc<dyn Array>);
2483+
}
24782484
Self::list_to_array_of_size(arr.as_ref() as &dyn Array, size)?
24792485
}
24802486
ScalarValue::FixedSizeList(arr) => {
2487+
if size == 1 {
2488+
return Ok(Arc::clone(arr) as Arc<dyn Array>);
2489+
}
24812490
Self::list_to_array_of_size(arr.as_ref() as &dyn Array, size)?
24822491
}
24832492
ScalarValue::Struct(arr) => {
2493+
if size == 1 {
2494+
return Ok(Arc::clone(arr) as Arc<dyn Array>);
2495+
}
24842496
Self::list_to_array_of_size(arr.as_ref() as &dyn Array, size)?
24852497
}
24862498
ScalarValue::Map(arr) => {
2499+
if size == 1 {
2500+
return Ok(Arc::clone(arr) as Arc<dyn Array>);
2501+
}
24872502
Self::list_to_array_of_size(arr.as_ref() as &dyn Array, size)?
24882503
}
24892504
ScalarValue::Date32(e) => {

0 commit comments

Comments
 (0)