13
13
//! use postgres_large_object::{LargeObjectExt, LargeObjectTransactionExt, Mode};
14
14
//!
15
15
//! fn main() {
16
- //! let conn = Connection::connect("postgres://postgres@localhost", & SslMode::None).unwrap();
16
+ //! let conn = Connection::connect("postgres://postgres@localhost", SslMode::None).unwrap();
17
17
//!
18
18
//! let mut file = File::open("vacation_photos.tar.gz").unwrap();
19
19
//! let trans = conn.transaction().unwrap();
@@ -54,7 +54,8 @@ pub trait LargeObjectExt {
54
54
impl < T : GenericConnection > LargeObjectExt for T {
55
55
fn create_large_object ( & self ) -> Result < Oid > {
56
56
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
58
59
}
59
60
60
61
fn delete_large_object ( & self , oid : Oid ) -> Result < ( ) > {
@@ -162,9 +163,9 @@ impl<'a> LargeObject<'a> {
162
163
let len = if len <= i32:: max_value ( ) as i64 {
163
164
len as i32
164
165
} 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") ) ) ;
168
169
} ;
169
170
let stmt = try!( self . trans . prepare_cached ( "SELECT pg_catalog.lo_truncate($1, $2)" ) ) ;
170
171
stmt. execute ( & [ & self . fd , & len] ) . map ( |_| ( ) )
@@ -194,9 +195,8 @@ impl<'a> io::Read for LargeObject<'a> {
194
195
fn read ( & mut self , mut buf : & mut [ u8 ] ) -> io:: Result < usize > {
195
196
let stmt = try_io ! ( self . trans. prepare_cached( "SELECT pg_catalog.loread($1, $2)" ) ) ;
196
197
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 ( ) )
200
200
}
201
201
}
202
202
@@ -259,35 +259,35 @@ mod test {
259
259
260
260
#[ test]
261
261
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 ( ) ;
263
263
let oid = conn. create_large_object ( ) . unwrap ( ) ;
264
264
conn. delete_large_object ( oid) . unwrap ( ) ;
265
265
}
266
266
267
267
#[ test]
268
268
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 ( ) ;
270
270
match conn. delete_large_object ( 0 ) {
271
271
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 => { }
273
273
Err ( e) => panic ! ( "unexpected error: {:?}" , e) ,
274
274
}
275
275
}
276
276
277
277
#[ test]
278
278
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 ( ) ;
280
280
let trans = conn. transaction ( ) . unwrap ( ) ;
281
281
match trans. open_large_object ( 0 , Mode :: Read ) {
282
282
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 => { }
284
284
Err ( e) => panic ! ( "unexpected error: {:?}" , e) ,
285
285
} ;
286
286
}
287
287
288
288
#[ test]
289
289
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 ( ) ;
291
291
let trans = conn. transaction ( ) . unwrap ( ) ;
292
292
let oid = trans. create_large_object ( ) . unwrap ( ) ;
293
293
let lo = trans. open_large_object ( oid, Mode :: Read ) . unwrap ( ) ;
@@ -298,7 +298,7 @@ mod test {
298
298
fn test_write_read ( ) {
299
299
use std:: io:: { Write , Read } ;
300
300
301
- let conn = Connection :: connect ( "postgres://postgres@localhost" , & SslMode :: None ) . unwrap ( ) ;
301
+ let conn = Connection :: connect ( "postgres://postgres@localhost" , SslMode :: None ) . unwrap ( ) ;
302
302
let trans = conn. transaction ( ) . unwrap ( ) ;
303
303
let oid = trans. create_large_object ( ) . unwrap ( ) ;
304
304
let mut lo = trans. open_large_object ( oid, Mode :: Write ) . unwrap ( ) ;
@@ -313,7 +313,7 @@ mod test {
313
313
fn test_seek_tell ( ) {
314
314
use std:: io:: { Write , Read , Seek , SeekFrom } ;
315
315
316
- let conn = Connection :: connect ( "postgres://postgres@localhost" , & SslMode :: None ) . unwrap ( ) ;
316
+ let conn = Connection :: connect ( "postgres://postgres@localhost" , SslMode :: None ) . unwrap ( ) ;
317
317
let trans = conn. transaction ( ) . unwrap ( ) ;
318
318
let oid = trans. create_large_object ( ) . unwrap ( ) ;
319
319
let mut lo = trans. open_large_object ( oid, Mode :: Write ) . unwrap ( ) ;
@@ -337,7 +337,7 @@ mod test {
337
337
fn test_write_with_read_fd ( ) {
338
338
use std:: io:: Write ;
339
339
340
- let conn = Connection :: connect ( "postgres://postgres@localhost" , & SslMode :: None ) . unwrap ( ) ;
340
+ let conn = Connection :: connect ( "postgres://postgres@localhost" , SslMode :: None ) . unwrap ( ) ;
341
341
let trans = conn. transaction ( ) . unwrap ( ) ;
342
342
let oid = trans. create_large_object ( ) . unwrap ( ) ;
343
343
let mut lo = trans. open_large_object ( oid, Mode :: Read ) . unwrap ( ) ;
@@ -348,7 +348,7 @@ mod test {
348
348
fn test_truncate ( ) {
349
349
use std:: io:: { Seek , SeekFrom , Write , Read } ;
350
350
351
- let conn = Connection :: connect ( "postgres://postgres@localhost" , & SslMode :: None ) . unwrap ( ) ;
351
+ let conn = Connection :: connect ( "postgres://postgres@localhost" , SslMode :: None ) . unwrap ( ) ;
352
352
let trans = conn. transaction ( ) . unwrap ( ) ;
353
353
let oid = trans. create_large_object ( ) . unwrap ( ) ;
354
354
let mut lo = trans. open_large_object ( oid, Mode :: Write ) . unwrap ( ) ;
0 commit comments