MCPcopy Create free account
hub / github.com/ciphermodelabs/ciphercore / extract_columns

Function extract_columns

ciphercore-base/src/evaluators/join.rs:74–117  ·  view source on GitHub ↗
(
    set: &TypedValue,
    headers_types: &HeadersTypes,
    has_column_masks: bool,
)

Source from the content-addressed store, hash-verified

72}
73
74fn extract_columns(
75 set: &TypedValue,
76 headers_types: &HeadersTypes,
77 has_column_masks: bool,
78) -> Result<ColumnsMap> {
79 let mut header_index_map = HashMap::new();
80 let mut columns_data = vec![];
81 let mut columns_masks = vec![];
82 let mut elements_per_row = vec![];
83 let mut null_column = vec![];
84 let set_columns = set.value.to_vector()?;
85 let mut ind = 0;
86 for (i, (header, sub_t)) in headers_types.iter().enumerate() {
87 if header == NULL_HEADER {
88 null_column = set_columns[i].to_flattened_array_u8((**sub_t).clone())?;
89 continue;
90 }
91 let column_type = ColumnType::new((**sub_t).clone(), has_column_masks, header)?;
92 if has_column_masks {
93 let column_mask_data = set_columns[i].to_vector()?;
94 let mask = column_mask_data[0].clone();
95 let data = column_mask_data[1].clone();
96 let column_mask = mask.to_flattened_array_u8(column_type.get_mask_type()?)?;
97 let column_data = data.to_flattened_array_u128(column_type.get_data_type())?;
98 columns_masks.push(column_mask);
99 columns_data.push(column_data);
100 } else {
101 let column_data =
102 set_columns[i].to_flattened_array_u128(column_type.get_data_type())?;
103 columns_data.push(column_data);
104 }
105 elements_per_row.push(column_type.get_row_size_in_elements());
106 header_index_map.insert((*header).clone(), ind);
107 ind += 1;
108 }
109
110 Ok(ColumnsMap {
111 header_index_map,
112 null_column,
113 columns_masks,
114 columns_data,
115 elements_per_row,
116 })
117}
118
119impl ColumnsMap {
120 fn init_result_columns(join_input: &JoinInput) -> Result<Self> {

Callers 1

evaluate_joinFunction · 0.85

Calls 9

to_flattened_array_u8Method · 0.80
cloneMethod · 0.80
get_mask_typeMethod · 0.80
get_data_typeMethod · 0.80
to_vectorMethod · 0.45
pushMethod · 0.45
insertMethod · 0.45

Tested by

no test coverage detected