Skip to content

Commit 5db5fbc

Browse files
authored
optimize ScalarValue::to_array_of_size for structural types (#16706)
1 parent 9e144b2 commit 5db5fbc

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
@@ -2503,18 +2503,33 @@ impl ScalarValue {
25032503
}
25042504
},
25052505
ScalarValue::List(arr) => {
2506+
if size == 1 {
2507+
return Ok(Arc::clone(arr) as Arc<dyn Array>);
2508+
}
25062509
Self::list_to_array_of_size(arr.as_ref() as &dyn Array, size)?
25072510
}
25082511
ScalarValue::LargeList(arr) => {
2512+
if size == 1 {
2513+
return Ok(Arc::clone(arr) as Arc<dyn Array>);
2514+
}
25092515
Self::list_to_array_of_size(arr.as_ref() as &dyn Array, size)?
25102516
}
25112517
ScalarValue::FixedSizeList(arr) => {
2518+
if size == 1 {
2519+
return Ok(Arc::clone(arr) as Arc<dyn Array>);
2520+
}
25122521
Self::list_to_array_of_size(arr.as_ref() as &dyn Array, size)?
25132522
}
25142523
ScalarValue::Struct(arr) => {
2524+
if size == 1 {
2525+
return Ok(Arc::clone(arr) as Arc<dyn Array>);
2526+
}
25152527
Self::list_to_array_of_size(arr.as_ref() as &dyn Array, size)?
25162528
}
25172529
ScalarValue::Map(arr) => {
2530+
if size == 1 {
2531+
return Ok(Arc::clone(arr) as Arc<dyn Array>);
2532+
}
25182533
Self::list_to_array_of_size(arr.as_ref() as &dyn Array, size)?
25192534
}
25202535
ScalarValue::Date32(e) => {

0 commit comments

Comments
 (0)