pub trait Executor:
Debug
+ Send
+ Sync {
// Required methods
fn translate<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
hamelin: &'life1 str,
time_range: Option<&'life2 str>,
) -> Pin<Box<dyn Future<Output = Result<CompiledQuery, ExecutorError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait;
fn ir<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
hamelin: &'life1 str,
time_range: Option<&'life2 str>,
) -> Pin<Box<dyn Future<Output = Result<CompiledQuery, ExecutorError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait;
fn execute_query<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
hamelin: &'life1 str,
time_range: Option<&'life2 str>,
) -> Pin<Box<dyn Future<Output = Result<ResultSet, ExecutorError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait;
fn execute_dml<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
hamelin: &'life1 str,
time_range: Option<&'life2 str>,
) -> Pin<Box<dyn Future<Output = Result<usize, ExecutorError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait;
fn create_dataset<'life0, 'async_trait>(
&'life0 self,
dataset: Identifier,
columns: Vec<Column>,
) -> Pin<Box<dyn Future<Output = Result<(), ExecutorError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn resolve_datasets<'life0, 'life1, 'async_trait>(
&'life0 self,
datasets: &'life1 [Identifier],
) -> Pin<Box<dyn Future<Output = Result<Vec<Vec<Column>>, ExecutorError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn reflect_catalog<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Catalog, ExecutorError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
}Required Methods§
Sourcefn translate<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
hamelin: &'life1 str,
time_range: Option<&'life2 str>,
) -> Pin<Box<dyn Future<Output = Result<CompiledQuery, ExecutorError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn translate<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
hamelin: &'life1 str,
time_range: Option<&'life2 str>,
) -> Pin<Box<dyn Future<Output = Result<CompiledQuery, ExecutorError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Compile a Hamelin query string without executing it. Returns a human-readable representation and the output schema.
Sourcefn ir<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
hamelin: &'life1 str,
time_range: Option<&'life2 str>,
) -> Pin<Box<dyn Future<Output = Result<CompiledQuery, ExecutorError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn ir<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
hamelin: &'life1 str,
time_range: Option<&'life2 str>,
) -> Pin<Box<dyn Future<Output = Result<CompiledQuery, ExecutorError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Lower a Hamelin query to IR and return its display representation.
Each executor applies its own normalization options (e.g. DataFusion
enables with_lower_transform() while Trino does not), so the IR
output reflects what the executor will actually process.
Sourcefn execute_query<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
hamelin: &'life1 str,
time_range: Option<&'life2 str>,
) -> Pin<Box<dyn Future<Output = Result<ResultSet, ExecutorError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn execute_query<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
hamelin: &'life1 str,
time_range: Option<&'life2 str>,
) -> Pin<Box<dyn Future<Output = Result<ResultSet, ExecutorError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Execute a Hamelin query string, return rows.
time_range is an optional Hamelin range expression (e.g., “[-1h..]”)
Sourcefn execute_dml<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
hamelin: &'life1 str,
time_range: Option<&'life2 str>,
) -> Pin<Box<dyn Future<Output = Result<usize, ExecutorError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn execute_dml<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
hamelin: &'life1 str,
time_range: Option<&'life2 str>,
) -> Pin<Box<dyn Future<Output = Result<usize, ExecutorError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Execute a Hamelin DML string, return rows affected.
Sourcefn create_dataset<'life0, 'async_trait>(
&'life0 self,
dataset: Identifier,
columns: Vec<Column>,
) -> Pin<Box<dyn Future<Output = Result<(), ExecutorError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn create_dataset<'life0, 'async_trait>(
&'life0 self,
dataset: Identifier,
columns: Vec<Column>,
) -> Pin<Box<dyn Future<Output = Result<(), ExecutorError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Create a dataset in the underlying database.
Sourcefn resolve_datasets<'life0, 'life1, 'async_trait>(
&'life0 self,
datasets: &'life1 [Identifier],
) -> Pin<Box<dyn Future<Output = Result<Vec<Vec<Column>>, ExecutorError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn resolve_datasets<'life0, 'life1, 'async_trait>(
&'life0 self,
datasets: &'life1 [Identifier],
) -> Pin<Box<dyn Future<Output = Result<Vec<Vec<Column>>, ExecutorError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Resolve one or more datasets’ columns.
Returns columns in the same order as the input slice — callers can
zip the result with their identifiers.
Sourcefn reflect_catalog<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Catalog, ExecutorError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn reflect_catalog<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Catalog, ExecutorError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Reflect the schema of the default catalog.
This is a proactive reflection operation that queries the underlying
backend for its current schema. For Trino, this queries
information_schema.columns scoped to the default catalog set on the
connection. For DataFusion, this resolves all locally-configured datasets
and enumerates the SessionContext’s registered tables.