MCPcopy Create free account
hub / github.com/apache/arrow-rs / test_dictionary_struct_hydration

Function test_dictionary_struct_hydration

arrow-flight/src/encode.rs:1052–1133  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

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![

Callers

nothing calls this directly

Calls 13

try_newFunction · 0.85
defaultFunction · 0.85
cloneMethod · 0.45
append_valueMethod · 0.45
appendMethod · 0.45
finishMethod · 0.45
buildMethod · 0.45
into_iterMethod · 0.45
nextMethod · 0.45
column_by_nameMethod · 0.45
columnMethod · 0.45
as_refMethod · 0.45

Tested by

no test coverage detected