@@ -566,6 +566,8 @@ pub(crate) struct ArrayLevels {
566566
567567 /// The arrow array
568568 array : ArrayRef ,
569+
570+ def_levels_runs : Option < Vec < ( i16 , usize ) > > ,
569571}
570572
571573impl PartialEq for ArrayLevels {
@@ -595,6 +597,7 @@ impl ArrayLevels {
595597 max_def_level,
596598 max_rep_level,
597599 array,
600+ def_levels_runs : ( max_def_level != 0 ) . then ( Vec :: new) ,
598601 }
599602 }
600603
@@ -668,6 +671,7 @@ mod tests {
668671 max_def_level : 2 ,
669672 max_rep_level : 2 ,
670673 array : Arc :: new ( primitives) ,
674+ def_levels_runs : None ,
671675 } ;
672676 assert_eq ! ( & levels[ 0 ] , & expected) ;
673677 }
@@ -688,6 +692,7 @@ mod tests {
688692 max_def_level : 0 ,
689693 max_rep_level : 0 ,
690694 array,
695+ def_levels_runs : None ,
691696 } ;
692697 assert_eq ! ( & levels[ 0 ] , & expected_levels) ;
693698 }
@@ -714,6 +719,7 @@ mod tests {
714719 max_def_level : 1 ,
715720 max_rep_level : 0 ,
716721 array,
722+ def_levels_runs : None ,
717723 } ;
718724 assert_eq ! ( & levels[ 0 ] , & expected_levels) ;
719725 }
@@ -748,6 +754,7 @@ mod tests {
748754 max_def_level : 1 ,
749755 max_rep_level : 1 ,
750756 array : Arc :: new ( leaf_array) ,
757+ def_levels_runs : None ,
751758 } ;
752759 assert_eq ! ( & levels[ 0 ] , & expected_levels) ;
753760
@@ -781,6 +788,7 @@ mod tests {
781788 max_def_level : 2 ,
782789 max_rep_level : 1 ,
783790 array : Arc :: new ( leaf_array) ,
791+ def_levels_runs : None ,
784792 } ;
785793 assert_eq ! ( & levels[ 0 ] , & expected_levels) ;
786794 }
@@ -830,6 +838,7 @@ mod tests {
830838 max_def_level : 3 ,
831839 max_rep_level : 1 ,
832840 array : Arc :: new ( leaf) ,
841+ def_levels_runs : None ,
833842 } ;
834843
835844 assert_eq ! ( & levels[ 0 ] , & expected_levels) ;
@@ -880,6 +889,7 @@ mod tests {
880889 max_def_level : 5 ,
881890 max_rep_level : 2 ,
882891 array : Arc :: new ( leaf) ,
892+ def_levels_runs : None ,
883893 } ;
884894
885895 assert_eq ! ( & levels[ 0 ] , & expected_levels) ;
@@ -917,6 +927,7 @@ mod tests {
917927 max_def_level : 1 ,
918928 max_rep_level : 1 ,
919929 array : Arc :: new ( leaf) ,
930+ def_levels_runs : None ,
920931 } ;
921932 assert_eq ! ( & levels[ 0 ] , & expected_levels) ;
922933
@@ -949,6 +960,7 @@ mod tests {
949960 max_def_level : 3 ,
950961 max_rep_level : 1 ,
951962 array : Arc :: new ( leaf) ,
963+ def_levels_runs : None ,
952964 } ;
953965 assert_eq ! ( & levels[ 0 ] , & expected_levels) ;
954966
@@ -997,6 +1009,7 @@ mod tests {
9971009 max_def_level : 5 ,
9981010 max_rep_level : 2 ,
9991011 array : Arc :: new ( leaf) ,
1012+ def_levels_runs : None ,
10001013 } ;
10011014 assert_eq ! ( & levels[ 0 ] , & expected_levels) ;
10021015 }
@@ -1036,6 +1049,7 @@ mod tests {
10361049 max_def_level : 3 ,
10371050 max_rep_level : 0 ,
10381051 array : leaf,
1052+ def_levels_runs : None ,
10391053 } ;
10401054 assert_eq ! ( & levels[ 0 ] , & expected_levels) ;
10411055 }
@@ -1075,6 +1089,7 @@ mod tests {
10751089 max_def_level : 3 ,
10761090 max_rep_level : 1 ,
10771091 array : Arc :: new ( a_values) ,
1092+ def_levels_runs : None ,
10781093 } ;
10791094 assert_eq ! ( list_level, & expected_level) ;
10801095 }
@@ -1167,6 +1182,7 @@ mod tests {
11671182 max_def_level : 0 ,
11681183 max_rep_level : 0 ,
11691184 array : Arc :: new ( a) ,
1185+ def_levels_runs : None ,
11701186 } ;
11711187 assert_eq ! ( list_level, & expected_level) ;
11721188
@@ -1180,6 +1196,7 @@ mod tests {
11801196 max_def_level : 1 ,
11811197 max_rep_level : 0 ,
11821198 array : Arc :: new ( b) ,
1199+ def_levels_runs : None ,
11831200 } ;
11841201 assert_eq ! ( list_level, & expected_level) ;
11851202
@@ -1193,6 +1210,7 @@ mod tests {
11931210 max_def_level : 2 ,
11941211 max_rep_level : 0 ,
11951212 array : Arc :: new ( d) ,
1213+ def_levels_runs : None ,
11961214 } ;
11971215 assert_eq ! ( list_level, & expected_level) ;
11981216
@@ -1206,6 +1224,7 @@ mod tests {
12061224 max_def_level : 3 ,
12071225 max_rep_level : 0 ,
12081226 array : Arc :: new ( f) ,
1227+ def_levels_runs : None ,
12091228 } ;
12101229 assert_eq ! ( list_level, & expected_level) ;
12111230 }
@@ -1312,6 +1331,7 @@ mod tests {
13121331 max_def_level : 1 ,
13131332 max_rep_level : 1 ,
13141333 array : map. keys ( ) . clone ( ) ,
1334+ def_levels_runs : None ,
13151335 } ;
13161336 assert_eq ! ( list_level, & expected_level) ;
13171337
@@ -1325,6 +1345,7 @@ mod tests {
13251345 max_def_level : 2 ,
13261346 max_rep_level : 1 ,
13271347 array : map. values ( ) . clone ( ) ,
1348+ def_levels_runs : None ,
13281349 } ;
13291350 assert_eq ! ( list_level, & expected_level) ;
13301351 }
@@ -1410,6 +1431,7 @@ mod tests {
14101431 max_def_level : 4 ,
14111432 max_rep_level : 1 ,
14121433 array : values,
1434+ def_levels_runs : None ,
14131435 } ;
14141436
14151437 assert_eq ! ( list_level, & expected_level) ;
@@ -1450,6 +1472,7 @@ mod tests {
14501472 max_def_level : 4 ,
14511473 max_rep_level : 1 ,
14521474 array : values,
1475+ def_levels_runs : None ,
14531476 } ;
14541477
14551478 assert_eq ! ( & levels[ 0 ] , & expected_level) ;
@@ -1535,6 +1558,7 @@ mod tests {
15351558 max_def_level : 6 ,
15361559 max_rep_level : 2 ,
15371560 array : a1_values,
1561+ def_levels_runs : None ,
15381562 } ;
15391563
15401564 assert_eq ! ( & levels[ 0 ] , & expected_level) ;
@@ -1546,6 +1570,7 @@ mod tests {
15461570 max_def_level : 4 ,
15471571 max_rep_level : 1 ,
15481572 array : a2_values,
1573+ def_levels_runs : None ,
15491574 } ;
15501575
15511576 assert_eq ! ( & levels[ 1 ] , & expected_level) ;
@@ -1584,6 +1609,7 @@ mod tests {
15841609 max_def_level : 3 ,
15851610 max_rep_level : 1 ,
15861611 array : values,
1612+ def_levels_runs : None ,
15871613 } ;
15881614 assert_eq ! ( list_level, & expected_level) ;
15891615 }
@@ -1734,6 +1760,7 @@ mod tests {
17341760 max_def_level : 4 ,
17351761 max_rep_level : 1 ,
17361762 array : values_a,
1763+ def_levels_runs : None ,
17371764 } ;
17381765 // [[{b: 2}, null], null, [null, null], [{b: 3}, {b: 4}]]
17391766 let expected_b = ArrayLevels {
@@ -1743,6 +1770,7 @@ mod tests {
17431770 max_def_level : 3 ,
17441771 max_rep_level : 1 ,
17451772 array : values_b,
1773+ def_levels_runs : None ,
17461774 } ;
17471775
17481776 assert_eq ! ( a_levels, & expected_a) ;
@@ -1774,6 +1802,7 @@ mod tests {
17741802 max_def_level : 3 ,
17751803 max_rep_level : 1 ,
17761804 array : values,
1805+ def_levels_runs : None ,
17771806 } ;
17781807 assert_eq ! ( list_level, & expected_level) ;
17791808 }
@@ -1809,6 +1838,7 @@ mod tests {
18091838 max_def_level : 5 ,
18101839 max_rep_level : 2 ,
18111840 array : values,
1841+ def_levels_runs : None ,
18121842 } ;
18131843
18141844 assert_eq ! ( levels[ 0 ] , expected_level) ;
@@ -1839,6 +1869,7 @@ mod tests {
18391869 max_def_level : 1 ,
18401870 max_rep_level : 0 ,
18411871 array : Arc :: new ( dict) ,
1872+ def_levels_runs : None ,
18421873 } ;
18431874 assert_eq ! ( levels[ 0 ] , expected_level) ;
18441875 }
0 commit comments