From f9af31624f5cac5aa14956a29ed3896404cf1d27 Mon Sep 17 00:00:00 2001 From: Arnaud Mimart <33665250+amimart@users.noreply.github.com> Date: Mon, 22 May 2023 18:21:44 +0200 Subject: [PATCH] feat(cognitarium): handle query engine for loop join --- contracts/okp4-cognitarium/src/querier/engine.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/contracts/okp4-cognitarium/src/querier/engine.rs b/contracts/okp4-cognitarium/src/querier/engine.rs index 8c160316..c78ac1b6 100644 --- a/contracts/okp4-cognitarium/src/querier/engine.rs +++ b/contracts/okp4-cognitarium/src/querier/engine.rs @@ -33,7 +33,13 @@ impl<'a> QueryEngine<'a> { QueryNode::CartesianProductJoin { left, right } => { Box::new(move |_| Box::new(iter::empty())) } - QueryNode::ForLoopJoin { left, right } => Box::new(move |_| Box::new(iter::empty())), + QueryNode::ForLoopJoin { left, right } => { + let left = self.eval_node(left); + let right = self.eval_node(right); + Box::new(move |vars| -> ResolvedVariablesIterator { + Box::new(left(vars).flat_map(move |v| right(v))) + }) + } QueryNode::Skip { child, first } => { let upstream = self.eval_node(child); Box::new(move |vars| -> ResolvedVariablesIterator {