Skip to content

Commit 4e0abc2

Browse files
committed
Bump postgres version
1 parent b568f50 commit 4e0abc2

File tree

2 files changed

+15
-13
lines changed

2 files changed

+15
-13
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,5 @@ repository = "https://github.com/sfackler/rust-postgres-range"
88
documentation = "https://sfackler.github.io/doc/postgres_range"
99

1010
[dependencies]
11-
postgres = "0.4"
11+
postgres = "0.5.1"
1212
time = "0.1"

src/impls/mod.rs

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ macro_rules! from_sql_impl {
2323
check_types!(ty, $($oid),+);
2424

2525
match raw {
26-
Some(mut raw) => ::postgres::types::RawFromSql::raw_from_sql(&mut raw).map(Some),
26+
Some(mut raw) => ::postgres::types::RawFromSql::raw_from_sql(ty, &mut raw).map(Some),
2727
None => Ok(None),
2828
}
2929
}
@@ -49,7 +49,7 @@ macro_rules! to_sql_impl {
4949
check_types!(ty, $($oid),+);
5050

5151
let mut writer = vec![];
52-
try!(self.raw_to_sql(&mut writer));
52+
try!(self.raw_to_sql(ty, &mut writer));
5353
Ok(Some(writer))
5454
}
5555
}
@@ -73,14 +73,14 @@ const RANGE_LOWER_INCLUSIVE: i8 = 0b0000_0010;
7373
const RANGE_EMPTY: i8 = 0b0000_0001;
7474

7575
impl<T> RawFromSql for Range<T> where T: PartialOrd+Normalizable+RawFromSql {
76-
fn raw_from_sql<R: Reader>(rdr: &mut R) -> postgres::Result<Range<T>> {
76+
fn raw_from_sql<R: Reader>(ty: &Type, rdr: &mut R) -> postgres::Result<Range<T>> {
7777
let t = try!(rdr.read_i8());
7878

7979
if t & RANGE_EMPTY != 0 {
8080
return Ok(Range::empty());
8181
}
8282

83-
fn make_bound<S, T, R>(rdr: &mut R, tag: i8, bound_flag: i8, inclusive_flag: i8)
83+
fn make_bound<S, T, R>(ty: &Type, rdr: &mut R, tag: i8, bound_flag: i8, inclusive_flag: i8)
8484
-> postgres::Result<Option<RangeBound<S, T>>>
8585
where S: BoundSided, T: PartialOrd+Normalizable+RawFromSql, R: Reader {
8686
match tag & bound_flag {
@@ -91,7 +91,7 @@ impl<T> RawFromSql for Range<T> where T: PartialOrd+Normalizable+RawFromSql {
9191
};
9292
let len = try!(rdr.read_be_i32()) as usize;
9393
let mut limit = LimitReader::new(rdr.by_ref(), len);
94-
let bound = try!(RawFromSql::raw_from_sql(&mut limit));
94+
let bound = try!(RawFromSql::raw_from_sql(ty, &mut limit));
9595
if limit.limit() != 0 {
9696
return Err(postgres::Error::BadData);
9797
}
@@ -101,8 +101,9 @@ impl<T> RawFromSql for Range<T> where T: PartialOrd+Normalizable+RawFromSql {
101101
}
102102
}
103103

104-
let lower = try!(make_bound(rdr, t, RANGE_LOWER_UNBOUNDED, RANGE_LOWER_INCLUSIVE));
105-
let upper = try!(make_bound(rdr, t, RANGE_UPPER_UNBOUNDED, RANGE_UPPER_INCLUSIVE));
104+
let element_type = ty.element_type().unwrap();
105+
let lower = try!(make_bound(&element_type, rdr, t, RANGE_LOWER_UNBOUNDED, RANGE_LOWER_INCLUSIVE));
106+
let upper = try!(make_bound(&element_type, rdr, t, RANGE_UPPER_UNBOUNDED, RANGE_UPPER_INCLUSIVE));
106107
Ok(Range::new(lower, upper))
107108
}
108109
}
@@ -112,7 +113,7 @@ from_sql_impl!(i64, Type::Int8Range);
112113
from_sql_impl!(Timespec, Type::TsRange, Type::TstzRange);
113114

114115
impl<T> RawToSql for Range<T> where T: PartialOrd+Normalizable+RawToSql {
115-
fn raw_to_sql<W: Writer>(&self, buf: &mut W) -> postgres::Result<()> {
116+
fn raw_to_sql<W: Writer>(&self, ty: &Type, buf: &mut W) -> postgres::Result<()> {
116117
let mut tag = 0;
117118
if self.is_empty() {
118119
tag |= RANGE_EMPTY;
@@ -131,19 +132,20 @@ impl<T> RawToSql for Range<T> where T: PartialOrd+Normalizable+RawToSql {
131132

132133
try!(buf.write_i8(tag));
133134

134-
fn write_value<S, T, W>(buf: &mut W, v: Option<&RangeBound<S, T>>) -> postgres::Result<()>
135+
fn write_value<S, T, W>(ty: &Type, buf: &mut W, v: Option<&RangeBound<S, T>>) -> postgres::Result<()>
135136
where S: BoundSided, T: RawToSql, W: Writer {
136137
if let Some(bound) = v {
137138
let mut inner_buf = vec![];
138-
try!(bound.value.raw_to_sql(&mut inner_buf));
139+
try!(bound.value.raw_to_sql(ty, &mut inner_buf));
139140
try!(buf.write_be_u32(inner_buf.len() as u32));
140141
try!(buf.write(&*inner_buf));
141142
}
142143
Ok(())
143144
}
144145

145-
try!(write_value(buf, self.lower()));
146-
try!(write_value(buf, self.upper()));
146+
let element_type = ty.element_type().unwrap();
147+
try!(write_value(&element_type, buf, self.lower()));
148+
try!(write_value(&element_type, buf, self.upper()));
147149

148150
Ok(())
149151
}

0 commit comments

Comments
 (0)