Skip to main content

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}