From 47b2f5634db2db27bd8117841714c16cab334ebc Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Tue, 8 Mar 2022 06:30:11 +0700 Subject: [PATCH] should fix IN issue --- grovedb/src/subtree.rs | 45 ++++++++++++++++++++++++------------------ 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/grovedb/src/subtree.rs b/grovedb/src/subtree.rs index 10cf3bbc5..4a8c7c3a5 100644 --- a/grovedb/src/subtree.rs +++ b/grovedb/src/subtree.rs @@ -220,25 +220,32 @@ impl Element { if !item.is_range() { // this is a query on a key if let QueryItem::Key(key) = item { - Ok(add_element_function(PathQueryPushArgs { - transaction, - subtrees, - key: Some(key.as_slice()), - element: subtrees - .borrow_mut(merk_path.iter().copied(), transaction)? - .apply(|s| Element::get(s, key))?, - path, - subquery_key: sized_query.query.subquery_key.clone(), - subquery: sized_query - .query - .subquery - .as_ref() - .map(|query| *query.clone()), - left_to_right: sized_query.query.left_to_right, - results, - limit, - offset, - })?) + match subtrees + .borrow_mut(merk_path.iter().copied(), transaction)? + .apply(|s| Element::get(s, key)) + { + Ok(element) => Ok(add_element_function(PathQueryPushArgs { + transaction, + subtrees, + key: Some(key.as_slice()), + element, + path, + subquery_key: sized_query.query.subquery_key.clone(), + subquery: sized_query + .query + .subquery + .as_ref() + .map(|query| *query.clone()), + left_to_right: sized_query.query.left_to_right, + results, + limit, + offset, + })?), + Err(e) => match e { + Error::PathKeyNotFound(_) => Ok(()), + _ => Err(e), + }, + } } else { Err(Error::InternalError( "QueryItem must be a Key if not a range",