MCPcopy Create free account
hub / github.com/apache/datafusion / statement_to_plan

Method statement_to_plan

datafusion/core/src/execution/session_state.rs:526–551  ·  view source on GitHub ↗
(
        &self,
        statement: Statement,
    )

Source from the content-addressed store, hash-verified

524 /// Convert an AST Statement into a LogicalPlan
525 #[cfg(feature = "sql")]
526 pub async fn statement_to_plan(
527 &self,
528 statement: Statement,
529 ) -> datafusion_common::Result<LogicalPlan> {
530 let references = self.resolve_table_references(&statement)?;
531
532 let mut provider = SessionContextProvider {
533 state: self,
534 tables: HashMap::with_capacity(references.len()),
535 };
536
537 for reference in references {
538 let resolved = self.resolve_table_ref(reference);
539 if let Entry::Vacant(v) = provider.tables.entry(resolved) {
540 let resolved = v.key();
541 if let Ok(schema) = self.schema_for_ref(resolved.clone())
542 && let Some(table) = schema.table(&resolved.table).await?
543 {
544 v.insert(provider_as_source(table));
545 }
546 }
547 }
548
549 let query = SqlToRel::new_with_options(&provider, self.get_parser_options());
550 query.statement_to_plan(statement)
551 }
552
553 #[cfg(feature = "sql")]
554 fn get_parser_options(&self) -> ParserOptions {

Callers 3

create_logical_planMethod · 0.45
plan_count_wildcardFunction · 0.45

Calls 9

provider_as_sourceFunction · 0.85
schema_for_refMethod · 0.80
get_parser_optionsMethod · 0.80
lenMethod · 0.45
resolve_table_refMethod · 0.45
cloneMethod · 0.45
tableMethod · 0.45
insertMethod · 0.45

Tested by

no test coverage detected