Struct partiql_ast_passes::name_resolver::NameResolver
source · pub struct NameResolver<'c> { /* private fields */ }
Expand description
Resolves which clauses in a query produce & consume variable references by walking the
AST and collecting variable references. Also partially infers alias if no AS
alias
was provided in the query.
Implementations§
source§impl<'c> NameResolver<'c>
impl<'c> NameResolver<'c>
pub fn new(catalog: &'c dyn Catalog) -> Self
pub fn resolve( &mut self, query: &AstNode<TopLevelQuery> ) -> Result<KeyRegistry, AstTransformationError>
Trait Implementations§
source§impl<'c> Debug for NameResolver<'c>
impl<'c> Debug for NameResolver<'c>
source§impl<'ast, 'c> Visitor<'ast> for NameResolver<'c>
impl<'ast, 'c> Visitor<'ast> for NameResolver<'c>
fn enter_ast_node(&mut self, id: NodeId) -> Traverse
fn exit_ast_node(&mut self, id: NodeId) -> Traverse
fn enter_query(&mut self, _query: &'ast Query) -> Traverse
fn exit_query(&mut self, _query: &'ast Query) -> Traverse
fn enter_from_clause(&mut self, _from_clause: &'ast FromClause) -> Traverse
fn exit_from_clause(&mut self, _from_clause: &'ast FromClause) -> Traverse
fn enter_join(&mut self, _join: &'ast Join) -> Traverse
fn exit_join(&mut self, _join: &'ast Join) -> Traverse
fn enter_from_let(&mut self, _from_let: &'ast FromLet) -> Traverse
fn exit_from_let(&mut self, from_let: &'ast FromLet) -> Traverse
fn enter_var_ref(&mut self, var_ref: &'ast VarRef) -> Traverse
fn exit_project_expr(&mut self, project_expr: &'ast ProjectExpr) -> Traverse
fn enter_group_key(&mut self, _group_key: &'ast GroupKey) -> Traverse
fn exit_group_key(&mut self, group_key: &'ast GroupKey) -> Traverse
fn enter_group_by_expr(&mut self, _group_by_expr: &'ast GroupByExpr) -> Traverse
fn exit_group_by_expr(&mut self, group_by_expr: &'ast GroupByExpr) -> Traverse
fn enter_item(&mut self, _item: &'ast Item) -> Traverse
fn exit_item(&mut self, _item: &'ast Item) -> Traverse
fn enter_ddl(&mut self, _ddl: &'ast Ddl) -> Traverse
fn exit_ddl(&mut self, _ddl: &'ast Ddl) -> Traverse
fn enter_ddl_op(&mut self, _ddl_op: &'ast DdlOp) -> Traverse
fn exit_ddl_op(&mut self, _ddl_op: &'ast DdlOp) -> Traverse
fn enter_create_table(&mut self, _create_table: &'ast CreateTable) -> Traverse
fn exit_create_table(&mut self, _create_table: &'ast CreateTable) -> Traverse
fn enter_drop_table(&mut self, _drop_table: &'ast DropTable) -> Traverse
fn exit_drop_table(&mut self, _drop_table: &'ast DropTable) -> Traverse
fn enter_create_index(&mut self, _create_index: &'ast CreateIndex) -> Traverse
fn exit_create_index(&mut self, _create_index: &'ast CreateIndex) -> Traverse
fn enter_drop_index(&mut self, _drop_index: &'ast DropIndex) -> Traverse
fn exit_drop_index(&mut self, _drop_index: &'ast DropIndex) -> Traverse
fn enter_dml(&mut self, _dml: &'ast Dml) -> Traverse
fn exit_dml(&mut self, _dml: &'ast Dml) -> Traverse
fn enter_dml_op(&mut self, _dml_op: &'ast DmlOp) -> Traverse
fn exit_dml_op(&mut self, _dml_op: &'ast DmlOp) -> Traverse
fn enter_returning_expr( &mut self, _returning_expr: &'ast ReturningExpr ) -> Traverse
fn exit_returning_expr( &mut self, _returning_expr: &'ast ReturningExpr ) -> Traverse
fn enter_returning_elem( &mut self, _returning_elem: &'ast ReturningElem ) -> Traverse
fn exit_returning_elem( &mut self, _returning_elem: &'ast ReturningElem ) -> Traverse
fn enter_insert(&mut self, _insert: &'ast Insert) -> Traverse
fn exit_insert(&mut self, _insert: &'ast Insert) -> Traverse
fn enter_insert_value(&mut self, _insert_value: &'ast InsertValue) -> Traverse
fn exit_insert_value(&mut self, _insert_value: &'ast InsertValue) -> Traverse
fn enter_set(&mut self, _set: &'ast Set) -> Traverse
fn exit_set(&mut self, _set: &'ast Set) -> Traverse
fn enter_assignment(&mut self, _assignment: &'ast Assignment) -> Traverse
fn exit_assignment(&mut self, _assignment: &'ast Assignment) -> Traverse
fn enter_remove(&mut self, _remove: &'ast Remove) -> Traverse
fn exit_remove(&mut self, _remove: &'ast Remove) -> Traverse
fn enter_delete(&mut self, _delete: &'ast Delete) -> Traverse
fn exit_delete(&mut self, _delete: &'ast Delete) -> Traverse
fn enter_on_conflict(&mut self, _on_conflict: &'ast OnConflict) -> Traverse
fn exit_on_conflict(&mut self, _on_conflict: &'ast OnConflict) -> Traverse
fn enter_top_level_query(&mut self, _query: &'ast TopLevelQuery) -> Traverse
fn exit_top_level_query(&mut self, _query: &'ast TopLevelQuery) -> Traverse
fn enter_with_clause(&mut self, _query: &'ast WithClause) -> Traverse
fn exit_with_clause(&mut self, _query: &'ast WithClause) -> Traverse
fn enter_with_element(&mut self, _query: &'ast WithElement) -> Traverse
fn exit_with_element(&mut self, _query: &'ast WithElement) -> Traverse
fn enter_query_set(&mut self, _query_set: &'ast QuerySet) -> Traverse
fn exit_query_set(&mut self, _query_set: &'ast QuerySet) -> Traverse
fn enter_bag_op_expr(&mut self, _set_expr: &'ast BagOpExpr) -> Traverse
fn exit_bag_op_expr(&mut self, _set_expr: &'ast BagOpExpr) -> Traverse
fn enter_select(&mut self, _select: &'ast Select) -> Traverse
fn exit_select(&mut self, _select: &'ast Select) -> Traverse
fn enter_query_table(&mut self, _table: &'ast QueryTable) -> Traverse
fn exit_query_table(&mut self, _table: &'ast QueryTable) -> Traverse
fn enter_projection(&mut self, _projection: &'ast Projection) -> Traverse
fn exit_projection(&mut self, _projection: &'ast Projection) -> Traverse
fn enter_projection_kind( &mut self, _projection_kind: &'ast ProjectionKind ) -> Traverse
fn exit_projection_kind( &mut self, _projection_kind: &'ast ProjectionKind ) -> Traverse
fn enter_project_item(&mut self, _project_item: &'ast ProjectItem) -> Traverse
fn exit_project_item(&mut self, _project_item: &'ast ProjectItem) -> Traverse
fn enter_project_pivot( &mut self, _project_pivot: &'ast ProjectPivot ) -> Traverse
fn exit_project_pivot(&mut self, _project_pivot: &'ast ProjectPivot) -> Traverse
fn enter_project_all(&mut self, _project_all: &'ast ProjectAll) -> Traverse
fn exit_project_all(&mut self, _project_all: &'ast ProjectAll) -> Traverse
fn enter_project_expr(&mut self, _project_expr: &'ast ProjectExpr) -> Traverse
fn enter_expr(&mut self, _expr: &'ast Expr) -> Traverse
fn exit_expr(&mut self, _expr: &'ast Expr) -> Traverse
fn enter_lit(&mut self, _lit: &'ast Lit) -> Traverse
fn exit_lit(&mut self, _lit: &'ast Lit) -> Traverse
fn exit_var_ref(&mut self, _var_ref: &'ast VarRef) -> Traverse
fn enter_bin_op(&mut self, _bin_op: &'ast BinOp) -> Traverse
fn exit_bin_op(&mut self, _bin_op: &'ast BinOp) -> Traverse
fn enter_uni_op(&mut self, _uni_op: &'ast UniOp) -> Traverse
fn exit_uni_op(&mut self, _uni_op: &'ast UniOp) -> Traverse
fn enter_like(&mut self, _like: &'ast Like) -> Traverse
fn exit_like(&mut self, _like: &'ast Like) -> Traverse
fn enter_between(&mut self, _between: &'ast Between) -> Traverse
fn exit_between(&mut self, _between: &'ast Between) -> Traverse
fn enter_in(&mut self, _in: &'ast In) -> Traverse
fn exit_in(&mut self, _in: &'ast In) -> Traverse
fn enter_case(&mut self, _case: &'ast Case) -> Traverse
fn exit_case(&mut self, _case: &'ast Case) -> Traverse
fn enter_simple_case(&mut self, _simple_case: &'ast SimpleCase) -> Traverse
fn exit_simple_case(&mut self, _simple_case: &'ast SimpleCase) -> Traverse
fn enter_searched_case( &mut self, _searched_case: &'ast SearchedCase ) -> Traverse
fn exit_searched_case(&mut self, _searched_case: &'ast SearchedCase) -> Traverse
fn enter_expr_pair(&mut self, _expr_pair: &'ast ExprPair) -> Traverse
fn exit_expr_pair(&mut self, _expr_pair: &'ast ExprPair) -> Traverse
fn enter_struct(&mut self, _struct: &'ast Struct) -> Traverse
fn exit_struct(&mut self, _struct: &'ast Struct) -> Traverse
fn enter_bag(&mut self, _bag: &'ast Bag) -> Traverse
fn exit_bag(&mut self, _bag: &'ast Bag) -> Traverse
fn enter_list(&mut self, _list: &'ast List) -> Traverse
fn exit_list(&mut self, _list: &'ast List) -> Traverse
fn enter_sexp(&mut self, _sexp: &'ast Sexp) -> Traverse
fn exit_sexp(&mut self, _sexp: &'ast Sexp) -> Traverse
fn enter_call(&mut self, _call: &'ast Call) -> Traverse
fn exit_call(&mut self, _call: &'ast Call) -> Traverse
fn enter_call_arg(&mut self, _call_arg: &'ast CallArg) -> Traverse
fn exit_call_arg(&mut self, _call_arg: &'ast CallArg) -> Traverse
fn enter_call_arg_named( &mut self, _call_arg_named: &'ast CallArgNamed ) -> Traverse
fn exit_call_arg_named( &mut self, _call_arg_named: &'ast CallArgNamed ) -> Traverse
fn enter_call_arg_named_type( &mut self, _call_arg_named_type: &'ast CallArgNamedType ) -> Traverse
fn exit_call_arg_named_type( &mut self, _call_arg_named_type: &'ast CallArgNamedType ) -> Traverse
fn enter_call_agg(&mut self, _call_agg: &'ast CallAgg) -> Traverse
fn exit_call_agg(&mut self, _call_agg: &'ast CallAgg) -> Traverse
fn enter_path(&mut self, _path: &'ast Path) -> Traverse
fn exit_path(&mut self, _path: &'ast Path) -> Traverse
fn enter_path_step(&mut self, _path_step: &'ast PathStep) -> Traverse
fn exit_path_step(&mut self, _path_step: &'ast PathStep) -> Traverse
fn enter_path_expr(&mut self, _path_expr: &'ast PathExpr) -> Traverse
fn exit_path_expr(&mut self, _path_expr: &'ast PathExpr) -> Traverse
fn enter_let(&mut self, _let: &'ast Let) -> Traverse
fn exit_let(&mut self, _let: &'ast Let) -> Traverse
fn enter_let_binding(&mut self, _let_binding: &'ast LetBinding) -> Traverse
fn exit_let_binding(&mut self, _let_binding: &'ast LetBinding) -> Traverse
fn enter_from_source(&mut self, _from_clause: &'ast FromSource) -> Traverse
fn exit_from_source(&mut self, _from_clause: &'ast FromSource) -> Traverse
fn enter_where_clause(&mut self, _where_clause: &'ast WhereClause) -> Traverse
fn exit_where_clause(&mut self, _where_clause: &'ast WhereClause) -> Traverse
fn enter_having_clause( &mut self, _having_clause: &'ast HavingClause ) -> Traverse
fn exit_having_clause(&mut self, _having_clause: &'ast HavingClause) -> Traverse
fn enter_join_spec(&mut self, _join_spec: &'ast JoinSpec) -> Traverse
fn exit_join_spec(&mut self, _join_spec: &'ast JoinSpec) -> Traverse
fn enter_order_by_expr(&mut self, _order_by_expr: &'ast OrderByExpr) -> Traverse
fn exit_order_by_expr(&mut self, _order_by_expr: &'ast OrderByExpr) -> Traverse
fn enter_limit_offset_clause( &mut self, _limit_offset: &'ast LimitOffsetClause ) -> Traverse
fn exit_limit_offset_clause( &mut self, _limit_offset: &'ast LimitOffsetClause ) -> Traverse
fn enter_sort_spec(&mut self, _sort_spec: &'ast SortSpec) -> Traverse
fn exit_sort_spec(&mut self, _sort_spec: &'ast SortSpec) -> Traverse
fn enter_custom_type(&mut self, _custom_type: &'ast CustomType) -> Traverse
fn exit_custom_type(&mut self, _custom_type: &'ast CustomType) -> Traverse
Auto Trait Implementations§
impl<'c> !RefUnwindSafe for NameResolver<'c>
impl<'c> !Send for NameResolver<'c>
impl<'c> !Sync for NameResolver<'c>
impl<'c> Unpin for NameResolver<'c>
impl<'c> !UnwindSafe for NameResolver<'c>
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