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

Function test_dictionary_map_hydration

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

Source from the content-addressed store, hash-verified

1449
1450 #[tokio::test]
1451 async fn test_dictionary_map_hydration() {
1452 let mut builder = MapBuilder::new(
1453 None,
1454 StringDictionaryBuilder::<UInt16Type>::new(),
1455 StringDictionaryBuilder::<UInt16Type>::new(),
1456 );
1457
1458 // {"k1":"a","k2":null,"k3":"b"}
1459 builder.keys().append_value("k1");
1460 builder.values().append_value("a");
1461 builder.keys().append_value("k2");
1462 builder.values().append_null();
1463 builder.keys().append_value("k3");
1464 builder.values().append_value("b");
1465 builder.append(true).unwrap();
1466
1467 let arr1 = builder.finish();
1468
1469 // {"k1":"c","k2":null,"k3":"d"}
1470 builder.keys().append_value("k1");
1471 builder.values().append_value("c");
1472 builder.keys().append_value("k2");
1473 builder.values().append_null();
1474 builder.keys().append_value("k3");
1475 builder.values().append_value("d");
1476 builder.append(true).unwrap();
1477
1478 let arr2 = builder.finish();
1479
1480 let schema = Arc::new(Schema::new(vec![Field::new_map(
1481 "dict_map",
1482 "entries",
1483 Field::new_dictionary("keys", DataType::UInt16, DataType::Utf8, false),
1484 Field::new_dictionary("values", DataType::UInt16, DataType::Utf8, true),
1485 false,
1486 false,
1487 )]));
1488
1489 let batch1 = RecordBatch::try_new(schema.clone(), vec![Arc::new(arr1)]).unwrap();
1490 let batch2 = RecordBatch::try_new(schema.clone(), vec![Arc::new(arr2)]).unwrap();
1491
1492 let stream = futures::stream::iter(vec![Ok(batch1), Ok(batch2)]);
1493
1494 let encoder = FlightDataEncoderBuilder::default().build(stream);
1495
1496 let mut decoder = FlightDataDecoder::new(encoder);
1497 let expected_schema = Schema::new(vec![Field::new_map(
1498 "dict_map",
1499 "entries",
1500 Field::new("keys", DataType::Utf8, false),
1501 Field::new("values", DataType::Utf8, true),
1502 false,
1503 false,
1504 )]);
1505
1506 let expected_schema = Arc::new(expected_schema);
1507
1508 // Builder without dictionary fields

Callers

nothing calls this directly

Calls 13

try_newFunction · 0.85
defaultFunction · 0.85
append_valueMethod · 0.45
keysMethod · 0.45
valuesMethod · 0.45
append_nullMethod · 0.45
appendMethod · 0.45
finishMethod · 0.45
cloneMethod · 0.45
buildMethod · 0.45
into_iterMethod · 0.45
nextMethod · 0.45

Tested by

no test coverage detected