Skip to content

Commit 9e42c67

Browse files
committed
Use the client buffer for cleanup
1 parent 20adbaf commit 9e42c67

File tree

3 files changed

+17
-14
lines changed

3 files changed

+17
-14
lines changed

tokio-postgres/src/portal.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ use crate::client::InnerClient;
22
use crate::codec::FrontendMessage;
33
use crate::connection::RequestMessages;
44
use crate::Statement;
5-
use bytes::BytesMut;
65
use postgres_protocol::message::frontend;
76
use std::sync::{Arc, Weak};
87

@@ -15,10 +14,12 @@ struct Inner {
1514
impl Drop for Inner {
1615
fn drop(&mut self) {
1716
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)));
2223
}
2324
}
2425
}

tokio-postgres/src/statement.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ use crate::client::InnerClient;
22
use crate::codec::FrontendMessage;
33
use crate::connection::RequestMessages;
44
use crate::types::Type;
5-
use bytes::BytesMut;
65
use postgres_protocol::message::frontend;
76
use std::sync::{Arc, Weak};
87

@@ -16,10 +15,12 @@ struct StatementInner {
1615
impl Drop for StatementInner {
1716
fn drop(&mut self) {
1817
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)));
2324
}
2425
}
2526
}

tokio-postgres/src/transaction.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ use crate::{
1414
use bytes::IntoBuf;
1515
use futures::{TryStream, TryStreamExt};
1616
use postgres_protocol::message::frontend;
17-
use postgres_types::private::BytesMut;
1817
use std::error;
1918
use tokio::io::{AsyncRead, AsyncWrite};
2019

@@ -34,17 +33,19 @@ impl<'a> Drop for Transaction<'a> {
3433
return;
3534
}
3635

37-
let mut buf = BytesMut::new();
3836
let query = if self.depth == 0 {
3937
"ROLLBACK".to_string()
4038
} else {
4139
format!("ROLLBACK TO sp{}", self.depth)
4240
};
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+
});
4445
let _ = self
4546
.client
4647
.inner()
47-
.send(RequestMessages::Single(FrontendMessage::Raw(buf.freeze())));
48+
.send(RequestMessages::Single(FrontendMessage::Raw(buf)));
4849
}
4950
}
5051

0 commit comments

Comments
 (0)