RelationParser

Struct RelationParser 

Source
pub struct RelationParser<'a> {
    tree: TreeBuilder<'a>,
}

Fields§

§tree: TreeBuilder<'a>

Implementations§

Source§

impl<'a> RelationParser<'a>

Source

pub fn parse_line( &mut self, line: IndentedLine<'a>, line_no: i64, ) -> Result<(), ParseError>

Source

fn parse_relation( &self, extensions: &SimpleExtensions, registry: &ExtensionRegistry, line_no: i64, pair: Pair<'_, Rule>, child_relations: Vec<Box<Rel>>, input_field_count: usize, ) -> Result<(Rel, usize), ParseError>

Parse a relation from a Pest pair of rule ‘relation’ into a Substrait Rel, together with its output column count.

The usize in the return value is the number of columns this relation outputs. Callers accumulate these counts across children and pass the sum in as input_field_count so that relations like ProjectRel can assign correct emit-mapping indices to their computed expressions.

Source

fn parse_rel<T: RelationParsePair>( &self, extensions: &SimpleExtensions, line_no: i64, pair: Pair<'_, Rule>, child_relations: Vec<Box<Rel>>, input_field_count: usize, ) -> Result<(Rel, usize), ParseError>

Parse a specific relation type, returning the relation and its output column count.

The count is derived from the just-built relation via get_output_field_count. Extension relations are handled separately in parse_extension_relation because their count comes from the user-supplied output-columns list, not from a schema embedded in the protobuf.

Source

fn parse_extension_relation( &self, extensions: &SimpleExtensions, registry: &ExtensionRegistry, line_no: i64, pair: Pair<'_, Rule>, child_relations: Vec<Box<Rel>>, ) -> Result<(Rel, usize), ParseError>

Parse extension relations. Extension relations need the full parsing context for registry lookups and warning handling.

Source

fn build_rel( &self, extensions: &SimpleExtensions, registry: &ExtensionRegistry, node: RelationNode<'_>, ) -> Result<(Rel, usize), ParseError>

Convert a RelationNode into a Substrait Rel, together with its output column count. The returned usize is the number of columns this relation emits.

Source

fn build_advanced_extension( &self, extensions: &SimpleExtensions, registry: &ExtensionRegistry, adv_exts: Vec<AdvExt<'_>>, ) -> Result<AdvancedExtension, ParseError>

Parse a list of AdvExt nodes into an AdvancedExtension proto.

Source

fn build_plan_rel( &self, extensions: &SimpleExtensions, registry: &ExtensionRegistry, node: RelationNode<'_>, ) -> Result<PlanRel, ParseError>

Build a tree of relations.

Source

fn build( self, extensions: &SimpleExtensions, registry: &ExtensionRegistry, ) -> Result<Vec<PlanRel>, ParseError>

Build all the trees.

Trait Implementations§

Source§

impl<'a> Clone for RelationParser<'a>

Source§

fn clone(&self) -> RelationParser<'a>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for RelationParser<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'a> Default for RelationParser<'a>

Source§

fn default() -> RelationParser<'a>

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<'a> Freeze for RelationParser<'a>

§

impl<'a> RefUnwindSafe for RelationParser<'a>

§

impl<'a> !Send for RelationParser<'a>

§

impl<'a> !Sync for RelationParser<'a>

§

impl<'a> Unpin for RelationParser<'a>

§

impl<'a> UnwindSafe for RelationParser<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.