Skip to main content

radixdb_executor/mutation/
operator.rs

1use radixdb_core::Result;
2use radixdb_sql::{
3    CreateOperatorClassStatement, CreateOperatorStatement, CreatePlannerSupportStatement,
4    DropOperatorClassStatement, DropOperatorStatement, DropPlannerSupportStatement, Statement,
5};
6use radixdb_storage::traits::QueryResult;
7
8use crate::context::ExecutionContext;
9use crate::mutation::host::MutationHost;
10
11use super::extension::execute_binding_statement;
12
13#[doc(hidden)]
14pub trait OperatorDdlExecutorExt: MutationHost {
15    fn execute_create_operator(
16        &self,
17        statement: &CreateOperatorStatement,
18        context: &ExecutionContext,
19    ) -> Result<Box<dyn QueryResult>> {
20        execute_binding_statement(
21            self,
22            Statement::CreateOperator(Box::new(statement.clone())),
23            context,
24        )
25    }
26
27    fn execute_drop_operator(
28        &self,
29        statement: &DropOperatorStatement,
30        context: &ExecutionContext,
31    ) -> Result<Box<dyn QueryResult>> {
32        execute_binding_statement(
33            self,
34            Statement::DropOperator(Box::new(statement.clone())),
35            context,
36        )
37    }
38
39    fn execute_create_operator_class(
40        &self,
41        statement: &CreateOperatorClassStatement,
42        context: &ExecutionContext,
43    ) -> Result<Box<dyn QueryResult>> {
44        execute_binding_statement(
45            self,
46            Statement::CreateOperatorClass(Box::new(statement.clone())),
47            context,
48        )
49    }
50
51    fn execute_drop_operator_class(
52        &self,
53        statement: &DropOperatorClassStatement,
54        context: &ExecutionContext,
55    ) -> Result<Box<dyn QueryResult>> {
56        execute_binding_statement(
57            self,
58            Statement::DropOperatorClass(Box::new(statement.clone())),
59            context,
60        )
61    }
62
63    fn execute_create_planner_support(
64        &self,
65        statement: &CreatePlannerSupportStatement,
66        context: &ExecutionContext,
67    ) -> Result<Box<dyn QueryResult>> {
68        execute_binding_statement(
69            self,
70            Statement::CreatePlannerSupport(Box::new(statement.clone())),
71            context,
72        )
73    }
74
75    fn execute_drop_planner_support(
76        &self,
77        statement: &DropPlannerSupportStatement,
78        context: &ExecutionContext,
79    ) -> Result<Box<dyn QueryResult>> {
80        execute_binding_statement(
81            self,
82            Statement::DropPlannerSupport(Box::new(statement.clone())),
83            context,
84        )
85    }
86}
87
88impl<T: MutationHost + ?Sized> OperatorDdlExecutorExt for T {}