MCPcopy Create free account
hub / github.com/MaterializeInc/materialize / derived_context

Method derived_context

src/sql/src/plan/query.rs:6598–6616  ·  view source on GitHub ↗

Generate a new `QueryContext` appropriate to be used in subqueries of `self`.

(&self, scope: Scope, relation_type: SqlRelationType)

Source from the content-addressed store, hash-verified

6596 /// Generate a new `QueryContext` appropriate to be used in subqueries of
6597 /// `self`.
6598 fn derived_context(&self, scope: Scope, relation_type: SqlRelationType) -> QueryContext<'a> {
6599 let ctes = self.ctes.clone();
6600 let outer_scopes = iter::once(scope).chain(self.outer_scopes.clone()).collect();
6601 let outer_relation_types = iter::once(relation_type)
6602 .chain(self.outer_relation_types.clone())
6603 .collect();
6604 // These shenanigans are simpler than adding `&mut NameManager` arguments everywhere.
6605 let name_manager = Rc::clone(&self.name_manager);
6606
6607 QueryContext {
6608 scx: self.scx,
6609 lifetime: self.lifetime,
6610 outer_scopes,
6611 outer_relation_types,
6612 ctes,
6613 name_manager,
6614 recursion_guard: self.recursion_guard.clone(),
6615 }
6616 }
6617
6618 /// Derives a `QueryContext` for a scope that contains no columns.
6619 fn empty_derived_context(&self) -> QueryContext<'a> {

Callers 4

plan_scalar_table_funcsFunction · 0.80
plan_joinFunction · 0.80
empty_derived_contextMethod · 0.80
derived_query_contextMethod · 0.80

Calls 3

cloneFunction · 0.85
cloneMethod · 0.45
collectMethod · 0.45

Tested by

no test coverage detected