Skip to content

Commit de51a74

Browse files
committed
fix: expect 0-based indices in DB loader
1 parent 30048f7 commit de51a74

File tree

2 files changed

+54
-7
lines changed

2 files changed

+54
-7
lines changed

Cargo.lock

Lines changed: 45 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

iris-mpc-store/src/lib.rs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)