robin_sparkless_core/engine/plan.rs
1//! Engine-agnostic plan executor trait.
2
3use crate::engine::DataFrameBackend;
4use crate::engine::SparkSessionBackend;
5use crate::error::EngineError;
6use serde_json::Value as JsonValue;
7
8/// Executes a logical plan (JSON list of ops) and returns a DataFrame.
9pub trait PlanExecutor: Send + Sync {
10 fn execute_plan(
11 session: &dyn SparkSessionBackend,
12 data: Vec<Vec<JsonValue>>,
13 schema: Vec<(String, String)>,
14 plan: &[JsonValue],
15 ) -> Result<Box<dyn DataFrameBackend>, EngineError>;
16}