@@ -10,7 +10,7 @@ use tikv_client_store::Request;
10
10
11
11
use super :: RawRpcRequest ;
12
12
use crate :: {
13
- collect_first ,
13
+ collect_single ,
14
14
pd:: PdClient ,
15
15
request:: {
16
16
plan:: ResponseWithShard , Collect , CollectSingle , DefaultProcessor , KvRequest , Merge ,
@@ -35,7 +35,7 @@ impl KvRequest for kvrpcpb::RawGetRequest {
35
35
}
36
36
37
37
shardable_key ! ( kvrpcpb:: RawGetRequest ) ;
38
- collect_first ! ( kvrpcpb:: RawGetResponse ) ;
38
+ collect_single ! ( kvrpcpb:: RawGetResponse ) ;
39
39
40
40
impl SingleKey for kvrpcpb:: RawGetRequest {
41
41
fn key ( & self ) -> & Vec < u8 > {
@@ -84,16 +84,55 @@ impl Merge<kvrpcpb::RawBatchGetResponse> for Collect {
84
84
}
85
85
}
86
86
87
+ pub fn new_raw_get_key_ttl_request (
88
+ key : Vec < u8 > ,
89
+ cf : Option < ColumnFamily > ,
90
+ ) -> kvrpcpb:: RawGetKeyTtlRequest {
91
+ let mut req = kvrpcpb:: RawGetKeyTtlRequest :: default ( ) ;
92
+ req. set_key ( key) ;
93
+ req. maybe_set_cf ( cf) ;
94
+
95
+ req
96
+ }
97
+
98
+ impl KvRequest for kvrpcpb:: RawGetKeyTtlRequest {
99
+ type Response = kvrpcpb:: RawGetKeyTtlResponse ;
100
+ }
101
+
102
+ shardable_key ! ( kvrpcpb:: RawGetKeyTtlRequest ) ;
103
+ collect_single ! ( kvrpcpb:: RawGetKeyTtlResponse ) ;
104
+
105
+ impl SingleKey for kvrpcpb:: RawGetKeyTtlRequest {
106
+ fn key ( & self ) -> & Vec < u8 > {
107
+ & self . key
108
+ }
109
+ }
110
+
111
+ impl Process < kvrpcpb:: RawGetKeyTtlResponse > for DefaultProcessor {
112
+ type Out = Option < u64 > ;
113
+
114
+ fn process ( & self , input : Result < kvrpcpb:: RawGetKeyTtlResponse > ) -> Result < Self :: Out > {
115
+ let input = input?;
116
+ Ok ( if input. not_found {
117
+ None
118
+ } else {
119
+ Some ( input. ttl )
120
+ } )
121
+ }
122
+ }
123
+
87
124
pub fn new_raw_put_request (
88
125
key : Vec < u8 > ,
89
126
value : Vec < u8 > ,
90
127
cf : Option < ColumnFamily > ,
128
+ ttl : u64 ,
91
129
atomic : bool ,
92
130
) -> kvrpcpb:: RawPutRequest {
93
131
let mut req = kvrpcpb:: RawPutRequest :: default ( ) ;
94
132
req. set_key ( key) ;
95
133
req. set_value ( value) ;
96
134
req. maybe_set_cf ( cf) ;
135
+ req. set_ttl ( ttl) ;
97
136
req. set_for_cas ( atomic) ;
98
137
99
138
req
@@ -104,7 +143,7 @@ impl KvRequest for kvrpcpb::RawPutRequest {
104
143
}
105
144
106
145
shardable_key ! ( kvrpcpb:: RawPutRequest ) ;
107
- collect_first ! ( kvrpcpb:: RawPutResponse ) ;
146
+ collect_single ! ( kvrpcpb:: RawPutResponse ) ;
108
147
impl SingleKey for kvrpcpb:: RawPutRequest {
109
148
fn key ( & self ) -> & Vec < u8 > {
110
149
& self . key
@@ -114,11 +153,13 @@ impl SingleKey for kvrpcpb::RawPutRequest {
114
153
pub fn new_raw_batch_put_request (
115
154
pairs : Vec < kvrpcpb:: KvPair > ,
116
155
cf : Option < ColumnFamily > ,
156
+ ttls : Vec < u64 > ,
117
157
atomic : bool ,
118
158
) -> kvrpcpb:: RawBatchPutRequest {
119
159
let mut req = kvrpcpb:: RawBatchPutRequest :: default ( ) ;
120
160
req. set_pairs ( pairs) ;
121
161
req. maybe_set_cf ( cf) ;
162
+ req. set_ttls ( ttls) ;
122
163
req. set_for_cas ( atomic) ;
123
164
124
165
req
@@ -168,7 +209,7 @@ impl KvRequest for kvrpcpb::RawDeleteRequest {
168
209
}
169
210
170
211
shardable_key ! ( kvrpcpb:: RawDeleteRequest ) ;
171
- collect_first ! ( kvrpcpb:: RawDeleteResponse ) ;
212
+ collect_single ! ( kvrpcpb:: RawDeleteResponse ) ;
172
213
impl SingleKey for kvrpcpb:: RawDeleteRequest {
173
214
fn key ( & self ) -> & Vec < u8 > {
174
215
& self . key
@@ -314,7 +355,7 @@ impl KvRequest for kvrpcpb::RawCasRequest {
314
355
}
315
356
316
357
shardable_key ! ( kvrpcpb:: RawCasRequest ) ;
317
- collect_first ! ( kvrpcpb:: RawCasResponse ) ;
358
+ collect_single ! ( kvrpcpb:: RawCasResponse ) ;
318
359
impl SingleKey for kvrpcpb:: RawCasRequest {
319
360
fn key ( & self ) -> & Vec < u8 > {
320
361
& self . key
@@ -445,6 +486,7 @@ macro_rules! impl_raw_rpc_request {
445
486
446
487
impl_raw_rpc_request ! ( RawGetRequest ) ;
447
488
impl_raw_rpc_request ! ( RawBatchGetRequest ) ;
489
+ impl_raw_rpc_request ! ( RawGetKeyTtlRequest ) ;
448
490
impl_raw_rpc_request ! ( RawPutRequest ) ;
449
491
impl_raw_rpc_request ! ( RawBatchPutRequest ) ;
450
492
impl_raw_rpc_request ! ( RawDeleteRequest ) ;
@@ -456,6 +498,7 @@ impl_raw_rpc_request!(RawCasRequest);
456
498
457
499
impl HasLocks for kvrpcpb:: RawGetResponse { }
458
500
impl HasLocks for kvrpcpb:: RawBatchGetResponse { }
501
+ impl HasLocks for kvrpcpb:: RawGetKeyTtlResponse { }
459
502
impl HasLocks for kvrpcpb:: RawPutResponse { }
460
503
impl HasLocks for kvrpcpb:: RawBatchPutResponse { }
461
504
impl HasLocks for kvrpcpb:: RawDeleteResponse { }
0 commit comments