[][src]Module declarative_dataflow::plan::hector

Worst-case optimal, n-way joins.

This is an extended implementation of Delta-BiGJoin, by Ammar, McSherry, Salihoglu, and Joglekar (paper).

The overall structure and the CollectionExtender implementation is adapted from: https://github.com/frankmcsherry/differential-dataflow/tree/master/dogsdogsdogs

Structs

Hector

A plan stage joining two source relations on the specified variables. Throws if any of the join variables isn't bound by both sources.

Functions

plan_order

Orders the variables s.t. each has at least one binding from itself to a prior variable. source_binding indicates the binding from which we will source the prefixes in the resulting delta pipeline. Returns the chosen variable order and the corresponding binding order.

source_conflicts

Bindings can be in conflict with the source binding of a given delta pipeline. We need to identify them and handle them as special cases, because we always have to start from prefixes of size two.