iridium-db 0.2.0

A high-performance vector-graph hybrid storage and indexing engine
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)
}