@@ -682,7 +682,8 @@ impl OnDemandLoader for Store {
682682 indices : & [ usize ] ,
683683 ) -> eyre:: Result < Vec < ( usize , Vec < u16 > , Vec < u16 > ) > > {
684684 // Convert indices to i64 array
685- let ids: Vec < i64 > = indices. iter ( ) . map ( |& idx| idx as i64 ) . collect ( ) ;
685+ // Note that incoming indices are 0-based so we need to convert them to 1-based
686+ let ids: Vec < i64 > = indices. iter ( ) . map ( |& idx| ( idx + 1 ) as i64 ) . collect ( ) ;
686687
687688 let query = match side {
688689 iris_mpc_common:: job:: Eye :: Left => {
@@ -702,7 +703,7 @@ impl OnDemandLoader for Store {
702703 let results: Vec < _ > = results
703704 . into_iter ( )
704705 . map ( |( id, code, mask) | {
705- let id = id as usize ;
706+ let id = id as usize - 1 ; // convert back to 0-based index
706707 let code = cast_u8_to_u16 ( & code) . to_vec ( ) ;
707708 let mask = cast_u8_to_u16 ( & mask) . to_vec ( ) ;
708709 ( id, code, mask)
@@ -1412,28 +1413,29 @@ pub mod tests {
14121413 tx. commit ( ) . await ?;
14131414
14141415 // Load records on demand
1415- let indices = [ 1 , 2 , 3 , 4 , 5 ] ;
1416+ // these indices are 0-based
1417+ let indices = [ 0 , 1 , 2 , 3 , 4 ] ;
14161418
14171419 let loaded = store. load_records ( Eye :: Right , & indices) . await ?;
14181420 for ( id, code, mask) in loaded. iter ( ) {
14191421 assert ! (
1420- code. iter( ) . all( |& x| x == 789_u16 + * id as u16 - 1 ) ,
1422+ code. iter( ) . all( |& x| x == 789_u16 + * id as u16 ) ,
14211423 "loaded code is correct"
14221424 ) ;
14231425 assert ! (
1424- mask. iter( ) . all( |& x| x == 101_u16 + * id as u16 - 1 ) ,
1426+ mask. iter( ) . all( |& x| x == 101_u16 + * id as u16 ) ,
14251427 "loaded code is correct"
14261428 ) ;
14271429 }
14281430 let indices = [ 5 , 3 , 1 , 11 , 15 , 17 ] ;
14291431 let loaded = store. load_records ( Eye :: Right , & indices) . await ?;
14301432 for ( id, code, mask) in loaded. iter ( ) {
14311433 assert ! (
1432- code. iter( ) . all( |& x| x == 789_u16 + * id as u16 - 1 ) ,
1434+ code. iter( ) . all( |& x| x == 789_u16 + * id as u16 ) ,
14331435 "loaded code is correct"
14341436 ) ;
14351437 assert ! (
1436- mask. iter( ) . all( |& x| x == 101_u16 + * id as u16 - 1 ) ,
1438+ mask. iter( ) . all( |& x| x == 101_u16 + * id as u16 ) ,
14371439 "loaded code is correct"
14381440 ) ;
14391441 }
0 commit comments