MCPcopy Create free account
hub / github.com/apache/datafusion / extract_list_values

Function extract_list_values

datafusion/functions-nested/src/lambda_utils.rs:104–126  ·  view source on GitHub ↗

Extracts flat list values, handling all fast-path short-circuits. - All-null input → `EarlyReturn(null scalar)` - All sublists empty and non-null → `EarlyReturn(default empty-list scalar)` - Otherwise → `Values(flat_values)`

(
    list_array: &ArrayRef,
    return_type: &DataType,
)

Source from the content-addressed store, hash-verified

102/// - All sublists empty and non-null → `EarlyReturn(default empty-list scalar)`
103/// - Otherwise → `Values(flat_values)`
104pub(crate) fn extract_list_values(
105 list_array: &ArrayRef,
106 return_type: &DataType,
107) -> Result<ListValuesResult> {
108 if list_array.null_count() == list_array.len() {
109 return Ok(ListValuesResult::EarlyReturn(ColumnarValue::Scalar(
110 ScalarValue::try_new_null(return_type)?,
111 )));
112 }
113
114 let values = list_values(list_array)?;
115
116 if values.is_empty()
117 && list_array.null_count() == 0
118 && matches!(return_type, DataType::List(_) | DataType::LargeList(_))
119 {
120 return Ok(ListValuesResult::EarlyReturn(ColumnarValue::Scalar(
121 ScalarValue::new_default(return_type)?,
122 )));
123 }
124
125 Ok(ListValuesResult::Values(values))
126}
127
128#[cfg(test)]
129pub(crate) mod test_utils {

Callers 2

invoke_with_argsMethod · 0.85
invoke_with_argsMethod · 0.85

Calls 5

list_valuesFunction · 0.85
ValuesClass · 0.85
null_countMethod · 0.80
lenMethod · 0.45
is_emptyMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…