From 9ba23631165b49c73ce1f418b61355396763871e Mon Sep 17 00:00:00 2001 From: Petros Angelatos Date: Fri, 11 Mar 2022 20:15:08 +0100 Subject: [PATCH] wip implementation of cross join via broadcasting batches Signed-off-by: Petros Angelatos --- examples/broadcast_cross_join.rs | 116 ++++++++++++++++++++++ src/trace/implementations/ord.rs | 5 +- src/trace/mod.rs | 162 +++++++++++++++++++++++++++++++ 3 files changed, 282 insertions(+), 1 deletion(-) create mode 100644 examples/broadcast_cross_join.rs diff --git a/examples/broadcast_cross_join.rs b/examples/broadcast_cross_join.rs new file mode 100644 index 000000000..cabb89b11 --- /dev/null +++ b/examples/broadcast_cross_join.rs @@ -0,0 +1,116 @@ +extern crate timely; +extern crate differential_dataflow; + +use std::ops::Mul; + +use timely::Data; +use timely::dataflow::channels::pact::Pipeline; +use timely::dataflow::operators::broadcast::Broadcast; +use timely::dataflow::operators::Operator; +use timely::dataflow::{Scope, Stream}; +use timely::order::TotalOrder; +use differential_dataflow::{Collection, AsCollection}; +use differential_dataflow::difference::Semigroup; +use differential_dataflow::input::Input; +use differential_dataflow::lattice::Lattice; +use differential_dataflow::operators::arrange::{Arrange, Arranged}; +use differential_dataflow::trace::{Cursor, BatchReader, TraceReader}; +use differential_dataflow::trace::implementations::ord::OrdKeySpineAbomArc; + +// This function is supposed to do one half of a cross join but its implementation is currently +// incorrect +// TODO: actually implement a half cross join +fn half_cross_join( + left: Arranged, + right: &Stream, +) -> Collection>::Output> +where + G: Scope, + G::Timestamp: Lattice + TotalOrder + Ord, + Tr1: TraceReader