()
| 1050 | |
| 1051 | #[tokio::test] |
| 1052 | async fn test_dictionary_struct_hydration() { |
| 1053 | let struct_fields = vec![Field::new_list( |
| 1054 | "dict_list", |
| 1055 | Field::new_dictionary("item", DataType::UInt16, DataType::Utf8, true), |
| 1056 | true, |
| 1057 | )]; |
| 1058 | |
| 1059 | let mut struct_builder = StructBuilder::new( |
| 1060 | struct_fields.clone(), |
| 1061 | vec![Box::new(builder::ListBuilder::new( |
| 1062 | StringDictionaryBuilder::<UInt16Type>::new(), |
| 1063 | ))], |
| 1064 | ); |
| 1065 | |
| 1066 | struct_builder |
| 1067 | .field_builder::<ListBuilder<GenericByteDictionaryBuilder<UInt16Type,GenericStringType<i32>>>>(0) |
| 1068 | .unwrap() |
| 1069 | .append_value(vec![Some("a"), None, Some("b")]); |
| 1070 | |
| 1071 | struct_builder.append(true); |
| 1072 | |
| 1073 | let arr1 = struct_builder.finish(); |
| 1074 | |
| 1075 | struct_builder |
| 1076 | .field_builder::<ListBuilder<GenericByteDictionaryBuilder<UInt16Type,GenericStringType<i32>>>>(0) |
| 1077 | .unwrap() |
| 1078 | .append_value(vec![Some("c"), None, Some("d")]); |
| 1079 | struct_builder.append(true); |
| 1080 | |
| 1081 | let arr2 = struct_builder.finish(); |
| 1082 | |
| 1083 | let schema = Arc::new(Schema::new(vec![Field::new_struct( |
| 1084 | "struct", |
| 1085 | struct_fields, |
| 1086 | true, |
| 1087 | )])); |
| 1088 | |
| 1089 | let batch1 = RecordBatch::try_new(schema.clone(), vec![Arc::new(arr1)]).unwrap(); |
| 1090 | let batch2 = RecordBatch::try_new(schema, vec![Arc::new(arr2)]).unwrap(); |
| 1091 | |
| 1092 | let stream = futures::stream::iter(vec![Ok(batch1), Ok(batch2)]); |
| 1093 | |
| 1094 | let encoder = FlightDataEncoderBuilder::default().build(stream); |
| 1095 | |
| 1096 | let mut decoder = FlightDataDecoder::new(encoder); |
| 1097 | let expected_schema = Schema::new(vec![Field::new_struct( |
| 1098 | "struct", |
| 1099 | vec![Field::new_list( |
| 1100 | "dict_list", |
| 1101 | Field::new_list_field(DataType::Utf8, true), |
| 1102 | true, |
| 1103 | )], |
| 1104 | true, |
| 1105 | )]); |
| 1106 | |
| 1107 | let expected_schema = Arc::new(expected_schema); |
| 1108 | |
| 1109 | let mut expected_arrays = vec![ |
nothing calls this directly
no test coverage detected