@@ -10,7 +10,7 @@ use tikv_client_store::Request;
1010
1111use super :: RawRpcRequest ;
1212use crate :: {
13- collect_first ,
13+ collect_single ,
1414 pd:: PdClient ,
1515 request:: {
1616 plan:: ResponseWithShard , Collect , CollectSingle , DefaultProcessor , KvRequest , Merge ,
@@ -35,7 +35,7 @@ impl KvRequest for kvrpcpb::RawGetRequest {
3535}
3636
3737shardable_key ! ( kvrpcpb:: RawGetRequest ) ;
38- collect_first ! ( kvrpcpb:: RawGetResponse ) ;
38+ collect_single ! ( kvrpcpb:: RawGetResponse ) ;
3939
4040impl SingleKey for kvrpcpb:: RawGetRequest {
4141 fn key ( & self ) -> & Vec < u8 > {
@@ -84,16 +84,55 @@ impl Merge<kvrpcpb::RawBatchGetResponse> for Collect {
8484 }
8585}
8686
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+
87124pub fn new_raw_put_request (
88125 key : Vec < u8 > ,
89126 value : Vec < u8 > ,
90127 cf : Option < ColumnFamily > ,
128+ ttl : u64 ,
91129 atomic : bool ,
92130) -> kvrpcpb:: RawPutRequest {
93131 let mut req = kvrpcpb:: RawPutRequest :: default ( ) ;
94132 req. set_key ( key) ;
95133 req. set_value ( value) ;
96134 req. maybe_set_cf ( cf) ;
135+ req. set_ttl ( ttl) ;
97136 req. set_for_cas ( atomic) ;
98137
99138 req
@@ -104,7 +143,7 @@ impl KvRequest for kvrpcpb::RawPutRequest {
104143}
105144
106145shardable_key ! ( kvrpcpb:: RawPutRequest ) ;
107- collect_first ! ( kvrpcpb:: RawPutResponse ) ;
146+ collect_single ! ( kvrpcpb:: RawPutResponse ) ;
108147impl SingleKey for kvrpcpb:: RawPutRequest {
109148 fn key ( & self ) -> & Vec < u8 > {
110149 & self . key
@@ -114,11 +153,13 @@ impl SingleKey for kvrpcpb::RawPutRequest {
114153pub fn new_raw_batch_put_request (
115154 pairs : Vec < kvrpcpb:: KvPair > ,
116155 cf : Option < ColumnFamily > ,
156+ ttls : Vec < u64 > ,
117157 atomic : bool ,
118158) -> kvrpcpb:: RawBatchPutRequest {
119159 let mut req = kvrpcpb:: RawBatchPutRequest :: default ( ) ;
120160 req. set_pairs ( pairs) ;
121161 req. maybe_set_cf ( cf) ;
162+ req. set_ttls ( ttls) ;
122163 req. set_for_cas ( atomic) ;
123164
124165 req
@@ -168,7 +209,7 @@ impl KvRequest for kvrpcpb::RawDeleteRequest {
168209}
169210
170211shardable_key ! ( kvrpcpb:: RawDeleteRequest ) ;
171- collect_first ! ( kvrpcpb:: RawDeleteResponse ) ;
212+ collect_single ! ( kvrpcpb:: RawDeleteResponse ) ;
172213impl SingleKey for kvrpcpb:: RawDeleteRequest {
173214 fn key ( & self ) -> & Vec < u8 > {
174215 & self . key
@@ -314,7 +355,7 @@ impl KvRequest for kvrpcpb::RawCasRequest {
314355}
315356
316357shardable_key ! ( kvrpcpb:: RawCasRequest ) ;
317- collect_first ! ( kvrpcpb:: RawCasResponse ) ;
358+ collect_single ! ( kvrpcpb:: RawCasResponse ) ;
318359impl SingleKey for kvrpcpb:: RawCasRequest {
319360 fn key ( & self ) -> & Vec < u8 > {
320361 & self . key
@@ -445,6 +486,7 @@ macro_rules! impl_raw_rpc_request {
445486
446487impl_raw_rpc_request ! ( RawGetRequest ) ;
447488impl_raw_rpc_request ! ( RawBatchGetRequest ) ;
489+ impl_raw_rpc_request ! ( RawGetKeyTtlRequest ) ;
448490impl_raw_rpc_request ! ( RawPutRequest ) ;
449491impl_raw_rpc_request ! ( RawBatchPutRequest ) ;
450492impl_raw_rpc_request ! ( RawDeleteRequest ) ;
@@ -456,6 +498,7 @@ impl_raw_rpc_request!(RawCasRequest);
456498
457499impl HasLocks for kvrpcpb:: RawGetResponse { }
458500impl HasLocks for kvrpcpb:: RawBatchGetResponse { }
501+ impl HasLocks for kvrpcpb:: RawGetKeyTtlResponse { }
459502impl HasLocks for kvrpcpb:: RawPutResponse { }
460503impl HasLocks for kvrpcpb:: RawBatchPutResponse { }
461504impl HasLocks for kvrpcpb:: RawDeleteResponse { }
0 commit comments