()
| 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 |
nothing calls this directly
no test coverage detected