1
1
// Copyright 2022 CeresDB Project Authors. Licensed under Apache-2.0.
2
2
3
- //! Table engine implementation
4
-
5
- use std:: sync:: Arc ;
3
+ //! Table engine proxy
6
4
7
5
use async_trait:: async_trait;
8
- use table_engine:: {
6
+
7
+ use crate :: {
9
8
engine:: {
10
- CloseTableRequest , CreateTableRequest , DropTableRequest , OpenTableRequest , Result ,
11
- TableEngine , TableEngineRef , UnknownEngineType ,
9
+ CloseTableRequest , CreateTableRequest , DropTableRequest , OpenTableRequest , TableEngine ,
10
+ TableEngineRef , UnknownEngineType ,
12
11
} ,
13
- memory:: MemoryTable ,
12
+ memory:: MemoryTableEngine ,
14
13
table:: TableRef ,
15
14
ANALYTIC_ENGINE_TYPE , MEMORY_ENGINE_TYPE ,
16
15
} ;
17
16
18
- /// Memory table engine implementation
19
- // Mainly for test purpose now
20
- pub struct MemoryTableEngine ;
21
-
22
- #[ async_trait]
23
- impl TableEngine for MemoryTableEngine {
24
- fn engine_type ( & self ) -> & str {
25
- MEMORY_ENGINE_TYPE
26
- }
27
-
28
- async fn close ( & self ) -> Result < ( ) > {
29
- Ok ( ( ) )
30
- }
31
-
32
- async fn create_table ( & self , request : CreateTableRequest ) -> Result < TableRef > {
33
- Ok ( Arc :: new ( MemoryTable :: new (
34
- request. table_name ,
35
- request. table_id ,
36
- request. table_schema ,
37
- MEMORY_ENGINE_TYPE . to_string ( ) ,
38
- ) ) )
39
- }
40
-
41
- async fn drop_table ( & self , _request : DropTableRequest ) -> Result < bool > {
42
- Ok ( true )
43
- }
44
-
45
- async fn open_table ( & self , _request : OpenTableRequest ) -> Result < Option < TableRef > > {
46
- Ok ( None )
47
- }
48
-
49
- async fn close_table ( & self , _request : CloseTableRequest ) -> Result < ( ) > {
50
- Ok ( ( ) )
51
- }
52
- }
53
-
54
17
/// Route [CreateTableRequest] to the correct engine by its engine type
55
18
pub struct TableEngineProxy {
56
19
/// Memory table engine
@@ -65,14 +28,14 @@ impl TableEngine for TableEngineProxy {
65
28
"TableEngineProxy"
66
29
}
67
30
68
- async fn close ( & self ) -> Result < ( ) > {
31
+ async fn close ( & self ) -> crate :: engine :: Result < ( ) > {
69
32
self . memory . close ( ) . await ?;
70
33
self . analytic . close ( ) . await ?;
71
34
72
35
Ok ( ( ) )
73
36
}
74
37
75
- async fn create_table ( & self , request : CreateTableRequest ) -> Result < TableRef > {
38
+ async fn create_table ( & self , request : CreateTableRequest ) -> crate :: engine :: Result < TableRef > {
76
39
// TODO(yingwen): Use a map
77
40
match request. engine . as_str ( ) {
78
41
MEMORY_ENGINE_TYPE => self . memory . create_table ( request) . await ,
@@ -81,7 +44,7 @@ impl TableEngine for TableEngineProxy {
81
44
}
82
45
}
83
46
84
- async fn drop_table ( & self , request : DropTableRequest ) -> Result < bool > {
47
+ async fn drop_table ( & self , request : DropTableRequest ) -> crate :: engine :: Result < bool > {
85
48
match request. engine . as_str ( ) {
86
49
MEMORY_ENGINE_TYPE => self . memory . drop_table ( request) . await ,
87
50
ANALYTIC_ENGINE_TYPE => self . analytic . drop_table ( request) . await ,
@@ -90,7 +53,10 @@ impl TableEngine for TableEngineProxy {
90
53
}
91
54
92
55
/// Open table, return error if table not exists
93
- async fn open_table ( & self , request : OpenTableRequest ) -> Result < Option < TableRef > > {
56
+ async fn open_table (
57
+ & self ,
58
+ request : OpenTableRequest ,
59
+ ) -> crate :: engine:: Result < Option < TableRef > > {
94
60
match request. engine . as_str ( ) {
95
61
MEMORY_ENGINE_TYPE => self . memory . open_table ( request) . await ,
96
62
ANALYTIC_ENGINE_TYPE => self . analytic . open_table ( request) . await ,
@@ -99,7 +65,7 @@ impl TableEngine for TableEngineProxy {
99
65
}
100
66
101
67
/// Close table, it is ok to close a closed table.
102
- async fn close_table ( & self , request : CloseTableRequest ) -> Result < ( ) > {
68
+ async fn close_table ( & self , request : CloseTableRequest ) -> crate :: engine :: Result < ( ) > {
103
69
match request. engine . as_str ( ) {
104
70
MEMORY_ENGINE_TYPE => self . memory . close_table ( request) . await ,
105
71
ANALYTIC_ENGINE_TYPE => self . analytic . close_table ( request) . await ,
0 commit comments