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

Function normalize_nested

arrow-array/src/record_batch.rs:1477–1571  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

1475
1476 #[test]
1477 fn normalize_nested() {
1478 // Initialize schema
1479 let a = Arc::new(Field::new("a", DataType::Int64, true));
1480 let b = Arc::new(Field::new("b", DataType::Int64, false));
1481 let c = Arc::new(Field::new("c", DataType::Int64, true));
1482
1483 let one = Arc::new(Field::new(
1484 "1",
1485 DataType::Struct(Fields::from(vec![a.clone(), b.clone(), c.clone()])),
1486 false,
1487 ));
1488 let two = Arc::new(Field::new(
1489 "2",
1490 DataType::Struct(Fields::from(vec![a.clone(), b.clone(), c.clone()])),
1491 true,
1492 ));
1493
1494 let exclamation = Arc::new(Field::new(
1495 "!",
1496 DataType::Struct(Fields::from(vec![one.clone(), two.clone()])),
1497 false,
1498 ));
1499
1500 let schema = Schema::new(vec![exclamation.clone()]);
1501
1502 // Initialize fields
1503 let a_field = Int64Array::from(vec![Some(0), Some(1)]);
1504 let b_field = Int64Array::from(vec![Some(2), Some(3)]);
1505 let c_field = Int64Array::from(vec![None, Some(4)]);
1506
1507 let one_field = StructArray::from(vec![
1508 (a.clone(), Arc::new(a_field.clone()) as ArrayRef),
1509 (b.clone(), Arc::new(b_field.clone()) as ArrayRef),
1510 (c.clone(), Arc::new(c_field.clone()) as ArrayRef),
1511 ]);
1512 let two_field = StructArray::from(vec![
1513 (a.clone(), Arc::new(a_field.clone()) as ArrayRef),
1514 (b.clone(), Arc::new(b_field.clone()) as ArrayRef),
1515 (c.clone(), Arc::new(c_field.clone()) as ArrayRef),
1516 ]);
1517
1518 let exclamation_field = Arc::new(StructArray::from(vec![
1519 (one.clone(), Arc::new(one_field) as ArrayRef),
1520 (two.clone(), Arc::new(two_field) as ArrayRef),
1521 ]));
1522
1523 // Normalize top level
1524 let normalized =
1525 RecordBatch::try_new(Arc::new(schema.clone()), vec![exclamation_field.clone()])
1526 .expect("valid conversion")
1527 .normalize(".", Some(1))
1528 .expect("valid normalization");
1529
1530 let expected = RecordBatch::try_from_iter_with_nullable(vec![
1531 (
1532 "!.1",
1533 Arc::new(StructArray::from(vec![
1534 (a.clone(), Arc::new(a_field.clone()) as ArrayRef),

Callers

nothing calls this directly

Calls 3

try_newFunction · 0.85
normalizeMethod · 0.45
cloneMethod · 0.45

Tested by

no test coverage detected