Skip to content

Commit 801324d

Browse files
committed
Avoid double allocations
1 parent f4029d3 commit 801324d

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@ readme = "README.md"
1010
keywords = ["database", "sql", "postgres"]
1111

1212
[dependencies]
13-
postgres = "0.6.4"
13+
postgres = "0.6.5"

src/lib.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
//! util::copy(&mut large_object, &mut file).unwrap();
3232
//! }
3333
//! ```
34-
#![feature(unsafe_destructor, io, core)]
34+
#![feature(unsafe_destructor, io, old_io, core)]
3535
#![doc(html_root_url="https://sfackler.github.io/rust-postgres-large-object/doc")]
3636

3737
extern crate postgres;
@@ -207,7 +207,8 @@ impl<'a> Reader for LargeObject<'a> {
207207
fn read(&mut self, buf: &mut [u8]) -> IoResult<usize> {
208208
let stmt = try_old_io!(self.trans.prepare_cached("SELECT pg_catalog.loread($1, $2)"));
209209
let cap = cmp::min(buf.len(), i32::MAX as usize) as i32;
210-
let out: Vec<u8> = try_old_io!(stmt.query(&[&self.fd, &cap])).next().unwrap().get(0);
210+
let row = try_old_io!(stmt.query(&[&self.fd, &cap])).next().unwrap();
211+
let out = row.get_bytes(0).unwrap();
211212

212213
if !buf.is_empty() && out.is_empty() {
213214
return Err(old_io::standard_error(IoErrorKind::EndOfFile));
@@ -222,7 +223,8 @@ impl<'a> io::Read for LargeObject<'a> {
222223
fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
223224
let stmt = try_io!(self.trans.prepare_cached("SELECT pg_catalog.loread($1, $2)"));
224225
let cap = cmp::min(buf.len(), i32::MAX as usize) as i32;
225-
let out: Vec<u8> = try_io!(stmt.query(&[&self.fd, &cap])).next().unwrap().get(0);
226+
let row = try_io!(stmt.query(&[&self.fd, &cap])).next().unwrap();
227+
let out = row.get_bytes(0).unwrap();
226228

227229
bytes::copy_memory(buf, &out);
228230
Ok(out.len())

0 commit comments

Comments
 (0)