@@ -330,9 +330,8 @@ mod tests {
330
330
assert_eq ! ( ret, expected_ret, "Negative i64 entry should be ignored!" ) ;
331
331
}
332
332
333
- #[ tokio:: test]
334
- async fn test_data_file_serialize_deserialize ( ) {
335
- let schema = Arc :: new (
333
+ fn schema ( ) -> Arc < Schema > {
334
+ Arc :: new (
336
335
Schema :: builder ( )
337
336
. with_fields ( vec ! [
338
337
Arc :: new( NestedField :: optional(
@@ -353,8 +352,11 @@ mod tests {
353
352
] )
354
353
. build ( )
355
354
. unwrap ( ) ,
356
- ) ;
357
- let data_files = vec ! [ DataFile {
355
+ )
356
+ }
357
+
358
+ fn data_files ( ) -> Vec < DataFile > {
359
+ vec ! [ DataFile {
358
360
content: DataContentType :: Data ,
359
361
file_path: "s3://testbucket/iceberg_data/iceberg_ctl/iceberg_db/iceberg_tbl/data/00000-7-45268d71-54eb-476c-b42c-942d880c04a1-00001.parquet" . to_string( ) ,
360
362
file_format: DataFileFormat :: Parquet ,
@@ -376,7 +378,13 @@ mod tests {
376
378
referenced_data_file: None ,
377
379
content_offset: None ,
378
380
content_size_in_bytes: None ,
379
- } ] ;
381
+ } ]
382
+ }
383
+
384
+ #[ tokio:: test]
385
+ async fn test_data_file_serialize_deserialize ( ) {
386
+ let schema = schema ( ) ;
387
+ let data_files = data_files ( ) ;
380
388
381
389
let mut buffer = Vec :: new ( ) ;
382
390
let _ = write_data_files_to_avro (
@@ -398,4 +406,30 @@ mod tests {
398
406
399
407
assert_eq ! ( data_files, actual_data_file) ;
400
408
}
409
+
410
+ #[ tokio:: test]
411
+ async fn test_data_file_serialize_deserialize_v1_data_on_v2_reader ( ) {
412
+ let schema = schema ( ) ;
413
+ let data_files = data_files ( ) ;
414
+
415
+ let mut buffer = Vec :: new ( ) ;
416
+ let _ = write_data_files_to_avro (
417
+ & mut buffer,
418
+ data_files. clone ( ) . into_iter ( ) ,
419
+ & StructType :: new ( vec ! [ ] ) ,
420
+ FormatVersion :: V1 ,
421
+ )
422
+ . unwrap ( ) ;
423
+
424
+ let actual_data_file = read_data_files_from_avro (
425
+ & mut Cursor :: new ( buffer) ,
426
+ & schema,
427
+ 0 ,
428
+ & StructType :: new ( vec ! [ ] ) ,
429
+ FormatVersion :: V2 ,
430
+ )
431
+ . unwrap ( ) ;
432
+
433
+ assert_eq ! ( actual_data_file[ 0 ] . content, DataContentType :: Data )
434
+ }
401
435
}
0 commit comments