radixdb-executor 1.1.0

SQL binding, planning, and execution engine for RadixDB
Documentation
use radixdb_core::Result;
use radixdb_sql::{
    CreateOperatorClassStatement, CreateOperatorStatement, CreatePlannerSupportStatement,
    DropOperatorClassStatement, DropOperatorStatement, DropPlannerSupportStatement, Statement,
};
use radixdb_storage::traits::QueryResult;

use crate::context::ExecutionContext;
use crate::mutation::host::MutationHost;

use super::extension::execute_binding_statement;

#[doc(hidden)]
pub trait OperatorDdlExecutorExt: MutationHost {
    fn execute_create_operator(
        &self,
        statement: &CreateOperatorStatement,
        context: &ExecutionContext,
    ) -> Result<Box<dyn QueryResult>> {
        execute_binding_statement(
            self,
            Statement::CreateOperator(Box::new(statement.clone())),
            context,
        )
    }

    fn execute_drop_operator(
        &self,
        statement: &DropOperatorStatement,
        context: &ExecutionContext,
    ) -> Result<Box<dyn QueryResult>> {
        execute_binding_statement(
            self,
            Statement::DropOperator(Box::new(statement.clone())),
            context,
        )
    }

    fn execute_create_operator_class(
        &self,
        statement: &CreateOperatorClassStatement,
        context: &ExecutionContext,
    ) -> Result<Box<dyn QueryResult>> {
        execute_binding_statement(
            self,
            Statement::CreateOperatorClass(Box::new(statement.clone())),
            context,
        )
    }

    fn execute_drop_operator_class(
        &self,
        statement: &DropOperatorClassStatement,
        context: &ExecutionContext,
    ) -> Result<Box<dyn QueryResult>> {
        execute_binding_statement(
            self,
            Statement::DropOperatorClass(Box::new(statement.clone())),
            context,
        )
    }

    fn execute_create_planner_support(
        &self,
        statement: &CreatePlannerSupportStatement,
        context: &ExecutionContext,
    ) -> Result<Box<dyn QueryResult>> {
        execute_binding_statement(
            self,
            Statement::CreatePlannerSupport(Box::new(statement.clone())),
            context,
        )
    }

    fn execute_drop_planner_support(
        &self,
        statement: &DropPlannerSupportStatement,
        context: &ExecutionContext,
    ) -> Result<Box<dyn QueryResult>> {
        execute_binding_statement(
            self,
            Statement::DropPlannerSupport(Box::new(statement.clone())),
            context,
        )
    }
}

impl<T: MutationHost + ?Sized> OperatorDdlExecutorExt for T {}