MCPcopy Create free account
hub / github.com/comnik/declarative-dataflow / implement

Method implement

src/plan/join.rs:311–365  ·  view source on GitHub ↗
(
        &self,
        nested: &mut Iterative<'b, S, u64>,
        local_arrangements: &VariableMap<Iterative<'b, S, u64>>,
        context: &mut I,
    )

Source from the content-addressed store, hash-verified

309 }
310
311 fn implement<'b, T, I, S>(
312 &self,
313 nested: &mut Iterative<'b, S, u64>,
314 local_arrangements: &VariableMap<Iterative<'b, S, u64>>,
315 context: &mut I,
316 ) -> (Implemented<'b, S>, ShutdownHandle)
317 where
318 T: Timestamp + Lattice,
319 I: ImplContext<T>,
320 S: Scope<Timestamp = T>,
321 {
322 assert!(!self.variables.is_empty());
323
324 let (left, shutdown_left) = self
325 .left_plan
326 .implement(nested, local_arrangements, context);
327 let (right, shutdown_right) =
328 self.right_plan
329 .implement(nested, local_arrangements, context);
330
331 let (implemented, mut shutdown_handle) = match left {
332 Implemented::Attribute(left) => {
333 match right {
334 Implemented::Attribute(right) => {
335 if self.variables.len() == 1 {
336 attribute_attribute(nested, context, self.variables[0], left, right)
337 } else if self.variables.len() == 2 {
338 unimplemented!();
339 // intersect_attributes(nested, context, self.variables, left, right)
340 } else {
341 panic!(
342 "Attribute<->Attribute joins can't target more than two variables."
343 );
344 }
345 }
346 Implemented::Collection(right) => {
347 collection_attribute(nested, context, &self.variables, right, left)
348 }
349 }
350 }
351 Implemented::Collection(left) => match right {
352 Implemented::Attribute(right) => {
353 collection_attribute(nested, context, &self.variables, left, right)
354 }
355 Implemented::Collection(right) => {
356 collection_collection(nested, context, &self.variables, left, right)
357 }
358 },
359 };
360
361 shutdown_handle.merge_with(shutdown_left);
362 shutdown_handle.merge_with(shutdown_right);
363
364 (implemented, shutdown_handle)
365 }
366}

Callers

nothing calls this directly

Calls 4

attribute_attributeFunction · 0.85
collection_attributeFunction · 0.85
collection_collectionFunction · 0.85
merge_withMethod · 0.80

Tested by

no test coverage detected