mod aggregate;
mod execute;
mod plan;
mod types;
mod union;
use crate::features::storage::api as storage_api;
use plexus_serde::Plan;
use super::super::{ExecuteParams, Result, RowStream};
pub(super) fn execute_deserialized_plan(
plan: &Plan,
params: &ExecuteParams,
handle: &mut storage_api::StorageHandle,
) -> Result<RowStream> {
if let Some(chain) = union::union_chain_from_root(plan)? {
return union::execute_union_chain(plan, &chain, params, handle);
}
let adapter_plan = plan::translate_readonly_plan(plan)?;
execute::execute_adapter_plan(&adapter_plan, params, handle)
}