From 6c076666b6c579113eb5e57b5d1260b936233c74 Mon Sep 17 00:00:00 2001 From: Ziyang Hu Date: Wed, 21 Jun 2023 20:10:43 +0800 Subject: [PATCH] fix panic when running KNN on empty index --- cozo-core/src/runtime/hnsw.rs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/cozo-core/src/runtime/hnsw.rs b/cozo-core/src/runtime/hnsw.rs index 47724072..1b713c57 100644 --- a/cozo-core/src/runtime/hnsw.rs +++ b/cozo-core/src/runtime/hnsw.rs @@ -900,10 +900,14 @@ impl<'a> SessionTx<'a> { if let Some(ep) = ep_res { let ep = ep?; let bottom_level = ep[0].get_int().unwrap(); + let ep_idx = match ep[config.base_handle.metadata.keys.len() + 1].get_int() { + Some(x) => x as usize, + None => { + // this occurs if the index is empty + return Ok(vec![]) + }, + }; let ep_t_key = ep[1..config.base_handle.metadata.keys.len() + 1].to_vec(); - let ep_idx = ep[config.base_handle.metadata.keys.len() + 1] - .get_int() - .unwrap() as usize; let ep_subidx = ep[config.base_handle.metadata.keys.len() + 2] .get_int() .unwrap() as i32;