()
| 1175 | |
| 1176 | #[tokio::test] |
| 1177 | async fn test_dictionary_union_hydration() { |
| 1178 | let struct_fields = vec![Field::new_list( |
| 1179 | "dict_list", |
| 1180 | Field::new_dictionary("item", DataType::UInt16, DataType::Utf8, true), |
| 1181 | true, |
| 1182 | )]; |
| 1183 | |
| 1184 | let union_fields = [ |
| 1185 | ( |
| 1186 | 0, |
| 1187 | Arc::new(Field::new_list( |
| 1188 | "dict_list", |
| 1189 | Field::new_dictionary("item", DataType::UInt16, DataType::Utf8, true), |
| 1190 | true, |
| 1191 | )), |
| 1192 | ), |
| 1193 | ( |
| 1194 | 1, |
| 1195 | Arc::new(Field::new_struct("struct", struct_fields.clone(), true)), |
| 1196 | ), |
| 1197 | (2, Arc::new(Field::new("string", DataType::Utf8, true))), |
| 1198 | ] |
| 1199 | .into_iter() |
| 1200 | .collect::<UnionFields>(); |
| 1201 | |
| 1202 | let struct_fields = vec![Field::new_list( |
| 1203 | "dict_list", |
| 1204 | Field::new_dictionary("item", DataType::UInt16, DataType::Utf8, true), |
| 1205 | true, |
| 1206 | )]; |
| 1207 | |
| 1208 | let mut builder = builder::ListBuilder::new(StringDictionaryBuilder::<UInt16Type>::new()); |
| 1209 | |
| 1210 | builder.append_value(vec![Some("a"), None, Some("b")]); |
| 1211 | |
| 1212 | let arr1 = builder.finish(); |
| 1213 | |
| 1214 | let type_id_buffer = [0].into_iter().collect::<ScalarBuffer<i8>>(); |
| 1215 | let arr1 = UnionArray::try_new( |
| 1216 | union_fields.clone(), |
| 1217 | type_id_buffer, |
| 1218 | None, |
| 1219 | vec![ |
| 1220 | Arc::new(arr1) as Arc<dyn Array>, |
| 1221 | new_null_array(union_fields.iter().nth(1).unwrap().1.data_type(), 1), |
| 1222 | new_null_array(union_fields.iter().nth(2).unwrap().1.data_type(), 1), |
| 1223 | ], |
| 1224 | ) |
| 1225 | .unwrap(); |
| 1226 | |
| 1227 | builder.append_value(vec![Some("c"), None, Some("d")]); |
| 1228 | |
| 1229 | let arr2 = Arc::new(builder.finish()); |
| 1230 | let arr2 = StructArray::new(struct_fields.clone().into(), vec![arr2], None); |
| 1231 | |
| 1232 | let type_id_buffer = [1].into_iter().collect::<ScalarBuffer<i8>>(); |
| 1233 | let arr2 = UnionArray::try_new( |
| 1234 | union_fields.clone(), |
nothing calls this directly
no test coverage detected