aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/utils/adt/multirangetypes.c206
-rw-r--r--src/include/utils/multirangetypes.h69
2 files changed, 153 insertions, 122 deletions
diff --git a/src/backend/utils/adt/multirangetypes.c b/src/backend/utils/adt/multirangetypes.c
index 4b86be583ef..a77299147e7 100644
--- a/src/backend/utils/adt/multirangetypes.c
+++ b/src/backend/utils/adt/multirangetypes.c
@@ -847,7 +847,7 @@ range_bounds_contains(TypeCacheEntry *typcache,
* that would count as a mismatch.
*/
static bool
-multirange_bsearch_match(TypeCacheEntry *typcache, MultirangeType *mr,
+multirange_bsearch_match(TypeCacheEntry *typcache, const MultirangeType *mr,
void *key, multirange_bsearch_comparison cmp_func)
{
uint32 l,
@@ -1552,7 +1552,7 @@ multirange_contains_elem(PG_FUNCTION_ARGS)
typcache = multirange_get_typcache(fcinfo, MultirangeTypeGetOid(mr));
- PG_RETURN_BOOL(multirange_contains_elem_internal(typcache, mr, val));
+ PG_RETURN_BOOL(multirange_contains_elem_internal(typcache->rngtype, mr, val));
}
/* contained by? */
@@ -1565,7 +1565,7 @@ elem_contained_by_multirange(PG_FUNCTION_ARGS)
typcache = multirange_get_typcache(fcinfo, MultirangeTypeGetOid(mr));
- PG_RETURN_BOOL(multirange_contains_elem_internal(typcache, mr, val));
+ PG_RETURN_BOOL(multirange_contains_elem_internal(typcache->rngtype, mr, val));
}
/*
@@ -1606,13 +1606,13 @@ multirange_elem_bsearch_comparison(TypeCacheEntry *typcache,
* Test whether multirange mr contains a specific element value.
*/
bool
-multirange_contains_elem_internal(TypeCacheEntry *typcache,
- MultirangeType *mr, Datum val)
+multirange_contains_elem_internal(TypeCacheEntry *rangetyp,
+ const MultirangeType *mr, Datum val)
{
if (MultirangeIsEmpty(mr))
return false;
- return multirange_bsearch_match(typcache->rngtype, mr, &val,
+ return multirange_bsearch_match(rangetyp, mr, &val,
multirange_elem_bsearch_comparison);
}
@@ -1628,7 +1628,7 @@ multirange_contains_range(PG_FUNCTION_ARGS)
typcache = multirange_get_typcache(fcinfo, MultirangeTypeGetOid(mr));
- PG_RETURN_BOOL(multirange_contains_range_internal(typcache, mr, r));
+ PG_RETURN_BOOL(multirange_contains_range_internal(typcache->rngtype, mr, r));
}
Datum
@@ -1640,7 +1640,7 @@ range_contains_multirange(PG_FUNCTION_ARGS)
typcache = multirange_get_typcache(fcinfo, MultirangeTypeGetOid(mr));
- PG_RETURN_BOOL(range_contains_multirange_internal(typcache, r, mr));
+ PG_RETURN_BOOL(range_contains_multirange_internal(typcache->rngtype, r, mr));
}
/* contained by? */
@@ -1653,7 +1653,7 @@ range_contained_by_multirange(PG_FUNCTION_ARGS)
typcache = multirange_get_typcache(fcinfo, MultirangeTypeGetOid(mr));
- PG_RETURN_BOOL(multirange_contains_range_internal(typcache, mr, r));
+ PG_RETURN_BOOL(multirange_contains_range_internal(typcache->rngtype, mr, r));
}
Datum
@@ -1665,7 +1665,7 @@ multirange_contained_by_range(PG_FUNCTION_ARGS)
typcache = multirange_get_typcache(fcinfo, MultirangeTypeGetOid(mr));
- PG_RETURN_BOOL(range_contains_multirange_internal(typcache, r, mr));
+ PG_RETURN_BOOL(range_contains_multirange_internal(typcache->rngtype, r, mr));
}
/*
@@ -1700,14 +1700,13 @@ multirange_range_contains_bsearch_comparison(TypeCacheEntry *typcache,
* Test whether multirange mr contains a specific range r.
*/
bool
-multirange_contains_range_internal(TypeCacheEntry *typcache, MultirangeType *mr, RangeType *r)
+multirange_contains_range_internal(TypeCacheEntry *rangetyp,
+ const MultirangeType *mr,
+ const RangeType *r)
{
- TypeCacheEntry *rangetyp;
RangeBound bounds[2];
bool empty;
- rangetyp = typcache->rngtype;
-
/*
* Every multirange contains an infinite number of empty ranges, even an
* empty one.
@@ -1729,10 +1728,10 @@ multirange_contains_range_internal(TypeCacheEntry *typcache, MultirangeType *mr,
* Test whether range r contains a multirange mr.
*/
bool
-range_contains_multirange_internal(TypeCacheEntry *typcache, RangeType *r,
- MultirangeType *mr)
+range_contains_multirange_internal(TypeCacheEntry *rangetyp,
+ const RangeType *r,
+ const MultirangeType *mr)
{
- TypeCacheEntry *rangetyp;
RangeBound lower1,
upper1,
lower2,
@@ -1740,8 +1739,6 @@ range_contains_multirange_internal(TypeCacheEntry *typcache, RangeType *r,
tmp;
bool empty;
- rangetyp = typcache->rngtype;
-
/*
* Every range contains an infinite number of empty multiranges, even an
* empty one.
@@ -1766,9 +1763,10 @@ range_contains_multirange_internal(TypeCacheEntry *typcache, RangeType *r,
/* equality (internal version) */
bool
-multirange_eq_internal(TypeCacheEntry *typcache, MultirangeType *mr1, MultirangeType *mr2)
+multirange_eq_internal(TypeCacheEntry *rangetyp,
+ const MultirangeType *mr1,
+ const MultirangeType *mr2)
{
- TypeCacheEntry *rangetyp = typcache->rngtype;
int32 range_count_1;
int32 range_count_2;
int32 i;
@@ -1810,14 +1808,16 @@ multirange_eq(PG_FUNCTION_ARGS)
typcache = multirange_get_typcache(fcinfo, MultirangeTypeGetOid(mr1));
- PG_RETURN_BOOL(multirange_eq_internal(typcache, mr1, mr2));
+ PG_RETURN_BOOL(multirange_eq_internal(typcache->rngtype, mr1, mr2));
}
/* inequality (internal version) */
bool
-multirange_ne_internal(TypeCacheEntry *typcache, MultirangeType *mr1, MultirangeType *mr2)
+multirange_ne_internal(TypeCacheEntry *rangetyp,
+ const MultirangeType *mr1,
+ const MultirangeType *mr2)
{
- return (!multirange_eq_internal(typcache, mr1, mr2));
+ return (!multirange_eq_internal(rangetyp, mr1, mr2));
}
/* inequality */
@@ -1830,7 +1830,7 @@ multirange_ne(PG_FUNCTION_ARGS)
typcache = multirange_get_typcache(fcinfo, MultirangeTypeGetOid(mr1));
- PG_RETURN_BOOL(multirange_ne_internal(typcache, mr1, mr2));
+ PG_RETURN_BOOL(multirange_ne_internal(typcache->rngtype, mr1, mr2));
}
/* overlaps? */
@@ -1843,7 +1843,7 @@ range_overlaps_multirange(PG_FUNCTION_ARGS)
typcache = multirange_get_typcache(fcinfo, MultirangeTypeGetOid(mr));
- PG_RETURN_BOOL(range_overlaps_multirange_internal(typcache, r, mr));
+ PG_RETURN_BOOL(range_overlaps_multirange_internal(typcache->rngtype, r, mr));
}
Datum
@@ -1855,7 +1855,7 @@ multirange_overlaps_range(PG_FUNCTION_ARGS)
typcache = multirange_get_typcache(fcinfo, MultirangeTypeGetOid(mr));
- PG_RETURN_BOOL(range_overlaps_multirange_internal(typcache, r, mr));
+ PG_RETURN_BOOL(range_overlaps_multirange_internal(typcache->rngtype, r, mr));
}
Datum
@@ -1867,7 +1867,7 @@ multirange_overlaps_multirange(PG_FUNCTION_ARGS)
typcache = multirange_get_typcache(fcinfo, MultirangeTypeGetOid(mr1));
- PG_RETURN_BOOL(multirange_overlaps_multirange_internal(typcache, mr1, mr2));
+ PG_RETURN_BOOL(multirange_overlaps_multirange_internal(typcache->rngtype, mr1, mr2));
}
/*
@@ -1892,14 +1892,13 @@ multirange_range_overlaps_bsearch_comparison(TypeCacheEntry *typcache,
}
bool
-range_overlaps_multirange_internal(TypeCacheEntry *typcache, RangeType *r, MultirangeType *mr)
+range_overlaps_multirange_internal(TypeCacheEntry *rangetyp,
+ const RangeType *r,
+ const MultirangeType *mr)
{
- TypeCacheEntry *rangetyp;
RangeBound bounds[2];
bool empty;
- rangetyp = typcache->rngtype;
-
/*
* Empties never overlap, even with empties. (This seems strange since
* they *do* contain each other, but we want to follow how ranges work.)
@@ -1915,10 +1914,10 @@ range_overlaps_multirange_internal(TypeCacheEntry *typcache, RangeType *r, Multi
}
bool
-multirange_overlaps_multirange_internal(TypeCacheEntry *typcache, MultirangeType *mr1,
- MultirangeType *mr2)
+multirange_overlaps_multirange_internal(TypeCacheEntry *rangetyp,
+ const MultirangeType *mr1,
+ const MultirangeType *mr2)
{
- TypeCacheEntry *rangetyp;
int32 range_count1;
int32 range_count2;
int32 i1;
@@ -1935,8 +1934,6 @@ multirange_overlaps_multirange_internal(TypeCacheEntry *typcache, MultirangeType
if (MultirangeIsEmpty(mr1) || MultirangeIsEmpty(mr2))
return false;
- rangetyp = typcache->rngtype;
-
range_count1 = mr1->rangeCount;
range_count2 = mr2->rangeCount;
@@ -1974,12 +1971,11 @@ multirange_overlaps_multirange_internal(TypeCacheEntry *typcache, MultirangeType
}
/* does not extend to right of? */
-Datum
-range_overleft_multirange(PG_FUNCTION_ARGS)
+bool
+range_overleft_multirange_internal(TypeCacheEntry *rangetyp,
+ const RangeType *r,
+ const MultirangeType *mr)
{
- RangeType *r = PG_GETARG_RANGE_P(0);
- MultirangeType *mr = PG_GETARG_MULTIRANGE_P(1);
- TypeCacheEntry *typcache;
RangeBound lower1,
upper1,
lower2,
@@ -1989,14 +1985,25 @@ range_overleft_multirange(PG_FUNCTION_ARGS)
if (RangeIsEmpty(r) || MultirangeIsEmpty(mr))
PG_RETURN_BOOL(false);
- typcache = multirange_get_typcache(fcinfo, MultirangeTypeGetOid(mr));
- range_deserialize(typcache->rngtype, r, &lower1, &upper1, &empty);
+ range_deserialize(rangetyp, r, &lower1, &upper1, &empty);
Assert(!empty);
- multirange_get_bounds(typcache->rngtype, mr, mr->rangeCount - 1,
+ multirange_get_bounds(rangetyp, mr, mr->rangeCount - 1,
&lower2, &upper2);
- PG_RETURN_BOOL(range_cmp_bounds(typcache->rngtype, &upper1, &upper2) <= 0);
+ PG_RETURN_BOOL(range_cmp_bounds(rangetyp, &upper1, &upper2) <= 0);
+}
+
+Datum
+range_overleft_multirange(PG_FUNCTION_ARGS)
+{
+ RangeType *r = PG_GETARG_RANGE_P(0);
+ MultirangeType *mr = PG_GETARG_MULTIRANGE_P(1);
+ TypeCacheEntry *typcache;
+
+ typcache = multirange_get_typcache(fcinfo, MultirangeTypeGetOid(mr));
+
+ PG_RETURN_BOOL(range_overleft_multirange_internal(typcache->rngtype, r, mr));
}
Datum
@@ -2049,12 +2056,11 @@ multirange_overleft_multirange(PG_FUNCTION_ARGS)
}
/* does not extend to left of? */
-Datum
-range_overright_multirange(PG_FUNCTION_ARGS)
+bool
+range_overright_multirange_internal(TypeCacheEntry *rangetyp,
+ const RangeType *r,
+ const MultirangeType *mr)
{
- RangeType *r = PG_GETARG_RANGE_P(0);
- MultirangeType *mr = PG_GETARG_MULTIRANGE_P(1);
- TypeCacheEntry *typcache;
RangeBound lower1,
upper1,
lower2,
@@ -2064,13 +2070,23 @@ range_overright_multirange(PG_FUNCTION_ARGS)
if (RangeIsEmpty(r) || MultirangeIsEmpty(mr))
PG_RETURN_BOOL(false);
- typcache = multirange_get_typcache(fcinfo, MultirangeTypeGetOid(mr));
-
- range_deserialize(typcache->rngtype, r, &lower1, &upper1, &empty);
+ range_deserialize(rangetyp, r, &lower1, &upper1, &empty);
Assert(!empty);
- multirange_get_bounds(typcache->rngtype, mr, 0, &lower2, &upper2);
+ multirange_get_bounds(rangetyp, mr, 0, &lower2, &upper2);
- PG_RETURN_BOOL(range_cmp_bounds(typcache->rngtype, &lower1, &lower2) >= 0);
+ return (range_cmp_bounds(rangetyp, &lower1, &lower2) >= 0);
+}
+
+Datum
+range_overright_multirange(PG_FUNCTION_ARGS)
+{
+ RangeType *r = PG_GETARG_RANGE_P(0);
+ MultirangeType *mr = PG_GETARG_MULTIRANGE_P(1);
+ TypeCacheEntry *typcache;
+
+ typcache = multirange_get_typcache(fcinfo, MultirangeTypeGetOid(mr));
+
+ PG_RETURN_BOOL(range_overright_multirange_internal(typcache->rngtype, r, mr));
}
Datum
@@ -2129,7 +2145,7 @@ multirange_contains_multirange(PG_FUNCTION_ARGS)
typcache = multirange_get_typcache(fcinfo, MultirangeTypeGetOid(mr1));
- PG_RETURN_BOOL(multirange_contains_multirange_internal(typcache, mr1, mr2));
+ PG_RETURN_BOOL(multirange_contains_multirange_internal(typcache->rngtype, mr1, mr2));
}
/* contained by? */
@@ -2142,17 +2158,17 @@ multirange_contained_by_multirange(PG_FUNCTION_ARGS)
typcache = multirange_get_typcache(fcinfo, MultirangeTypeGetOid(mr1));
- PG_RETURN_BOOL(multirange_contains_multirange_internal(typcache, mr2, mr1));
+ PG_RETURN_BOOL(multirange_contains_multirange_internal(typcache->rngtype, mr2, mr1));
}
/*
* Test whether multirange mr1 contains every range from another multirange mr2.
*/
bool
-multirange_contains_multirange_internal(TypeCacheEntry *typcache,
- MultirangeType *mr1, MultirangeType *mr2)
+multirange_contains_multirange_internal(TypeCacheEntry *rangetyp,
+ const MultirangeType *mr1,
+ const MultirangeType *mr2)
{
- TypeCacheEntry *rangetyp;
int32 range_count1 = mr1->rangeCount;
int32 range_count2 = mr2->rangeCount;
int i1,
@@ -2162,8 +2178,6 @@ multirange_contains_multirange_internal(TypeCacheEntry *typcache,
lower2,
upper2;
- rangetyp = typcache->rngtype;
-
/*
* We follow the same logic for empties as ranges: - an empty multirange
* contains an empty range/multirange. - an empty multirange can't contain
@@ -2221,7 +2235,7 @@ range_before_multirange(PG_FUNCTION_ARGS)
typcache = multirange_get_typcache(fcinfo, MultirangeTypeGetOid(mr));
- PG_RETURN_BOOL(range_before_multirange_internal(typcache, r, mr));
+ PG_RETURN_BOOL(range_before_multirange_internal(typcache->rngtype, r, mr));
}
Datum
@@ -2233,7 +2247,7 @@ multirange_before_range(PG_FUNCTION_ARGS)
typcache = multirange_get_typcache(fcinfo, MultirangeTypeGetOid(mr));
- PG_RETURN_BOOL(range_after_multirange_internal(typcache, r, mr));
+ PG_RETURN_BOOL(range_after_multirange_internal(typcache->rngtype, r, mr));
}
Datum
@@ -2245,7 +2259,7 @@ multirange_before_multirange(PG_FUNCTION_ARGS)
typcache = multirange_get_typcache(fcinfo, MultirangeTypeGetOid(mr1));
- PG_RETURN_BOOL(multirange_before_multirange_internal(typcache, mr1, mr2));
+ PG_RETURN_BOOL(multirange_before_multirange_internal(typcache->rngtype, mr1, mr2));
}
/* strictly right of? */
@@ -2258,7 +2272,7 @@ range_after_multirange(PG_FUNCTION_ARGS)
typcache = multirange_get_typcache(fcinfo, MultirangeTypeGetOid(mr));
- PG_RETURN_BOOL(range_after_multirange_internal(typcache, r, mr));
+ PG_RETURN_BOOL(range_after_multirange_internal(typcache->rngtype, r, mr));
}
Datum
@@ -2270,7 +2284,7 @@ multirange_after_range(PG_FUNCTION_ARGS)
typcache = multirange_get_typcache(fcinfo, MultirangeTypeGetOid(mr));
- PG_RETURN_BOOL(range_before_multirange_internal(typcache, r, mr));
+ PG_RETURN_BOOL(range_before_multirange_internal(typcache->rngtype, r, mr));
}
Datum
@@ -2282,13 +2296,14 @@ multirange_after_multirange(PG_FUNCTION_ARGS)
typcache = multirange_get_typcache(fcinfo, MultirangeTypeGetOid(mr1));
- PG_RETURN_BOOL(multirange_before_multirange_internal(typcache, mr2, mr1));
+ PG_RETURN_BOOL(multirange_before_multirange_internal(typcache->rngtype, mr2, mr1));
}
/* strictly left of? (internal version) */
bool
-range_before_multirange_internal(TypeCacheEntry *typcache, RangeType *r,
- MultirangeType *mr)
+range_before_multirange_internal(TypeCacheEntry *rangetyp,
+ const RangeType *r,
+ const MultirangeType *mr)
{
RangeBound lower1,
upper1,
@@ -2299,19 +2314,18 @@ range_before_multirange_internal(TypeCacheEntry *typcache, RangeType *r,
if (RangeIsEmpty(r) || MultirangeIsEmpty(mr))
return false;
- range_deserialize(typcache->rngtype, r, &lower1, &upper1, &empty);
+ range_deserialize(rangetyp, r, &lower1, &upper1, &empty);
Assert(!empty);
- multirange_get_bounds(typcache->rngtype, mr, 0,
- &lower2, &upper2);
+ multirange_get_bounds(rangetyp, mr, 0, &lower2, &upper2);
- return (range_cmp_bounds(typcache->rngtype, &upper1, &lower2) < 0);
+ return (range_cmp_bounds(rangetyp, &upper1, &lower2) < 0);
}
bool
-multirange_before_multirange_internal(TypeCacheEntry *typcache,
- MultirangeType *mr1,
- MultirangeType *mr2)
+multirange_before_multirange_internal(TypeCacheEntry *rangetyp,
+ const MultirangeType *mr1,
+ const MultirangeType *mr2)
{
RangeBound lower1,
upper1,
@@ -2321,18 +2335,19 @@ multirange_before_multirange_internal(TypeCacheEntry *typcache,
if (MultirangeIsEmpty(mr1) || MultirangeIsEmpty(mr2))
return false;
- multirange_get_bounds(typcache->rngtype, mr1, mr1->rangeCount - 1,
+ multirange_get_bounds(rangetyp, mr1, mr1->rangeCount - 1,
&lower1, &upper1);
- multirange_get_bounds(typcache->rngtype, mr2, 0,
+ multirange_get_bounds(rangetyp, mr2, 0,
&lower2, &upper2);
- return (range_cmp_bounds(typcache->rngtype, &upper1, &lower2) < 0);
+ return (range_cmp_bounds(rangetyp, &upper1, &lower2) < 0);
}
/* strictly right of? (internal version) */
bool
-range_after_multirange_internal(TypeCacheEntry *typcache, RangeType *r,
- MultirangeType *mr)
+range_after_multirange_internal(TypeCacheEntry *rangetyp,
+ const RangeType *r,
+ const MultirangeType *mr)
{
RangeBound lower1,
upper1,
@@ -2344,19 +2359,20 @@ range_after_multirange_internal(TypeCacheEntry *typcache, RangeType *r,
if (RangeIsEmpty(r) || MultirangeIsEmpty(mr))
return false;
- range_deserialize(typcache->rngtype, r, &lower1, &upper1, &empty);
+ range_deserialize(rangetyp, r, &lower1, &upper1, &empty);
Assert(!empty);
range_count = mr->rangeCount;
- multirange_get_bounds(typcache->rngtype, mr, range_count - 1,
+ multirange_get_bounds(rangetyp, mr, range_count - 1,
&lower2, &upper2);
- return (range_cmp_bounds(typcache->rngtype, &lower1, &upper2) > 0);
+ return (range_cmp_bounds(rangetyp, &lower1, &upper2) > 0);
}
bool
-range_adjacent_multirange_internal(TypeCacheEntry *typcache, RangeType *r,
- MultirangeType *mr)
+range_adjacent_multirange_internal(TypeCacheEntry *rangetyp,
+ const RangeType *r,
+ const MultirangeType *mr)
{
RangeBound lower1,
upper1,
@@ -2368,21 +2384,21 @@ range_adjacent_multirange_internal(TypeCacheEntry *typcache, RangeType *r,
if (RangeIsEmpty(r) || MultirangeIsEmpty(mr))
return false;
- range_deserialize(typcache->rngtype, r, &lower1, &upper1, &empty);
+ range_deserialize(rangetyp, r, &lower1, &upper1, &empty);
Assert(!empty);
range_count = mr->rangeCount;
- multirange_get_bounds(typcache->rngtype, mr, 0,
+ multirange_get_bounds(rangetyp, mr, 0,
&lower2, &upper2);
- if (bounds_adjacent(typcache->rngtype, upper1, lower2))
+ if (bounds_adjacent(rangetyp, upper1, lower2))
return true;
if (range_count > 1)
- multirange_get_bounds(typcache->rngtype, mr, range_count - 1,
+ multirange_get_bounds(rangetyp, mr, range_count - 1,
&lower2, &upper2);
- if (bounds_adjacent(typcache->rngtype, upper2, lower1))
+ if (bounds_adjacent(rangetyp, upper2, lower1))
return true;
return false;
@@ -2398,7 +2414,7 @@ range_adjacent_multirange(PG_FUNCTION_ARGS)
typcache = multirange_get_typcache(fcinfo, MultirangeTypeGetOid(mr));
- PG_RETURN_BOOL(range_adjacent_multirange_internal(typcache, r, mr));
+ PG_RETURN_BOOL(range_adjacent_multirange_internal(typcache->rngtype, r, mr));
}
Datum
@@ -2413,7 +2429,7 @@ multirange_adjacent_range(PG_FUNCTION_ARGS)
typcache = multirange_get_typcache(fcinfo, MultirangeTypeGetOid(mr));
- PG_RETURN_BOOL(range_adjacent_multirange_internal(typcache, r, mr));
+ PG_RETURN_BOOL(range_adjacent_multirange_internal(typcache->rngtype, r, mr));
}
Datum
diff --git a/src/include/utils/multirangetypes.h b/src/include/utils/multirangetypes.h
index f2290aac274..ff2e58744a9 100644
--- a/src/include/utils/multirangetypes.h
+++ b/src/include/utils/multirangetypes.h
@@ -14,8 +14,8 @@
#ifndef MULTIRANGETYPES_H
#define MULTIRANGETYPES_H
+#include "utils/rangetypes.h"
#include "utils/typcache.h"
-#include "utils/expandeddatum.h"
/*
@@ -56,33 +56,48 @@ typedef struct
*/
/* internal versions of the above */
-extern bool multirange_eq_internal(TypeCacheEntry *typcache, MultirangeType *mr1,
- MultirangeType *mr2);
-extern bool multirange_ne_internal(TypeCacheEntry *typcache, MultirangeType *mr1,
- MultirangeType *mr2);
-extern bool multirange_contains_elem_internal(TypeCacheEntry *typcache, MultirangeType *mr,
+extern bool multirange_eq_internal(TypeCacheEntry *rangetyp,
+ const MultirangeType *mr1,
+ const MultirangeType *mr2);
+extern bool multirange_ne_internal(TypeCacheEntry *rangetyp,
+ const MultirangeType *mr1,
+ const MultirangeType *mr2);
+extern bool multirange_contains_elem_internal(TypeCacheEntry *rangetyp,
+ const MultirangeType *mr,
Datum elem);
-extern bool multirange_contains_range_internal(TypeCacheEntry *typcache, MultirangeType *mr,
- RangeType *r);
-extern bool range_contains_multirange_internal(TypeCacheEntry *typcache, RangeType *r,
- MultirangeType *mr);
-extern bool multirange_contains_multirange_internal(TypeCacheEntry *typcache,
- MultirangeType *mr1,
- MultirangeType *mr2);
-extern bool range_overlaps_multirange_internal(TypeCacheEntry *typcache, RangeType *r,
- MultirangeType *mr);
-extern bool multirange_overlaps_multirange_internal(TypeCacheEntry *typcache,
- MultirangeType *mr1,
- MultirangeType *mr2);
-extern bool range_before_multirange_internal(TypeCacheEntry *typcache, RangeType *r,
- MultirangeType *mr);
-extern bool range_after_multirange_internal(TypeCacheEntry *typcache, RangeType *r,
- MultirangeType *mr);
-extern bool range_adjacent_multirange_internal(TypeCacheEntry *typcache, RangeType *r,
- MultirangeType *mr);
-extern bool multirange_before_multirange_internal(TypeCacheEntry *typcache,
- MultirangeType *mr1,
- MultirangeType *mr2);
+extern bool multirange_contains_range_internal(TypeCacheEntry *rangetyp,
+ const MultirangeType *mr,
+ const RangeType *r);
+extern bool range_contains_multirange_internal(TypeCacheEntry *rangetyp,
+ const RangeType *r,
+ const MultirangeType *mr);
+extern bool multirange_contains_multirange_internal(TypeCacheEntry *rangetyp,
+ const MultirangeType *mr1,
+ const MultirangeType *mr2);
+extern bool range_overlaps_multirange_internal(TypeCacheEntry *rangetyp,
+ const RangeType *r,
+ const MultirangeType *mr);
+extern bool multirange_overlaps_multirange_internal(TypeCacheEntry *rangetyp,
+ const MultirangeType *mr1,
+ const MultirangeType *mr2);
+extern bool range_overleft_multirange_internal(TypeCacheEntry *rangetyp,
+ const RangeType *r,
+ const MultirangeType *mr);
+extern bool range_overright_multirange_internal(TypeCacheEntry *rangetyp,
+ const RangeType *r,
+ const MultirangeType *mr);
+extern bool range_before_multirange_internal(TypeCacheEntry *rangetyp,
+ const RangeType *r,
+ const MultirangeType *mr);
+extern bool range_after_multirange_internal(TypeCacheEntry *rangetyp,
+ const RangeType *r,
+ const MultirangeType *mr);
+extern bool range_adjacent_multirange_internal(TypeCacheEntry *rangetyp,
+ const RangeType *r,
+ const MultirangeType *mr);
+extern bool multirange_before_multirange_internal(TypeCacheEntry *rangetyp,
+ const MultirangeType *mr1,
+ const MultirangeType *mr2);
extern MultirangeType *multirange_minus_internal(Oid mltrngtypoid,
TypeCacheEntry *rangetyp,
int32 range_count1,