Files
rustfs/s3select/api/src/server/dbms.rs
T
junxiang Mu 0b270bf0cc tmp2
Signed-off-by: junxiang Mu <[email protected]>
2025-03-31 05:44:48 +00:00

42 lines
985 B
Rust

use async_trait::async_trait;
use crate::{
query::{
execution::{Output, QueryStateMachineRef},
logical_planner::Plan,
Query,
},
QueryResult,
};
pub struct QueryHandle {
query: Query,
result: Output,
}
impl QueryHandle {
pub fn new(query: Query, result: Output) -> Self {
Self { query, result }
}
pub fn query(&self) -> &Query {
&self.query
}
pub fn result(self) -> Output {
self.result
}
}
#[async_trait]
pub trait DatabaseManagerSystem {
async fn execute(&self, query: &Query) -> QueryResult<QueryHandle>;
async fn build_query_state_machine(&self, query: Query) -> QueryResult<QueryStateMachineRef>;
async fn build_logical_plan(&self, query_state_machine: QueryStateMachineRef) -> QueryResult<Option<Plan>>;
async fn execute_logical_plan(
&self,
logical_plan: Plan,
query_state_machine: QueryStateMachineRef,
) -> QueryResult<QueryHandle>;
}