@@ -4,16 +4,17 @@ use core::ops::Range;
4
4
use std:: { marker:: PhantomData , str:: FromStr , sync:: Arc , u32} ;
5
5
6
6
use slog:: { Drain , Logger } ;
7
+
7
8
use tikv_client_common:: Error ;
8
9
use tikv_client_proto:: metapb;
9
10
10
11
use crate :: {
12
+ Backoff ,
11
13
backoff:: DEFAULT_REGION_BACKOFF ,
14
+ BoundRange ,
15
+ ColumnFamily ,
12
16
config:: Config ,
13
- pd:: { PdClient , PdRpcClient } ,
14
- raw:: lowering:: * ,
15
- request:: { request_codec:: RequestCodec , Collect , CollectSingle , Plan } ,
16
- Backoff , BoundRange , ColumnFamily , Key , KvPair , Result , Value ,
17
+ Key , KvPair , pd:: { PdClient , PdRpcClient } , raw:: lowering:: * , request:: { Collect , CollectSingle , Plan , request_codec:: RequestCodec } , Result , Value ,
17
18
} ;
18
19
19
20
const MAX_RAW_KV_SCAN_LIMIT : u32 = 10240 ;
@@ -53,9 +54,10 @@ impl<C: RequestCodec> Client<C, PdRpcClient<C>> {
53
54
/// ```
54
55
pub async fn new < S : Into < String > > (
55
56
pd_endpoints : Vec < S > ,
57
+ codec : C ,
56
58
logger : Option < Logger > ,
57
59
) -> Result < Self > {
58
- Self :: new_with_config ( pd_endpoints, Config :: default ( ) , logger) . await
60
+ Self :: new_with_config ( pd_endpoints, Config :: default ( ) , codec , logger) . await
59
61
}
60
62
61
63
/// Create a raw [`Client`] with a custom configuration, and connect to the TiKV cluster.
@@ -83,6 +85,7 @@ impl<C: RequestCodec> Client<C, PdRpcClient<C>> {
83
85
pub async fn new_with_config < S : Into < String > > (
84
86
pd_endpoints : Vec < S > ,
85
87
config : Config ,
88
+ codec : C ,
86
89
optional_logger : Option < Logger > ,
87
90
) -> Result < Self > {
88
91
let logger = optional_logger. unwrap_or_else ( || {
@@ -98,7 +101,7 @@ impl<C: RequestCodec> Client<C, PdRpcClient<C>> {
98
101
debug ! ( logger, "creating new raw client" ) ;
99
102
let pd_endpoints: Vec < String > = pd_endpoints. into_iter ( ) . map ( Into :: into) . collect ( ) ;
100
103
let rpc =
101
- Arc :: new ( PdRpcClient :: connect ( & pd_endpoints, config, false , logger. clone ( ) ) . await ?) ;
104
+ Arc :: new ( PdRpcClient :: connect ( & pd_endpoints, config, codec , logger. clone ( ) ) . await ?) ;
102
105
Ok ( Client {
103
106
rpc,
104
107
cf : None ,
@@ -212,7 +215,7 @@ impl<C: RequestCodec, PdC: PdClient> Client<C, PdC> {
212
215
/// ```
213
216
pub async fn batch_get (
214
217
& self ,
215
- keys : impl IntoIterator < Item = impl Into < Key > > ,
218
+ keys : impl IntoIterator < Item = impl Into < Key > > ,
216
219
) -> Result < Vec < KvPair > > {
217
220
debug ! ( self . logger, "invoking raw batch_get request" ) ;
218
221
let request =
@@ -274,7 +277,7 @@ impl<C: RequestCodec, PdC: PdClient> Client<C, PdC> {
274
277
/// ```
275
278
pub async fn batch_put (
276
279
& self ,
277
- pairs : impl IntoIterator < Item = impl Into < KvPair > > ,
280
+ pairs : impl IntoIterator < Item = impl Into < KvPair > > ,
278
281
) -> Result < ( ) > {
279
282
debug ! ( self . logger, "invoking raw batch_put request" ) ;
280
283
let request = new_raw_batch_put_request :: < C > (
@@ -336,7 +339,7 @@ impl<C: RequestCodec, PdC: PdClient> Client<C, PdC> {
336
339
/// let result: () = req.await.unwrap();
337
340
/// # });
338
341
/// ```
339
- pub async fn batch_delete ( & self , keys : impl IntoIterator < Item = impl Into < Key > > ) -> Result < ( ) > {
342
+ pub async fn batch_delete ( & self , keys : impl IntoIterator < Item = impl Into < Key > > ) -> Result < ( ) > {
340
343
debug ! ( self . logger, "invoking raw batch_delete request" ) ;
341
344
self . assert_non_atomic ( ) ?;
342
345
let request =
@@ -462,7 +465,7 @@ impl<C: RequestCodec, PdC: PdClient> Client<C, PdC> {
462
465
/// ```
463
466
pub async fn batch_scan (
464
467
& self ,
465
- ranges : impl IntoIterator < Item = impl Into < BoundRange > > ,
468
+ ranges : impl IntoIterator < Item = impl Into < BoundRange > > ,
466
469
each_limit : u32 ,
467
470
) -> Result < Vec < KvPair > > {
468
471
debug ! ( self . logger, "invoking raw batch_scan request" ) ;
@@ -494,7 +497,7 @@ impl<C: RequestCodec, PdC: PdClient> Client<C, PdC> {
494
497
/// ```
495
498
pub async fn batch_scan_keys (
496
499
& self ,
497
- ranges : impl IntoIterator < Item = impl Into < BoundRange > > ,
500
+ ranges : impl IntoIterator < Item = impl Into < BoundRange > > ,
498
501
each_limit : u32 ,
499
502
) -> Result < Vec < Key > > {
500
503
debug ! ( self . logger, "invoking raw batch_scan_keys request" ) ;
@@ -544,7 +547,7 @@ impl<C: RequestCodec, PdC: PdClient> Client<C, PdC> {
544
547
& self ,
545
548
copr_name : impl Into < String > ,
546
549
copr_version_req : impl Into < String > ,
547
- ranges : impl IntoIterator < Item = impl Into < BoundRange > > ,
550
+ ranges : impl IntoIterator < Item = impl Into < BoundRange > > ,
548
551
request_builder : impl Fn ( metapb:: Region , Vec < Range < Key > > ) -> Vec < u8 > + Send + Sync + ' static ,
549
552
) -> Result < Vec < ( Vec < u8 > , Vec < Range < Key > > ) > > {
550
553
let copr_version_req = copr_version_req. into ( ) ;
@@ -590,7 +593,7 @@ impl<C: RequestCodec, PdC: PdClient> Client<C, PdC> {
590
593
591
594
async fn batch_scan_inner (
592
595
& self ,
593
- ranges : impl IntoIterator < Item = impl Into < BoundRange > > ,
596
+ ranges : impl IntoIterator < Item = impl Into < BoundRange > > ,
594
597
each_limit : u32 ,
595
598
key_only : bool ,
596
599
) -> Result < Vec < KvPair > > {
@@ -625,13 +628,16 @@ impl<C: RequestCodec, PdC: PdClient> Client<C, PdC> {
625
628
626
629
#[ cfg( test) ]
627
630
mod tests {
628
- use super :: * ;
631
+ use std:: { any:: Any , sync:: Arc } ;
632
+
633
+ use tikv_client_proto:: kvrpcpb;
634
+
629
635
use crate :: {
630
636
mock:: { MockKvClient , MockPdClient } ,
631
637
Result ,
632
638
} ;
633
- use std :: { any :: Any , sync :: Arc } ;
634
- use tikv_client_proto :: kvrpcpb ;
639
+
640
+ use super :: * ;
635
641
636
642
#[ tokio:: test]
637
643
async fn test_raw_coprocessor ( ) -> Result < ( ) > {
@@ -687,13 +693,13 @@ mod tests {
687
693
"2:[Key(0A)..Key(0F), Key(14)..Key(FAFA)]" . to_string( ) ,
688
694
vec![
689
695
Key :: from( vec![ 10 ] ) ..Key :: from( vec![ 15 ] ) ,
690
- Key :: from( vec![ 20 ] ) ..Key :: from( vec![ 250 , 250 ] )
696
+ Key :: from( vec![ 20 ] ) ..Key :: from( vec![ 250 , 250 ] ) ,
691
697
]
692
698
) ,
693
699
(
694
700
"3:[Key(FAFA)..Key()]" . to_string( ) ,
695
701
vec![ Key :: from( vec![ 250 , 250 ] ) ..Key :: from( vec![ ] ) ]
696
- )
702
+ ) ,
697
703
]
698
704
) ;
699
705
Ok ( ( ) )
0 commit comments