Skip to content

Commit 2a97cc3

Browse files
authored
Merge pull request #2 from pgerber/space-in-version
Do not panic when version looks like `10.3 (Debian 10.3-1.pgdg90+1)`
2 parents 8513eae + 8233d07 commit 2a97cc3

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

src/lib.rs

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,7 @@ pub trait LargeObjectTransactionExt {
9797
impl<'conn> LargeObjectTransactionExt for Transaction<'conn> {
9898
fn open_large_object<'a>(&'a self, oid: Oid, mode: Mode) -> Result<LargeObject<'a>> {
9999
let version = self.connection().parameter("server_version").unwrap();
100-
let mut version = version.split('.');
101-
let major: i32 = version.next().unwrap().parse().unwrap();
102-
let minor: i32 = version.next().unwrap().parse().unwrap();
100+
let (major, minor) = parse_version(&version);
103101
let has_64 = major > 9 || (major == 9 && minor >= 3);
104102

105103
let stmt = self.prepare_cached("SELECT pg_catalog.lo_open($1, $2)")?;
@@ -264,12 +262,20 @@ impl<'a> io::Seek for LargeObject<'a> {
264262
}
265263
}
266264

265+
fn parse_version(version: &str) -> (i32, i32) {
266+
let version = version.split(' ').next().unwrap();
267+
let mut version = version.split('.');
268+
let major: i32 = version.next().unwrap().parse().unwrap();
269+
let minor: i32 = version.next().unwrap().parse().unwrap();
270+
(major, minor)
271+
}
272+
267273
#[cfg(test)]
268274
mod test {
269275
use postgres::{Connection, TlsMode};
270276
use postgres::error::UNDEFINED_OBJECT;
271277

272-
use {LargeObjectExt, LargeObjectTransactionExt, Mode};
278+
use {LargeObjectExt, LargeObjectTransactionExt, Mode, parse_version};
273279

274280
#[test]
275281
fn test_create_delete() {
@@ -379,4 +385,13 @@ mod test {
379385
lo.read_to_end(&mut buf).unwrap();
380386
assert_eq!(buf, b"hello\0\0\0\0\0");
381387
}
388+
389+
#[test]
390+
fn test_parse_version() {
391+
let version = parse_version("10.3 (Debian 10.3-1.pgdg90+1)");
392+
assert_eq!(version, (10, 3));
393+
394+
let version = parse_version("9.5");
395+
assert_eq!(version, (9, 5));
396+
}
382397
}

0 commit comments

Comments
 (0)