File tree 2 files changed +18
-2
lines changed
2 files changed +18
-2
lines changed Original file line number Diff line number Diff line change @@ -25,12 +25,24 @@ pub trait TimestampExt: Sized {
25
25
26
26
impl TimestampExt for Timestamp {
27
27
fn version ( & self ) -> u64 {
28
+ if self . physical == i64:: MAX && self . logical == i64:: MAX {
29
+ return u64:: MAX ;
30
+ }
31
+
28
32
( ( self . physical << PHYSICAL_SHIFT_BITS ) + self . logical )
29
33
. try_into ( )
30
34
. expect ( "Overflow converting timestamp to version" )
31
35
}
32
36
33
37
fn from_version ( version : u64 ) -> Self {
38
+ if version == u64:: MAX {
39
+ return Self {
40
+ physical : i64:: MAX ,
41
+ logical : i64:: MAX ,
42
+ suffix_bits : 0 ,
43
+ } ;
44
+ }
45
+
34
46
let version = version as i64 ;
35
47
Self {
36
48
physical : version >> PHYSICAL_SHIFT_BITS ,
@@ -41,7 +53,7 @@ impl TimestampExt for Timestamp {
41
53
}
42
54
43
55
fn try_from_version ( version : u64 ) -> Option < Self > {
44
- if version == 0 {
56
+ if version == 0 || ( version >= i64 :: MAX as u64 && version != u64 :: MAX ) {
45
57
None
46
58
} else {
47
59
Some ( Self :: from_version ( version) )
Original file line number Diff line number Diff line change @@ -276,7 +276,11 @@ impl Client {
276
276
Ok ( res)
277
277
}
278
278
279
- fn new_transaction ( & self , timestamp : Timestamp , options : TransactionOptions ) -> Transaction {
279
+ pub fn new_transaction (
280
+ & self ,
281
+ timestamp : Timestamp ,
282
+ options : TransactionOptions ,
283
+ ) -> Transaction {
280
284
let logger = self . logger . new ( o ! ( "child" => 1 ) ) ;
281
285
Transaction :: new ( timestamp, self . pd . clone ( ) , options, logger)
282
286
}
You can’t perform that action at this time.
0 commit comments