1313//! use postgres_large_object::{LargeObjectExt, LargeObjectTransactionExt, Mode};
1414//!
1515//! fn main() {
16- //! let conn = Connection::connect("postgres://postgres@localhost", & SslMode::None).unwrap();
16+ //! let conn = Connection::connect("postgres://postgres@localhost", SslMode::None).unwrap();
1717//!
1818//! let mut file = File::open("vacation_photos.tar.gz").unwrap();
1919//! let trans = conn.transaction().unwrap();
3030//! io::copy(&mut large_object, &mut file).unwrap();
3131//! }
3232//! ```
33- #![ doc( html_root_url="https://sfackler.github.io/rust-postgres-large-object/doc/v0.3.4 " ) ]
33+ #![ doc( html_root_url="https://sfackler.github.io/rust-postgres-large-object/doc/v0.4.0 " ) ]
3434
3535extern crate postgres;
3636
@@ -54,7 +54,8 @@ pub trait LargeObjectExt {
5454impl < T : GenericConnection > LargeObjectExt for T {
5555 fn create_large_object ( & self ) -> Result < Oid > {
5656 let stmt = try!( self . prepare_cached ( "SELECT pg_catalog.lo_create(0)" ) ) ;
57- stmt. query ( & [ ] ) . map ( |r| r. iter ( ) . next ( ) . unwrap ( ) . get ( 0 ) )
57+ let r = stmt. query ( & [ ] ) . map ( |r| r. iter ( ) . next ( ) . unwrap ( ) . get ( 0 ) ) ;
58+ r
5859 }
5960
6061 fn delete_large_object ( & self , oid : Oid ) -> Result < ( ) > {
@@ -162,9 +163,9 @@ impl<'a> LargeObject<'a> {
162163 let len = if len <= i32:: max_value ( ) as i64 {
163164 len as i32
164165 } else {
165- return Err ( Error :: IoError ( io:: Error :: new ( io:: ErrorKind :: InvalidInput ,
166- "The database does not support objects \
167- larger than 2GB") ) ) ;
166+ return Err ( Error :: Io ( io:: Error :: new ( io:: ErrorKind :: InvalidInput ,
167+ "The database does not support objects larger \
168+ than 2GB") ) ) ;
168169 } ;
169170 let stmt = try!( self . trans . prepare_cached ( "SELECT pg_catalog.lo_truncate($1, $2)" ) ) ;
170171 stmt. execute ( & [ & self . fd , & len] ) . map ( |_| ( ) )
@@ -194,9 +195,8 @@ impl<'a> io::Read for LargeObject<'a> {
194195 fn read ( & mut self , mut buf : & mut [ u8 ] ) -> io:: Result < usize > {
195196 let stmt = try_io ! ( self . trans. prepare_cached( "SELECT pg_catalog.loread($1, $2)" ) ) ;
196197 let cap = cmp:: min ( buf. len ( ) , i32:: MAX as usize ) as i32 ;
197- let row = try_io ! ( stmt. query( & [ & self . fd, & cap] ) ) . into_iter ( ) . next ( ) . unwrap ( ) ;
198- let out = row. get_bytes ( 0 ) . unwrap ( ) ;
199- buf. write ( out)
198+ let rows = try_io ! ( stmt. query( & [ & self . fd, & cap] ) ) ;
199+ buf. write ( rows. get ( 0 ) . get_bytes ( 0 ) . unwrap ( ) )
200200 }
201201}
202202
@@ -259,35 +259,35 @@ mod test {
259259
260260 #[ test]
261261 fn test_create_delete ( ) {
262- let conn = Connection :: connect ( "postgres://postgres@localhost" , & SslMode :: None ) . unwrap ( ) ;
262+ let conn = Connection :: connect ( "postgres://postgres@localhost" , SslMode :: None ) . unwrap ( ) ;
263263 let oid = conn. create_large_object ( ) . unwrap ( ) ;
264264 conn. delete_large_object ( oid) . unwrap ( ) ;
265265 }
266266
267267 #[ test]
268268 fn test_delete_bogus ( ) {
269- let conn = Connection :: connect ( "postgres://postgres@localhost" , & SslMode :: None ) . unwrap ( ) ;
269+ let conn = Connection :: connect ( "postgres://postgres@localhost" , SslMode :: None ) . unwrap ( ) ;
270270 match conn. delete_large_object ( 0 ) {
271271 Ok ( ( ) ) => panic ! ( "unexpected success" ) ,
272- Err ( Error :: DbError ( ref e) ) if e. code ( ) == & SqlState :: UndefinedObject => { }
272+ Err ( Error :: Db ( ref e) ) if e. code == SqlState :: UndefinedObject => { }
273273 Err ( e) => panic ! ( "unexpected error: {:?}" , e) ,
274274 }
275275 }
276276
277277 #[ test]
278278 fn test_open_bogus ( ) {
279- let conn = Connection :: connect ( "postgres://postgres@localhost" , & SslMode :: None ) . unwrap ( ) ;
279+ let conn = Connection :: connect ( "postgres://postgres@localhost" , SslMode :: None ) . unwrap ( ) ;
280280 let trans = conn. transaction ( ) . unwrap ( ) ;
281281 match trans. open_large_object ( 0 , Mode :: Read ) {
282282 Ok ( _) => panic ! ( "unexpected success" ) ,
283- Err ( Error :: DbError ( ref e) ) if e. code ( ) == & SqlState :: UndefinedObject => { }
283+ Err ( Error :: Db ( ref e) ) if e. code == SqlState :: UndefinedObject => { }
284284 Err ( e) => panic ! ( "unexpected error: {:?}" , e) ,
285285 } ;
286286 }
287287
288288 #[ test]
289289 fn test_open_finish ( ) {
290- let conn = Connection :: connect ( "postgres://postgres@localhost" , & SslMode :: None ) . unwrap ( ) ;
290+ let conn = Connection :: connect ( "postgres://postgres@localhost" , SslMode :: None ) . unwrap ( ) ;
291291 let trans = conn. transaction ( ) . unwrap ( ) ;
292292 let oid = trans. create_large_object ( ) . unwrap ( ) ;
293293 let lo = trans. open_large_object ( oid, Mode :: Read ) . unwrap ( ) ;
@@ -298,7 +298,7 @@ mod test {
298298 fn test_write_read ( ) {
299299 use std:: io:: { Write , Read } ;
300300
301- let conn = Connection :: connect ( "postgres://postgres@localhost" , & SslMode :: None ) . unwrap ( ) ;
301+ let conn = Connection :: connect ( "postgres://postgres@localhost" , SslMode :: None ) . unwrap ( ) ;
302302 let trans = conn. transaction ( ) . unwrap ( ) ;
303303 let oid = trans. create_large_object ( ) . unwrap ( ) ;
304304 let mut lo = trans. open_large_object ( oid, Mode :: Write ) . unwrap ( ) ;
@@ -313,7 +313,7 @@ mod test {
313313 fn test_seek_tell ( ) {
314314 use std:: io:: { Write , Read , Seek , SeekFrom } ;
315315
316- let conn = Connection :: connect ( "postgres://postgres@localhost" , & SslMode :: None ) . unwrap ( ) ;
316+ let conn = Connection :: connect ( "postgres://postgres@localhost" , SslMode :: None ) . unwrap ( ) ;
317317 let trans = conn. transaction ( ) . unwrap ( ) ;
318318 let oid = trans. create_large_object ( ) . unwrap ( ) ;
319319 let mut lo = trans. open_large_object ( oid, Mode :: Write ) . unwrap ( ) ;
@@ -337,7 +337,7 @@ mod test {
337337 fn test_write_with_read_fd ( ) {
338338 use std:: io:: Write ;
339339
340- let conn = Connection :: connect ( "postgres://postgres@localhost" , & SslMode :: None ) . unwrap ( ) ;
340+ let conn = Connection :: connect ( "postgres://postgres@localhost" , SslMode :: None ) . unwrap ( ) ;
341341 let trans = conn. transaction ( ) . unwrap ( ) ;
342342 let oid = trans. create_large_object ( ) . unwrap ( ) ;
343343 let mut lo = trans. open_large_object ( oid, Mode :: Read ) . unwrap ( ) ;
@@ -348,7 +348,7 @@ mod test {
348348 fn test_truncate ( ) {
349349 use std:: io:: { Seek , SeekFrom , Write , Read } ;
350350
351- let conn = Connection :: connect ( "postgres://postgres@localhost" , & SslMode :: None ) . unwrap ( ) ;
351+ let conn = Connection :: connect ( "postgres://postgres@localhost" , SslMode :: None ) . unwrap ( ) ;
352352 let trans = conn. transaction ( ) . unwrap ( ) ;
353353 let oid = trans. create_large_object ( ) . unwrap ( ) ;
354354 let mut lo = trans. open_large_object ( oid, Mode :: Write ) . unwrap ( ) ;
0 commit comments