linkrs_query/executor/streaming/subquery/env.rs
1//! Per-evaluation environment threaded into batch expression evaluation.
2
3use std::collections::HashMap;
4use std::sync::Arc;
5
6use linkrs_core::Value;
7
8use super::executor::SubqueryExecutor;
9
10/// Bundle of per-evaluation-environment state threaded into batch expression
11/// evaluation. Replaces the old standalone `params` argument so
12/// future operator kinds only need to add their facility to the env.
13#[derive(Debug, Clone, Default)]
14pub struct EvalEnv {
15 /// Query parameter values (`@name` references).
16 pub params: Option<Arc<HashMap<String, Value>>>,
17 /// Session variable snapshot (`$name` references), captured once per
18 /// statement at the API layer.
19 pub session_variables: Option<Arc<HashMap<String, Value>>>,
20 /// Expression-level subquery executor of the hosting operator, if any.
21 pub subquery_executor: Option<Arc<SubqueryExecutor>>,
22 /// Sequence catalog manager for `curr_val` / `next_val`, shared
23 /// engine-wide. Populated from the execution runtime at operator open.
24 pub sequence_manager: Option<Arc<linkrs_core::metadata::SequenceManager>>,
25}
26
27impl EvalEnv {
28 /// Build an env carrying only parameter values.
29 pub fn from_params(params: Option<Arc<HashMap<String, Value>>>) -> Self {
30 Self {
31 params,
32 session_variables: None,
33 subquery_executor: None,
34 sequence_manager: None,
35 }
36 }
37}