pub struct RelationParser<'a> {
tree: TreeBuilder<'a>,
}Fields§
§tree: TreeBuilder<'a>Implementations§
Source§impl<'a> RelationParser<'a>
impl<'a> RelationParser<'a>
pub fn parse_line( &mut self, line: IndentedLine<'a>, line_no: i64, ) -> Result<(), ParseError>
Sourcefn 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>
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.
Sourcefn 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>
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.
Sourcefn parse_extension_relation(
&self,
extensions: &SimpleExtensions,
registry: &ExtensionRegistry,
line_no: i64,
pair: Pair<'_, Rule>,
child_relations: Vec<Box<Rel>>,
) -> Result<(Rel, usize), ParseError>
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.
Sourcefn build_rel(
&self,
extensions: &SimpleExtensions,
registry: &ExtensionRegistry,
node: RelationNode<'_>,
) -> Result<(Rel, usize), ParseError>
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.
Sourcefn build_advanced_extension(
&self,
extensions: &SimpleExtensions,
registry: &ExtensionRegistry,
adv_exts: Vec<AdvExt<'_>>,
) -> Result<AdvancedExtension, ParseError>
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.
Sourcefn build_plan_rel(
&self,
extensions: &SimpleExtensions,
registry: &ExtensionRegistry,
node: RelationNode<'_>,
) -> Result<PlanRel, ParseError>
fn build_plan_rel( &self, extensions: &SimpleExtensions, registry: &ExtensionRegistry, node: RelationNode<'_>, ) -> Result<PlanRel, ParseError>
Build a tree of relations.
Sourcefn build(
self,
extensions: &SimpleExtensions,
registry: &ExtensionRegistry,
) -> Result<Vec<PlanRel>, ParseError>
fn build( self, extensions: &SimpleExtensions, registry: &ExtensionRegistry, ) -> Result<Vec<PlanRel>, ParseError>
Build all the trees.
Trait Implementations§
Source§impl<'a> Clone for RelationParser<'a>
impl<'a> Clone for RelationParser<'a>
Source§fn clone(&self) -> RelationParser<'a>
fn clone(&self) -> RelationParser<'a>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more