MCPcopy Create free account
hub / github.com/erans/pgsqlite / optimize_nested_context

Method optimize_nested_context

src/rewriter/context_optimizer.rs:87–111  ·  view source on GitHub ↗

Optimize context for nested subqueries by creating a hierarchical structure

(&mut self, outer_context: &QueryContext, inner_contexts: Vec<QueryContext>)

Source from the content-addressed store, hash-verified

85
86 /// Optimize context for nested subqueries by creating a hierarchical structure
87 pub fn optimize_nested_context(&mut self, outer_context: &QueryContext, inner_contexts: Vec<QueryContext>) -> QueryContext {
88 // Create a combined context that prioritizes inner scope but falls back to outer scope
89 let mut optimized = QueryContext::default();
90
91 // Start with outer context as base
92 optimized.table_aliases.extend(outer_context.table_aliases.clone());
93 optimized.cte_columns.extend(outer_context.cte_columns.clone());
94 optimized.derived_table_columns.extend(outer_context.derived_table_columns.clone());
95 optimized.default_table = outer_context.default_table.clone();
96
97 // Layer inner contexts on top (later contexts override earlier ones)
98 for inner_context in inner_contexts {
99 // Inner context overrides outer context
100 optimized.table_aliases.extend(inner_context.table_aliases);
101 optimized.cte_columns.extend(inner_context.cte_columns);
102 optimized.derived_table_columns.extend(inner_context.derived_table_columns);
103
104 // Inner context's default table takes precedence
105 if inner_context.default_table.is_some() {
106 optimized.default_table = inner_context.default_table;
107 }
108 }
109
110 optimized
111 }
112
113 /// Clear expired cache entries to prevent memory leaks
114 pub fn cleanup_cache(&mut self) {

Callers 2

optimize_contextMethod · 0.80

Calls 1

cloneMethod · 0.45

Tested by 1