MCPcopy Create free account
hub / github.com/apache/datafusion / test_lists_in_struct

Function test_lists_in_struct

datafusion/common/src/scalar/mod.rs:8433–8633  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

8431
8432 #[test]
8433 fn test_lists_in_struct() {
8434 let field_a = Arc::new(Field::new("A", DataType::Utf8, false));
8435 let field_primitive_list = Arc::new(Field::new(
8436 "primitive_list",
8437 DataType::List(Arc::new(Field::new_list_field(DataType::Int32, true))),
8438 false,
8439 ));
8440
8441 // Define primitive list scalars
8442 let l0 =
8443 ScalarValue::List(Arc::new(
8444 ListArray::from_iter_primitive::<Int32Type, _, _>(vec![Some(vec![
8445 Some(1),
8446 Some(2),
8447 Some(3),
8448 ])]),
8449 ));
8450 let l1 =
8451 ScalarValue::List(Arc::new(
8452 ListArray::from_iter_primitive::<Int32Type, _, _>(vec![Some(vec![
8453 Some(4),
8454 Some(5),
8455 ])]),
8456 ));
8457 let l2 = ScalarValue::List(Arc::new(ListArray::from_iter_primitive::<
8458 Int32Type,
8459 _,
8460 _,
8461 >(vec![Some(vec![Some(6)])])));
8462
8463 // Define struct scalars
8464 let s0 = ScalarValue::from(vec![
8465 ("A", ScalarValue::from("First")),
8466 ("primitive_list", l0),
8467 ]);
8468
8469 let s1 = ScalarValue::from(vec![
8470 ("A", ScalarValue::from("Second")),
8471 ("primitive_list", l1),
8472 ]);
8473
8474 let s2 = ScalarValue::from(vec![
8475 ("A", ScalarValue::from("Third")),
8476 ("primitive_list", l2),
8477 ]);
8478
8479 // iter_to_array for struct scalars
8480 let array =
8481 ScalarValue::iter_to_array(vec![s0.clone(), s1.clone(), s2.clone()]).unwrap();
8482
8483 let array = as_struct_array(&array).unwrap();
8484 let expected = StructArray::from(vec![
8485 (
8486 Arc::clone(&field_a),
8487 Arc::new(StringArray::from(vec!["First", "Second", "Third"])) as ArrayRef,
8488 ),
8489 (
8490 Arc::clone(&field_primitive_list),

Callers

nothing calls this directly

Calls 8

newFunction · 0.85
as_struct_arrayFunction · 0.85
build_list_scalarMethod · 0.80
ListClass · 0.50
append_valueMethod · 0.45
valuesMethod · 0.45
appendMethod · 0.45
finishMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…