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

Function make_map_batch

datafusion/functions-nested/src/map.rs:66–107  ·  view source on GitHub ↗
(args: &[ColumnarValue])

Source from the content-addressed store, hash-verified

64}
65
66fn make_map_batch(args: &[ColumnarValue]) -> Result<ColumnarValue> {
67 let [keys_arg, values_arg] = take_function_args("make_map", args)?;
68
69 let can_evaluate_to_const = can_evaluate_to_const(args);
70
71 let keys = get_first_array_ref(keys_arg)?;
72 let key_array = keys.as_ref();
73
74 match keys_arg {
75 ColumnarValue::Array(_) => match key_array.data_type() {
76 DataType::List(_) => keys
77 .as_list::<i32>()
78 .iter()
79 .flatten()
80 .try_for_each(|row| validate_map_keys(row.as_ref()))?,
81 DataType::LargeList(_) => keys
82 .as_list::<i64>()
83 .iter()
84 .flatten()
85 .try_for_each(|row| validate_map_keys(row.as_ref()))?,
86 DataType::FixedSizeList(_, _) => {
87 keys.as_fixed_size_list()
88 .iter()
89 .flatten()
90 .try_for_each(|row| validate_map_keys(row.as_ref()))?
91 }
92 data_type => {
93 return exec_err!(
94 "Expected list, large_list or fixed_size_list, got {:?}",
95 data_type
96 );
97 }
98 },
99 ColumnarValue::Scalar(_) => {
100 validate_map_keys(key_array)?;
101 }
102 }
103
104 let values = get_first_array_ref(values_arg)?;
105
106 make_map_batch_internal(&keys, &values, can_evaluate_to_const, &keys_arg.data_type())
107}
108
109fn validate_unique_primitive_keys<T: ArrowPrimitiveType>(array: &dyn Array) -> Result<()>
110where

Calls 9

take_function_argsFunction · 0.85
can_evaluate_to_constFunction · 0.85
get_first_array_refFunction · 0.85
validate_map_keysFunction · 0.85
make_map_batch_internalFunction · 0.85
flattenMethod · 0.80
as_refMethod · 0.45
data_typeMethod · 0.45
iterMethod · 0.45

Used in the wild real call sites across dependent graphs

searching dependent graphs…