Skip to content

Commit a2487c0

Browse files
committed
Support INT8RANGE[]
1 parent fe2238f commit a2487c0

3 files changed

Lines changed: 22 additions & 3 deletions

File tree

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,10 @@ types. The driver currently supports the following conversions:
310310
<td>types::array::ArrayBase&lt;Option&lt;Range&lt;Timespec&gt;&gt;&gt;</td>
311311
<td>TSRANGE[], TSTZRANGE[], TSRANGE[][], ...</td>
312312
</tr>
313+
<tr>
314+
<td>types::array::ArrayBase&lt;Option&lt;Range&lt;i64&gt;&gt;&gt;</td>
315+
<td>INT8RANGE[], INT8RANGE[][], ...</td>
316+
</tr>
313317
<tr>
314318
<td>std::hashmap::HashMap&lt;~str, Option&lt;~str&gt;&gt;</td>
315319
<td>HSTORE</td>

test.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -523,6 +523,7 @@ fn test_int4rangearray_params() {
523523
}
524524

525525
#[test]
526+
#[cfg(not(travis))]
526527
fn test_tsrangearray_params() {
527528
fn make_check<'a>(time: &'a str) -> (Timespec, &'a str) {
528529
(time::strptime(time, "%Y-%m-%d").unwrap().to_timespec(), time)
@@ -539,6 +540,15 @@ fn test_tsrangearray_params() {
539540
test_array_params!("TSTZRANGE", r1, rs1, r2, rs2, r3, rs3);
540541
}
541542

543+
#[test]
544+
#[cfg(not(travis))]
545+
fn test_int8rangearray_params() {
546+
test_array_params!("INT8RANGE",
547+
Range::new(None, None), "\"(,)\"",
548+
Range::new(Some(RangeBound::new(10i64, Inclusive)), None), "\"[10,)\"",
549+
Range::new(None, Some(RangeBound::new(10i64, Exclusive))), "\"(,10)\"");
550+
}
551+
542552
#[test]
543553
fn test_hstore_params() {
544554
macro_rules! make_map(

types/mod.rs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ static TSRANGEARRAYOID: Oid = 3909;
5858
static TSTZRANGEOID: Oid = 3910;
5959
static TSTZRANGEARRAYOID: Oid = 3911;
6060
static INT8RANGEOID: Oid = 3926;
61+
static INT8RANGEARRAYOID: Oid = 3927;
6162

6263
static USEC_PER_SEC: i64 = 1_000_000;
6364
static NSEC_PER_USEC: i64 = 1_000;
@@ -192,16 +193,18 @@ make_postgres_type!(
192193
INT4RANGEOID => PgInt4Range,
193194
#[doc="INT4RANGE[]"]
194195
INT4RANGEARRAYOID => PgInt4RangeArray member PgInt4Range,
195-
#[doc="INT8RANGE"]
196-
INT8RANGEOID => PgInt8Range,
197196
#[doc="TSRANGE"]
198197
TSRANGEOID => PgTsRange,
199198
#[doc="TSRANGE[]"]
200199
TSRANGEARRAYOID => PgTsRangeArray member PgTsRange,
201200
#[doc="TSTZRANGE"]
202201
TSTZRANGEOID => PgTstzRange,
203202
#[doc="TSTZRANGE[]"]
204-
TSTZRANGEARRAYOID => PgTstzRangeArray member PgTstzRange
203+
TSTZRANGEARRAYOID => PgTstzRangeArray member PgTstzRange,
204+
#[doc="INT8RANGE"]
205+
INT8RANGEOID => PgInt8Range,
206+
#[doc="INT8RANGE[]"]
207+
INT8RANGEARRAYOID => PgInt8RangeArray member PgInt8Range
205208
)
206209

207210
/// The wire format of a Postgres value
@@ -433,6 +436,7 @@ from_array_impl!(PgFloat8Array, f64)
433436
from_array_impl!(PgUuidArray, Uuid)
434437
from_array_impl!(PgInt4RangeArray, Range<i32>)
435438
from_array_impl!(PgTsRangeArray | PgTstzRangeArray, Range<Timespec>)
439+
from_array_impl!(PgInt8RangeArray, Range<i64>)
436440

437441
from_map_impl!(PgUnknownType { name: ~"hstore", .. },
438442
HashMap<~str, Option<~str>>, |buf| {
@@ -715,6 +719,7 @@ to_array_impl!(PgFloat8Array, f64)
715719
to_array_impl!(PgUuidArray, Uuid)
716720
to_array_impl!(PgInt4RangeArray, Range<i32>)
717721
to_array_impl!(PgTsRangeArray | PgTstzRangeArray, Range<Timespec>)
722+
to_array_impl!(PgInt8RangeArray, Range<i64>)
718723
719724
impl<'self> ToSql for HashMap<~str, Option<~str>> {
720725
fn to_sql(&self, ty: &PostgresType) -> (Format, Option<~[u8]>) {

0 commit comments

Comments
 (0)