MCPcopy Create free account
hub / github.com/GraphLite-AI/GraphLite / plan_query_with_trace

Method plan_query_with_trace

graphlite/src/plan/optimizer.rs:199–308  ·  view source on GitHub ↗

Plan a query with detailed tracing for EXPLAIN

(
        &mut self,
        document: &Document,
    )

Source from the content-addressed store, hash-verified

197
198 /// Plan a query with detailed tracing for EXPLAIN
199 pub fn plan_query_with_trace(
200 &mut self,
201 document: &Document,
202 ) -> Result<PlanTrace, PlanningError> {
203 let mut tracer = PlanTracer::new();
204
205 // Parse phase (already done, but record it)
206 tracer.trace_step(
207 PlanningPhase::Parsing,
208 "Parse GQL query into AST".to_string(),
209 TraceMetadata::empty(),
210 );
211
212 // Extract query from document
213 let query = match &document.statement {
214 crate::ast::Statement::Query(q) => q,
215 _ => {
216 return Err(PlanningError::InvalidQuery(
217 "Document does not contain a query statement".to_string(),
218 ))
219 }
220 };
221
222 // Generate logical plan
223 tracer.start_step(
224 PlanningPhase::LogicalPlanGeneration,
225 "Create logical plan from AST".to_string(),
226 );
227 let logical_plan = self.create_logical_plan(query)?;
228 tracer.end_step(
229 PlanningPhase::LogicalPlanGeneration,
230 "Logical plan created successfully".to_string(),
231 None,
232 None,
233 None,
234 TraceMetadata::with_estimates(logical_plan.root.estimate_cardinality(), 0.0),
235 );
236
237 // Optimize logical plan
238 tracer.start_step(
239 PlanningPhase::LogicalOptimization,
240 "Apply logical optimizations".to_string(),
241 );
242 let optimized_logical = self.optimize_logical_plan(logical_plan.clone())?;
243 tracer.end_step(
244 PlanningPhase::LogicalOptimization,
245 format!(
246 "Applied {} optimization level",
247 self.optimization_level_name()
248 ),
249 None,
250 None,
251 None,
252 TraceMetadata::with_optimization(self.optimization_level_name()),
253 );
254
255 // Convert to physical plan
256 tracer.start_step(

Callers 1

explain_queryMethod · 0.80

Calls 12

trace_stepMethod · 0.80
start_stepMethod · 0.80
end_stepMethod · 0.80
estimate_cardinalityMethod · 0.80
optimize_logical_planMethod · 0.80
cloneMethod · 0.80
create_physical_planMethod · 0.80
estimate_plan_costMethod · 0.80
finalizeMethod · 0.80
create_logical_planMethod · 0.45

Tested by

no test coverage detected