(
&self,
statement: Statement,
)
| 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 { |
no test coverage detected