File tree Expand file tree Collapse file tree 3 files changed +17
-14
lines changed Expand file tree Collapse file tree 3 files changed +17
-14
lines changed Original file line number Diff line number Diff line change @@ -2,7 +2,6 @@ use crate::client::InnerClient;
2
2
use crate :: codec:: FrontendMessage ;
3
3
use crate :: connection:: RequestMessages ;
4
4
use crate :: Statement ;
5
- use bytes:: BytesMut ;
6
5
use postgres_protocol:: message:: frontend;
7
6
use std:: sync:: { Arc , Weak } ;
8
7
@@ -15,10 +14,12 @@ struct Inner {
15
14
impl Drop for Inner {
16
15
fn drop ( & mut self ) {
17
16
if let Some ( client) = self . client . upgrade ( ) {
18
- let mut buf = BytesMut :: new ( ) ;
19
- frontend:: close ( b'P' , & self . name , & mut buf) . expect ( "portal name not valid" ) ;
20
- frontend:: sync ( & mut buf) ;
21
- let _ = client. send ( RequestMessages :: Single ( FrontendMessage :: Raw ( buf. freeze ( ) ) ) ) ;
17
+ let buf = client. with_buf ( |buf| {
18
+ frontend:: close ( b'P' , & self . name , buf) . unwrap ( ) ;
19
+ frontend:: sync ( buf) ;
20
+ buf. take ( ) . freeze ( )
21
+ } ) ;
22
+ let _ = client. send ( RequestMessages :: Single ( FrontendMessage :: Raw ( buf) ) ) ;
22
23
}
23
24
}
24
25
}
Original file line number Diff line number Diff line change @@ -2,7 +2,6 @@ use crate::client::InnerClient;
2
2
use crate :: codec:: FrontendMessage ;
3
3
use crate :: connection:: RequestMessages ;
4
4
use crate :: types:: Type ;
5
- use bytes:: BytesMut ;
6
5
use postgres_protocol:: message:: frontend;
7
6
use std:: sync:: { Arc , Weak } ;
8
7
@@ -16,10 +15,12 @@ struct StatementInner {
16
15
impl Drop for StatementInner {
17
16
fn drop ( & mut self ) {
18
17
if let Some ( client) = self . client . upgrade ( ) {
19
- let mut buf = BytesMut :: new ( ) ;
20
- frontend:: close ( b'S' , & self . name , & mut buf) . expect ( "statement name not valid" ) ;
21
- frontend:: sync ( & mut buf) ;
22
- let _ = client. send ( RequestMessages :: Single ( FrontendMessage :: Raw ( buf. freeze ( ) ) ) ) ;
18
+ let buf = client. with_buf ( |buf| {
19
+ frontend:: close ( b'S' , & self . name , buf) . unwrap ( ) ;
20
+ frontend:: sync ( buf) ;
21
+ buf. take ( ) . freeze ( )
22
+ } ) ;
23
+ let _ = client. send ( RequestMessages :: Single ( FrontendMessage :: Raw ( buf) ) ) ;
23
24
}
24
25
}
25
26
}
Original file line number Diff line number Diff line change @@ -14,7 +14,6 @@ use crate::{
14
14
use bytes:: IntoBuf ;
15
15
use futures:: { TryStream , TryStreamExt } ;
16
16
use postgres_protocol:: message:: frontend;
17
- use postgres_types:: private:: BytesMut ;
18
17
use std:: error;
19
18
use tokio:: io:: { AsyncRead , AsyncWrite } ;
20
19
@@ -34,17 +33,19 @@ impl<'a> Drop for Transaction<'a> {
34
33
return ;
35
34
}
36
35
37
- let mut buf = BytesMut :: new ( ) ;
38
36
let query = if self . depth == 0 {
39
37
"ROLLBACK" . to_string ( )
40
38
} else {
41
39
format ! ( "ROLLBACK TO sp{}" , self . depth)
42
40
} ;
43
- frontend:: query ( & query, & mut buf) . unwrap ( ) ;
41
+ let buf = self . client . inner ( ) . with_buf ( |buf| {
42
+ frontend:: query ( & query, buf) . unwrap ( ) ;
43
+ buf. take ( ) . freeze ( )
44
+ } ) ;
44
45
let _ = self
45
46
. client
46
47
. inner ( )
47
- . send ( RequestMessages :: Single ( FrontendMessage :: Raw ( buf. freeze ( ) ) ) ) ;
48
+ . send ( RequestMessages :: Single ( FrontendMessage :: Raw ( buf) ) ) ;
48
49
}
49
50
}
50
51
You can’t perform that action at this time.
0 commit comments