pub struct Relation<'a> {
pub name: &'a str,
pub arguments: Option<Arguments<'a>>,
pub columns: Vec<Value<'a>>,
pub emit: Option<&'a EmitKind>,
pub children: Vec<Option<Relation<'a>>>,
}
Fields§
§name: &'a str
§arguments: Option<Arguments<'a>>
Arguments to the relation, if any.
None
means this relation does not take arguments, and the argument section is omitted entirely.Some(args)
with both vectors empty means the relation takes arguments, but none are provided; this will print as_ => ...
.Some(args)
with non-empty vectors will print as usual, with positional arguments first, then named arguments, separated by commas.
columns: Vec<Value<'a>>
The columns emitted by this relation, pre-emit - the ‘direct’ column output.
emit: Option<&'a EmitKind>
The emit kind, if any. If none, use the columns directly.
children: Vec<Option<Relation<'a>>>
The input relations.
Implementations§
Source§impl<'a> Relation<'a>
impl<'a> Relation<'a>
Sourcepub fn input_refs(&self) -> Vec<Value<'a>>
pub fn input_refs(&self) -> Vec<Value<'a>>
Create a vector of values that are references to the emitted outputs of this relation. “Emitted” here meaning the outputs of this relation after the emit kind has been applied.
This is useful for relations like Filter and Limit whose direct outputs are primarily those of its children (direct here meaning before the emit has been applied).
Trait Implementations§
Source§impl<'a> From<&'a AggregateRel> for Relation<'a>
impl<'a> From<&'a AggregateRel> for Relation<'a>
Source§fn from(rel: &'a AggregateRel) -> Self
fn from(rel: &'a AggregateRel) -> Self
Convert an AggregateRel to a Relation for textification.
The conversion follows this logic:
- Arguments: Group-by expressions (as Value::Expression)
- Columns: All possible outputs in order:
- First: Group-by field references (Value::Reference)
- Then: Aggregate function measures (Value::AggregateFunction)
- Emit: Uses the relation’s emit mapping to select which outputs to display
- Children: The input relation
Source§impl<'a> From<&'a ProjectRel> for Relation<'a>
impl<'a> From<&'a ProjectRel> for Relation<'a>
Source§fn from(rel: &'a ProjectRel) -> Self
fn from(rel: &'a ProjectRel) -> Self
Converts to this type from the input type.
Auto Trait Implementations§
impl<'a> Freeze for Relation<'a>
impl<'a> RefUnwindSafe for Relation<'a>
impl<'a> Send for Relation<'a>
impl<'a> Sync for Relation<'a>
impl<'a> Unpin for Relation<'a>
impl<'a> UnwindSafe for Relation<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more