File tree Expand file tree Collapse file tree 1 file changed +24
-0
lines changed
Expand file tree Collapse file tree 1 file changed +24
-0
lines changed Original file line number Diff line number Diff line change @@ -2278,6 +2278,30 @@ mod tests {
22782278 let ord_col = :: arrow:: compute:: take ( & col, & indices, None ) . expect ( "takeable" ) ;
22792279 assert_eq ! ( row_col. as_ref( ) , ord_col. as_ref( ) ) ;
22802280
2281+ // Check that our order matches the datum-native order when `preserves_order` is true.
2282+ let ordered_prefix_len = desc
2283+ . iter ( )
2284+ . take_while ( |( _, c) | preserves_order ( & c. scalar_type ) )
2285+ . count ( ) ;
2286+
2287+ let decoder = <RelationDesc as Schema2 < Row > >:: decoder_any ( & desc, ord_col. as_ref ( ) ) . unwrap ( ) ;
2288+ let is_sorted = ( 0 ..ord_col. len ( ) )
2289+ . map ( |i| {
2290+ let mut row = Row :: default ( ) ;
2291+ decoder. decode ( i, & mut row) ;
2292+ row
2293+ } )
2294+ . is_sorted_by ( |a, b| {
2295+ let a_prefix = a. iter ( ) . take ( ordered_prefix_len) ;
2296+ let b_prefix = b. iter ( ) . take ( ordered_prefix_len) ;
2297+ a_prefix. cmp ( b_prefix) . is_le ( )
2298+ } ) ;
2299+ assert ! (
2300+ is_sorted,
2301+ "ordering should be consistent on preserves_order columns: {:#?}" ,
2302+ desc. iter( ) . take( ordered_prefix_len) . collect_vec( )
2303+ ) ;
2304+
22812305 // Check that our size estimates are consistent.
22822306 assert_eq ! (
22832307 ord. goodbytes( ) ,
You can’t perform that action at this time.
0 commit comments