@@ -512,6 +512,7 @@ where
512512 /// Args:
513513 /// * `max_query_len`: prefix length
514514 fn set_suffix_array_mem ( & mut self , max_query_len : Option < usize > ) -> Result < ( ) > {
515+
515516 let mut max_query_len = max_query_len. unwrap_or ( 0 ) ;
516517
517518 // If ".sufr" file was built with a nonzero max_query_len or seed mask
@@ -535,8 +536,14 @@ where
535536 }
536537 }
537538
538- // The requested MQL matches how the SA was built
539- if max_query_len == built_max_query_len {
539+ // Do nothing if we've already loaded the correct SA/MQL
540+ if !self . suffix_array_mem . is_empty ( )
541+ && self . suffix_array_mem_mql == Some ( max_query_len)
542+ {
543+ info ! ( "Using existing suffix_array_mem" ) ;
544+ return Ok ( ( ) ) ;
545+ } else if max_query_len == built_max_query_len {
546+ // The requested MQL matches how the SA was built
540547 // Stuff entire SA into memory
541548 let now = Instant :: now ( ) ;
542549 self . suffix_array_file . reset ( ) ;
@@ -546,13 +553,6 @@ where
546553 // There will be no ranks
547554 self . suffix_array_rank_mem = vec ! [ ] ;
548555 } else {
549- // Do nothing if we've already loaded the correct SA/MQL
550- if !self . suffix_array_mem . is_empty ( )
551- && self . suffix_array_mem_mql == Some ( max_query_len)
552- {
553- info ! ( "Using existing suffix_array_mem" ) ;
554- return Ok ( ( ) ) ;
555- }
556556
557557 info ! ( "Loading suffix_array_mem using max_query_len {max_query_len}" ) ;
558558
@@ -619,7 +619,6 @@ where
619619 } else {
620620 let now = Instant :: now ( ) ;
621621 let ( sub_sa, sub_rank) = & self . subsample_suffix_array ( max_query_len) ;
622- self . suffix_array_mem_mql = Some ( max_query_len) ;
623622 self . suffix_array_mem = sub_sa. to_vec ( ) ;
624623 self . suffix_array_rank_mem = sub_rank. to_vec ( ) ;
625624
@@ -663,6 +662,7 @@ where
663662 }
664663 }
665664 }
665+ self . suffix_array_mem_mql = Some ( max_query_len) ;
666666
667667 Ok ( ( ) )
668668 }
0 commit comments