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

Function test_cast_list_view_struct

datafusion/common/src/nested_struct.rs:1264–1308  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

1262
1263 #[test]
1264 fn test_cast_list_view_struct() {
1265 // Build a ListView<Struct{a: Int32}> and cast to
1266 // ListView<Struct{a: Int64, b: Utf8}>.
1267 let struct_arr = StructArray::from(vec![(
1268 arc_field("a", DataType::Int32),
1269 Arc::new(Int32Array::from(vec![1, 2, 3])) as ArrayRef,
1270 )]);
1271
1272 let source_field =
1273 arc_field("item", struct_type(vec![field("a", DataType::Int32)]));
1274 let target_field = arc_field(
1275 "item",
1276 struct_type(vec![
1277 field("a", DataType::Int64),
1278 field("b", DataType::Utf8),
1279 ]),
1280 );
1281
1282 // Two list-view entries: [0..2] and [2..3]
1283 let list_view = ListViewArray::new(
1284 source_field,
1285 ScalarBuffer::from(vec![0i32, 2]),
1286 ScalarBuffer::from(vec![2i32, 1]),
1287 Arc::new(struct_arr),
1288 None,
1289 );
1290 let source_col: ArrayRef = Arc::new(list_view);
1291
1292 let target_type = DataType::ListView(target_field);
1293
1294 let result =
1295 cast_column(&source_col, &target_type, &DEFAULT_CAST_OPTIONS).unwrap();
1296 let result_lv = result.as_any().downcast_ref::<ListViewArray>().unwrap();
1297 assert_eq!(result_lv.len(), 2);
1298
1299 let struct_values = result_lv
1300 .values()
1301 .as_any()
1302 .downcast_ref::<StructArray>()
1303 .unwrap();
1304 let a_col = get_column_as!(&struct_values, "a", Int64Array);
1305 assert_eq!(a_col.values(), &[1, 2, 3]);
1306 let b_col = get_column_as!(&struct_values, "b", StringArray);
1307 assert!(b_col.iter().all(|v| v.is_none()));
1308 }
1309
1310 #[test]
1311 fn test_requires_nested_struct_cast() {

Callers

nothing calls this directly

Calls 6

arc_fieldFunction · 0.85
struct_typeFunction · 0.85
newFunction · 0.85
cast_columnFunction · 0.85
as_anyMethod · 0.45
valuesMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…