@@ -275,12 +275,12 @@ impl SortingFieldExtractorComponent {
275275 internal_repr : InternalValueRepr < V > ,
276276 order : SortOrder ,
277277 ) -> tantivy:: Result < Option < SortByValue > > {
278- let Some ( ( col_idx, val_as_u64) ) = internal_repr. decode ( order) else {
279- return Ok ( Some ( SortByValue { sort_value : None } ) ) ;
280- } ;
281278 if V :: is_elided ( ) {
282279 return Ok ( None ) ;
283280 }
281+ let Some ( ( col_idx, val_as_u64) ) = internal_repr. decode ( order) else {
282+ return Ok ( Some ( SortByValue { sort_value : None } ) ) ;
283+ } ;
284284 let sort_value = match self {
285285 SortingFieldExtractorComponent :: FastField ( FastFieldExtractor {
286286 sort_columns, ..
@@ -2198,6 +2198,64 @@ mod tests {
21982198 }
21992199 }
22002200
2201+ #[ test]
2202+ fn test_single_split_default_sort ( ) {
2203+ let dataset: Vec < serde_json:: Value > = vec ! [
2204+ serde_json:: json!( { "sort_u64_1" : 15 } ) , // doc 0
2205+ serde_json:: json!( { "sort_u64_1" : 13 } ) , // doc 1
2206+ serde_json:: json!( { "sort_u64_1" : 10 } ) , // doc 2
2207+ serde_json:: json!( { "sort_u64_1" : 12 } ) , // doc 3
2208+ serde_json:: json!( { "sort_u64_1" : 9 } ) , // doc 4
2209+ ] ;
2210+
2211+ let index = make_index ( & dataset) ;
2212+ let reader = index. reader ( ) . unwrap ( ) ;
2213+ let searcher = reader. searcher ( ) ;
2214+
2215+ let request = SearchRequest {
2216+ max_hits : 3 ,
2217+ sort_fields : vec ! [ ] ,
2218+ search_after : None ,
2219+ ..SearchRequest :: default ( )
2220+ } ;
2221+ let collector = super :: make_collector_for_split (
2222+ "fake_split_id" . to_string ( ) ,
2223+ & request,
2224+ Default :: default ( ) ,
2225+ )
2226+ . unwrap ( ) ;
2227+ let res = searcher
2228+ . search ( & tantivy:: query:: AllQuery , & collector)
2229+ . unwrap ( ) ;
2230+ // assert the exact hits where in other tests we mostly focus on the order
2231+ assert_eq ! (
2232+ res. partial_hits,
2233+ vec![
2234+ PartialHit {
2235+ split_id: "fake_split_id" . to_string( ) ,
2236+ segment_ord: 0 ,
2237+ doc_id: 4 ,
2238+ sort_value: None ,
2239+ sort_value2: None ,
2240+ } ,
2241+ PartialHit {
2242+ split_id: "fake_split_id" . to_string( ) ,
2243+ segment_ord: 0 ,
2244+ doc_id: 3 ,
2245+ sort_value: None ,
2246+ sort_value2: None ,
2247+ } ,
2248+ PartialHit {
2249+ split_id: "fake_split_id" . to_string( ) ,
2250+ segment_ord: 0 ,
2251+ doc_id: 2 ,
2252+ sort_value: None ,
2253+ sort_value2: None ,
2254+ } ,
2255+ ]
2256+ ) ;
2257+ }
2258+
22012259 /// Merge intermediate results, asserting that both the regular and
22022260 /// incremental merge produce the same output.
22032261 fn merge_on_both_collectors (
0 commit comments