iceberg_rust/sql.rs
1/*!
2Utility functions for SQL
3*/
4
5use std::ops::ControlFlow;
6
7use sqlparser::{ast::visit_relations, dialect::GenericDialect, parser::Parser};
8
9use crate::error::Error;
10
11/// Find all table references in a SQL query
12pub fn find_relations(sql: &str) -> Result<Vec<String>, Error> {
13 let statements = Parser::parse_sql(&GenericDialect, sql)?;
14 let mut visited = Vec::new();
15
16 visit_relations(&statements, |relation| {
17 visited.push(relation.to_string());
18 ControlFlow::<()>::Continue(())
19 });
20 Ok(visited)
21}