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

Interface Implementable

src/plan/mod.rs:172–200  ·  view source on GitHub ↗

A type that can be implemented as a simple relation.

Source from the content-addressed store, hash-verified

170
171/// A type that can be implemented as a simple relation.
172pub trait Implementable {
173 /// Returns names of any other implementable things that need to
174 /// be available before implementing this one. Attributes are not
175 /// mentioned explicitley as dependencies.
176 fn dependencies(&self) -> Dependencies;
177
178 /// Transforms an implementable into an equivalent set of bindings
179 /// that can be unified by Hector.
180 fn into_bindings(&self) -> Vec<Binding> {
181 panic!("This plan can't be implemented via Hector.");
182 }
183
184 /// @TODO
185 fn datafy(&self) -> Vec<(Eid, Aid, Value)> {
186 Vec::new()
187 }
188
189 /// Implements the type as a simple relation.
190 fn implement<'b, T, I, S>(
191 &self,
192 nested: &mut Iterative<'b, S, u64>,
193 local_arrangements: &VariableMap<Iterative<'b, S, u64>>,
194 context: &mut I,
195 ) -> (Implemented<'b, S>, ShutdownHandle)
196 where
197 T: Timestamp + Lattice,
198 I: ImplContext<T>,
199 S: Scope<Timestamp = T>;
200}
201
202/// Possible query plan types.
203#[derive(Hash, PartialEq, Eq, PartialOrd, Ord, Clone, Debug, Serialize, Deserialize)]

Callers

nothing calls this directly

Implementers 12

filter.rssrc/plan/filter.rs
transform.rssrc/plan/transform.rs
antijoin.rssrc/plan/antijoin.rs
mod.rssrc/plan/mod.rs
union.rssrc/plan/union.rs
hector.rssrc/plan/hector.rs
aggregate_neu.rssrc/plan/aggregate_neu.rs
graphql.rssrc/plan/graphql.rs
aggregate.rssrc/plan/aggregate.rs
project.rssrc/plan/project.rs
join.rssrc/plan/join.rs
pull.rssrc/plan/pull.rs

Calls

no outgoing calls

Tested by

no test coverage detected