Commit df735844 authored by Tom Lane's avatar Tom Lane

Remove zero- and one-argument range constructor functions.

Per discussion, the zero-argument forms aren't really worth the catalog
space (just write 'empty' instead).  The one-argument forms have some use,
but they also have a serious problem with looking too much like functional
cast notation; to the point where in many real use-cases, the parser would
misinterpret what was wanted.

Committing this as a separate patch, with the thought that we might want
to revert part or all of it if we can think of some way around the cast
ambiguity.
parent cddc819e
...@@ -242,12 +242,11 @@ select '[4,4]'::int4range; ...@@ -242,12 +242,11 @@ select '[4,4]'::int4range;
type. Using the constructor function is frequently more convenient than type. Using the constructor function is frequently more convenient than
writing a range literal constant, since it avoids the need for extra writing a range literal constant, since it avoids the need for extra
quoting of the bound values. The constructor function quoting of the bound values. The constructor function
accepts from zero to three arguments. The zero-argument form accepts two or three arguments. The two-argument form constructs a range
constructs an empty range; the one-argument form constructs a in standard form (lower bound inclusive, upper bound exclusive), while
singleton range; the two-argument form constructs a range in the three-argument form constructs a range with bounds of the form
standard form (lower bound inclusive, upper bound exclusive); specified by the third argument.
and the three-argument form constructs a range in a form specified by the The third argument must be one of the strings
third argument. The third argument must be one of the strings
<quote><literal>()</literal></quote>, <quote><literal>()</literal></quote>,
<quote><literal>(]</literal></quote>, <quote><literal>(]</literal></quote>,
<quote><literal>[)</literal></quote>, or <quote><literal>[)</literal></quote>, or
...@@ -255,7 +254,7 @@ select '[4,4]'::int4range; ...@@ -255,7 +254,7 @@ select '[4,4]'::int4range;
For example: For example:
<programlisting> <programlisting>
-- Three-argument form: lower bound, upper bound, and third argument indicating -- The full form is: lower bound, upper bound, and text argument indicating
-- inclusivity/exclusivity of bounds. -- inclusivity/exclusivity of bounds.
SELECT numrange(1.0, 14.0, '(]'); SELECT numrange(1.0, 14.0, '(]');
...@@ -268,13 +267,6 @@ SELECT int8range(1, 14, '(]'); ...@@ -268,13 +267,6 @@ SELECT int8range(1, 14, '(]');
-- Using NULL for either bound causes the range to be unbounded on that side. -- Using NULL for either bound causes the range to be unbounded on that side.
SELECT numrange(NULL, 2.2); SELECT numrange(NULL, 2.2);
-- Single argument constructs a singleton range; that is a range consisting of
-- just one point.
SELECT numrange(11.1);
-- Zero-argument form constructs an empty range.
SELECT numrange();
</programlisting> </programlisting>
</para> </para>
</sect2> </sect2>
......
...@@ -1495,11 +1495,9 @@ static void ...@@ -1495,11 +1495,9 @@ static void
makeRangeConstructors(const char *name, Oid namespace, makeRangeConstructors(const char *name, Oid namespace,
Oid rangeOid, Oid subtype) Oid rangeOid, Oid subtype)
{ {
static const char * const prosrc[4] = {"range_constructor0", static const char * const prosrc[2] = {"range_constructor2",
"range_constructor1",
"range_constructor2",
"range_constructor3"}; "range_constructor3"};
static const int pronargs[4] = {0, 1, 2, 3}; static const int pronargs[2] = {2, 3};
Oid constructorArgTypes[3]; Oid constructorArgTypes[3];
ObjectAddress myself, ObjectAddress myself,
......
...@@ -350,42 +350,6 @@ get_range_io_data(FunctionCallInfo fcinfo, Oid rngtypid, IOFuncSelector func) ...@@ -350,42 +350,6 @@ get_range_io_data(FunctionCallInfo fcinfo, Oid rngtypid, IOFuncSelector func)
*---------------------------------------------------------- *----------------------------------------------------------
*/ */
/* Construct empty range value from no arguments */
Datum
range_constructor0(PG_FUNCTION_ARGS)
{
Oid rngtypid = get_fn_expr_rettype(fcinfo->flinfo);
RangeType *range;
TypeCacheEntry *typcache;
typcache = range_get_typcache(fcinfo, rngtypid);
range = make_empty_range(typcache);
PG_RETURN_RANGE(range);
}
/* Construct singleton range value from one argument */
Datum
range_constructor1(PG_FUNCTION_ARGS)
{
Datum arg1 = PG_GETARG_DATUM(0);
Oid rngtypid = get_fn_expr_rettype(fcinfo->flinfo);
RangeType *range;
TypeCacheEntry *typcache;
typcache = range_get_typcache(fcinfo, rngtypid);
if (PG_ARGISNULL(0))
ereport(ERROR,
(errcode(ERRCODE_DATA_EXCEPTION),
errmsg("range constructor argument must not be NULL")));
range = make_singleton_range(typcache, arg1);
PG_RETURN_RANGE(range);
}
/* Construct standard-form range value from two arguments */ /* Construct standard-form range value from two arguments */
Datum Datum
range_constructor2(PG_FUNCTION_ARGS) range_constructor2(PG_FUNCTION_ARGS)
...@@ -1775,28 +1739,6 @@ make_empty_range(TypeCacheEntry *typcache) ...@@ -1775,28 +1739,6 @@ make_empty_range(TypeCacheEntry *typcache)
return make_range(typcache, &lower, &upper, true); return make_range(typcache, &lower, &upper, true);
} }
/*
* Build a range value representing a single point.
*/
RangeType *
make_singleton_range(TypeCacheEntry *typcache, Datum val)
{
RangeBound lower;
RangeBound upper;
lower.val = val;
lower.infinite = false;
lower.inclusive = true;
lower.lower = true;
upper.val = val;
upper.infinite = false;
upper.inclusive = true;
upper.lower = false;
return make_range(typcache, &lower, &upper, false);
}
/* /*
*---------------------------------------------------------- *----------------------------------------------------------
......
...@@ -53,6 +53,6 @@ ...@@ -53,6 +53,6 @@
*/ */
/* yyyymmddN */ /* yyyymmddN */
#define CATALOG_VERSION_NO 201111221 #define CATALOG_VERSION_NO 201111222
#endif #endif
...@@ -4432,50 +4432,26 @@ DESCR("float8 difference of two timestamp values"); ...@@ -4432,50 +4432,26 @@ DESCR("float8 difference of two timestamp values");
DATA(insert OID = 3930 ( tstzrange_subdiff PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "1184 1184" _null_ _null_ _null_ _null_ tstzrange_subdiff _null_ _null_ _null_ )); DATA(insert OID = 3930 ( tstzrange_subdiff PGNSP PGUID 12 1 0 0 0 f f f t f i 2 0 701 "1184 1184" _null_ _null_ _null_ _null_ tstzrange_subdiff _null_ _null_ _null_ ));
DESCR("float8 difference of two timestamp with time zone values"); DESCR("float8 difference of two timestamp with time zone values");
DATA(insert OID = 3838 ( int4range PGNSP PGUID 12 1 0 0 0 f f f f f i 0 0 3904 "" _null_ _null_ _null_ _null_ range_constructor0 _null_ _null_ _null_ ));
DESCR("int4range constructor");
DATA(insert OID = 3839 ( int4range PGNSP PGUID 12 1 0 0 0 f f f f f i 1 0 3904 "23" _null_ _null_ _null_ _null_ range_constructor1 _null_ _null_ _null_ ));
DESCR("int4range constructor");
DATA(insert OID = 3840 ( int4range PGNSP PGUID 12 1 0 0 0 f f f f f i 2 0 3904 "23 23" _null_ _null_ _null_ _null_ range_constructor2 _null_ _null_ _null_ )); DATA(insert OID = 3840 ( int4range PGNSP PGUID 12 1 0 0 0 f f f f f i 2 0 3904 "23 23" _null_ _null_ _null_ _null_ range_constructor2 _null_ _null_ _null_ ));
DESCR("int4range constructor"); DESCR("int4range constructor");
DATA(insert OID = 3841 ( int4range PGNSP PGUID 12 1 0 0 0 f f f f f i 3 0 3904 "23 23 25" _null_ _null_ _null_ _null_ range_constructor3 _null_ _null_ _null_ )); DATA(insert OID = 3841 ( int4range PGNSP PGUID 12 1 0 0 0 f f f f f i 3 0 3904 "23 23 25" _null_ _null_ _null_ _null_ range_constructor3 _null_ _null_ _null_ ));
DESCR("int4range constructor"); DESCR("int4range constructor");
DATA(insert OID = 3842 ( numrange PGNSP PGUID 12 1 0 0 0 f f f f f i 0 0 3906 "" _null_ _null_ _null_ _null_ range_constructor0 _null_ _null_ _null_ ));
DESCR("numrange constructor");
DATA(insert OID = 3843 ( numrange PGNSP PGUID 12 1 0 0 0 f f f f f i 1 0 3906 "1700" _null_ _null_ _null_ _null_ range_constructor1 _null_ _null_ _null_ ));
DESCR("numrange constructor");
DATA(insert OID = 3844 ( numrange PGNSP PGUID 12 1 0 0 0 f f f f f i 2 0 3906 "1700 1700" _null_ _null_ _null_ _null_ range_constructor2 _null_ _null_ _null_ )); DATA(insert OID = 3844 ( numrange PGNSP PGUID 12 1 0 0 0 f f f f f i 2 0 3906 "1700 1700" _null_ _null_ _null_ _null_ range_constructor2 _null_ _null_ _null_ ));
DESCR("numrange constructor"); DESCR("numrange constructor");
DATA(insert OID = 3845 ( numrange PGNSP PGUID 12 1 0 0 0 f f f f f i 3 0 3906 "1700 1700 25" _null_ _null_ _null_ _null_ range_constructor3 _null_ _null_ _null_ )); DATA(insert OID = 3845 ( numrange PGNSP PGUID 12 1 0 0 0 f f f f f i 3 0 3906 "1700 1700 25" _null_ _null_ _null_ _null_ range_constructor3 _null_ _null_ _null_ ));
DESCR("numrange constructor"); DESCR("numrange constructor");
DATA(insert OID = 3846 ( tsrange PGNSP PGUID 12 1 0 0 0 f f f f f i 0 0 3908 "" _null_ _null_ _null_ _null_ range_constructor0 _null_ _null_ _null_ ));
DESCR("tsrange constructor");
DATA(insert OID = 3847 ( tsrange PGNSP PGUID 12 1 0 0 0 f f f f f i 1 0 3908 "1114" _null_ _null_ _null_ _null_ range_constructor1 _null_ _null_ _null_ ));
DESCR("tsrange constructor");
DATA(insert OID = 3933 ( tsrange PGNSP PGUID 12 1 0 0 0 f f f f f i 2 0 3908 "1114 1114" _null_ _null_ _null_ _null_ range_constructor2 _null_ _null_ _null_ )); DATA(insert OID = 3933 ( tsrange PGNSP PGUID 12 1 0 0 0 f f f f f i 2 0 3908 "1114 1114" _null_ _null_ _null_ _null_ range_constructor2 _null_ _null_ _null_ ));
DESCR("tsrange constructor"); DESCR("tsrange constructor");
DATA(insert OID = 3934 ( tsrange PGNSP PGUID 12 1 0 0 0 f f f f f i 3 0 3908 "1114 1114 25" _null_ _null_ _null_ _null_ range_constructor3 _null_ _null_ _null_ )); DATA(insert OID = 3934 ( tsrange PGNSP PGUID 12 1 0 0 0 f f f f f i 3 0 3908 "1114 1114 25" _null_ _null_ _null_ _null_ range_constructor3 _null_ _null_ _null_ ));
DESCR("tsrange constructor"); DESCR("tsrange constructor");
DATA(insert OID = 3935 ( tstzrange PGNSP PGUID 12 1 0 0 0 f f f f f i 0 0 3910 "" _null_ _null_ _null_ _null_ range_constructor0 _null_ _null_ _null_ ));
DESCR("tstzrange constructor");
DATA(insert OID = 3936 ( tstzrange PGNSP PGUID 12 1 0 0 0 f f f f f i 1 0 3910 "1184" _null_ _null_ _null_ _null_ range_constructor1 _null_ _null_ _null_ ));
DESCR("tstzrange constructor");
DATA(insert OID = 3937 ( tstzrange PGNSP PGUID 12 1 0 0 0 f f f f f i 2 0 3910 "1184 1184" _null_ _null_ _null_ _null_ range_constructor2 _null_ _null_ _null_ )); DATA(insert OID = 3937 ( tstzrange PGNSP PGUID 12 1 0 0 0 f f f f f i 2 0 3910 "1184 1184" _null_ _null_ _null_ _null_ range_constructor2 _null_ _null_ _null_ ));
DESCR("tstzrange constructor"); DESCR("tstzrange constructor");
DATA(insert OID = 3938 ( tstzrange PGNSP PGUID 12 1 0 0 0 f f f f f i 3 0 3910 "1184 1184 25" _null_ _null_ _null_ _null_ range_constructor3 _null_ _null_ _null_ )); DATA(insert OID = 3938 ( tstzrange PGNSP PGUID 12 1 0 0 0 f f f f f i 3 0 3910 "1184 1184 25" _null_ _null_ _null_ _null_ range_constructor3 _null_ _null_ _null_ ));
DESCR("tstzrange constructor"); DESCR("tstzrange constructor");
DATA(insert OID = 3939 ( daterange PGNSP PGUID 12 1 0 0 0 f f f f f i 0 0 3912 "" _null_ _null_ _null_ _null_ range_constructor0 _null_ _null_ _null_ ));
DESCR("daterange constructor");
DATA(insert OID = 3940 ( daterange PGNSP PGUID 12 1 0 0 0 f f f f f i 1 0 3912 "1082" _null_ _null_ _null_ _null_ range_constructor1 _null_ _null_ _null_ ));
DESCR("daterange constructor");
DATA(insert OID = 3941 ( daterange PGNSP PGUID 12 1 0 0 0 f f f f f i 2 0 3912 "1082 1082" _null_ _null_ _null_ _null_ range_constructor2 _null_ _null_ _null_ )); DATA(insert OID = 3941 ( daterange PGNSP PGUID 12 1 0 0 0 f f f f f i 2 0 3912 "1082 1082" _null_ _null_ _null_ _null_ range_constructor2 _null_ _null_ _null_ ));
DESCR("daterange constructor"); DESCR("daterange constructor");
DATA(insert OID = 3942 ( daterange PGNSP PGUID 12 1 0 0 0 f f f f f i 3 0 3912 "1082 1082 25" _null_ _null_ _null_ _null_ range_constructor3 _null_ _null_ _null_ )); DATA(insert OID = 3942 ( daterange PGNSP PGUID 12 1 0 0 0 f f f f f i 3 0 3912 "1082 1082 25" _null_ _null_ _null_ _null_ range_constructor3 _null_ _null_ _null_ ));
DESCR("daterange constructor"); DESCR("daterange constructor");
DATA(insert OID = 3943 ( int8range PGNSP PGUID 12 1 0 0 0 f f f f f i 0 0 3926 "" _null_ _null_ _null_ _null_ range_constructor0 _null_ _null_ _null_ ));
DESCR("int8range constructor");
DATA(insert OID = 3944 ( int8range PGNSP PGUID 12 1 0 0 0 f f f f f i 1 0 3926 "20" _null_ _null_ _null_ _null_ range_constructor1 _null_ _null_ _null_ ));
DESCR("int8range constructor");
DATA(insert OID = 3945 ( int8range PGNSP PGUID 12 1 0 0 0 f f f f f i 2 0 3926 "20 20" _null_ _null_ _null_ _null_ range_constructor2 _null_ _null_ _null_ )); DATA(insert OID = 3945 ( int8range PGNSP PGUID 12 1 0 0 0 f f f f f i 2 0 3926 "20 20" _null_ _null_ _null_ _null_ range_constructor2 _null_ _null_ _null_ ));
DESCR("int8range constructor"); DESCR("int8range constructor");
DATA(insert OID = 3946 ( int8range PGNSP PGUID 12 1 0 0 0 f f f f f i 3 0 3926 "20 20 25" _null_ _null_ _null_ _null_ range_constructor3 _null_ _null_ _null_ )); DATA(insert OID = 3946 ( int8range PGNSP PGUID 12 1 0 0 0 f f f f f i 3 0 3926 "20 20 25" _null_ _null_ _null_ _null_ range_constructor3 _null_ _null_ _null_ ));
......
...@@ -82,8 +82,6 @@ extern Datum range_recv(PG_FUNCTION_ARGS); ...@@ -82,8 +82,6 @@ extern Datum range_recv(PG_FUNCTION_ARGS);
extern Datum range_send(PG_FUNCTION_ARGS); extern Datum range_send(PG_FUNCTION_ARGS);
/* constructors */ /* constructors */
extern Datum range_constructor0(PG_FUNCTION_ARGS);
extern Datum range_constructor1(PG_FUNCTION_ARGS);
extern Datum range_constructor2(PG_FUNCTION_ARGS); extern Datum range_constructor2(PG_FUNCTION_ARGS);
extern Datum range_constructor3(PG_FUNCTION_ARGS); extern Datum range_constructor3(PG_FUNCTION_ARGS);
...@@ -158,7 +156,6 @@ extern int range_cmp_bounds(TypeCacheEntry *typcache, RangeBound *b1, ...@@ -158,7 +156,6 @@ extern int range_cmp_bounds(TypeCacheEntry *typcache, RangeBound *b1,
extern int range_cmp_bound_values(TypeCacheEntry *typcache, RangeBound *b1, extern int range_cmp_bound_values(TypeCacheEntry *typcache, RangeBound *b1,
RangeBound *b2); RangeBound *b2);
extern RangeType *make_empty_range(TypeCacheEntry *typcache); extern RangeType *make_empty_range(TypeCacheEntry *typcache);
extern RangeType *make_singleton_range(TypeCacheEntry *typcache, Datum val);
/* GiST support (in rangetypes_gist.c) */ /* GiST support (in rangetypes_gist.c) */
extern Datum range_gist_consistent(PG_FUNCTION_ARGS); extern Datum range_gist_consistent(PG_FUNCTION_ARGS);
......
...@@ -191,7 +191,7 @@ INSERT INTO numrange_test VALUES('[3,]'); ...@@ -191,7 +191,7 @@ INSERT INTO numrange_test VALUES('[3,]');
INSERT INTO numrange_test VALUES('[, 5)'); INSERT INTO numrange_test VALUES('[, 5)');
INSERT INTO numrange_test VALUES(numrange(1.1, 2.2)); INSERT INTO numrange_test VALUES(numrange(1.1, 2.2));
INSERT INTO numrange_test VALUES('empty'); INSERT INTO numrange_test VALUES('empty');
INSERT INTO numrange_test VALUES(numrange(1.7)); INSERT INTO numrange_test VALUES(numrange(1.7, 1.7, '[]'));
SELECT nr, isempty(nr), lower(nr), upper(nr) FROM numrange_test; SELECT nr, isempty(nr), lower(nr), upper(nr) FROM numrange_test;
nr | isempty | lower | upper nr | isempty | lower | upper
-----------+---------+-------+------- -----------+---------+-------+-------
...@@ -839,17 +839,17 @@ create table test_range_excl( ...@@ -839,17 +839,17 @@ create table test_range_excl(
NOTICE: CREATE TABLE / EXCLUDE will create implicit index "test_range_excl_room_during_excl" for table "test_range_excl" NOTICE: CREATE TABLE / EXCLUDE will create implicit index "test_range_excl_room_during_excl" for table "test_range_excl"
NOTICE: CREATE TABLE / EXCLUDE will create implicit index "test_range_excl_speaker_during_excl" for table "test_range_excl" NOTICE: CREATE TABLE / EXCLUDE will create implicit index "test_range_excl_speaker_during_excl" for table "test_range_excl"
insert into test_range_excl insert into test_range_excl
values(int4range(123), int4range(1), '[2010-01-02 10:00, 2010-01-02 11:00)'); values(int4range(123, 123, '[]'), int4range(1, 1, '[]'), '[2010-01-02 10:00, 2010-01-02 11:00)');
insert into test_range_excl insert into test_range_excl
values(int4range(123), int4range(2), '[2010-01-02 11:00, 2010-01-02 12:00)'); values(int4range(123, 123, '[]'), int4range(2, 2, '[]'), '[2010-01-02 11:00, 2010-01-02 12:00)');
insert into test_range_excl insert into test_range_excl
values(int4range(123), int4range(3), '[2010-01-02 10:10, 2010-01-02 11:00)'); values(int4range(123, 123, '[]'), int4range(3, 3, '[]'), '[2010-01-02 10:10, 2010-01-02 11:00)');
ERROR: conflicting key value violates exclusion constraint "test_range_excl_room_during_excl" ERROR: conflicting key value violates exclusion constraint "test_range_excl_room_during_excl"
DETAIL: Key (room, during)=([123,124), ["Sat Jan 02 10:10:00 2010","Sat Jan 02 11:00:00 2010")) conflicts with existing key (room, during)=([123,124), ["Sat Jan 02 10:00:00 2010","Sat Jan 02 11:00:00 2010")). DETAIL: Key (room, during)=([123,124), ["Sat Jan 02 10:10:00 2010","Sat Jan 02 11:00:00 2010")) conflicts with existing key (room, during)=([123,124), ["Sat Jan 02 10:00:00 2010","Sat Jan 02 11:00:00 2010")).
insert into test_range_excl insert into test_range_excl
values(int4range(124), int4range(3), '[2010-01-02 10:10, 2010-01-02 11:10)'); values(int4range(124, 124, '[]'), int4range(3, 3, '[]'), '[2010-01-02 10:10, 2010-01-02 11:10)');
insert into test_range_excl insert into test_range_excl
values(int4range(125), int4range(1), '[2010-01-02 10:10, 2010-01-02 11:00)'); values(int4range(125, 125, '[]'), int4range(1, 1, '[]'), '[2010-01-02 10:10, 2010-01-02 11:00)');
ERROR: conflicting key value violates exclusion constraint "test_range_excl_speaker_during_excl" ERROR: conflicting key value violates exclusion constraint "test_range_excl_speaker_during_excl"
DETAIL: Key (speaker, during)=([1,2), ["Sat Jan 02 10:10:00 2010","Sat Jan 02 11:00:00 2010")) conflicts with existing key (speaker, during)=([1,2), ["Sat Jan 02 10:00:00 2010","Sat Jan 02 11:00:00 2010")). DETAIL: Key (speaker, during)=([1,2), ["Sat Jan 02 10:10:00 2010","Sat Jan 02 11:00:00 2010")) conflicts with existing key (speaker, during)=([1,2), ["Sat Jan 02 10:00:00 2010","Sat Jan 02 11:00:00 2010")).
-- test bigint ranges -- test bigint ranges
...@@ -1000,10 +1000,10 @@ HINT: No function matches the given name and argument types. You might need to ...@@ -1000,10 +1000,10 @@ HINT: No function matches the given name and argument types. You might need to
-- --
-- Arrays of ranges -- Arrays of ranges
-- --
select ARRAY[numrange(1.1), numrange(12.3,155.5)]; select ARRAY[numrange(1.1, 1.2), numrange(12.3, 155.5)];
array array
------------------------------ ------------------------------
{"[1.1,1.1]","[12.3,155.5)"} {"[1.1,1.2)","[12.3,155.5)"}
(1 row) (1 row)
create table i8r_array (f1 int, f2 int8range[]); create table i8r_array (f1 int, f2 int8range[]);
......
...@@ -54,7 +54,7 @@ INSERT INTO numrange_test VALUES('[3,]'); ...@@ -54,7 +54,7 @@ INSERT INTO numrange_test VALUES('[3,]');
INSERT INTO numrange_test VALUES('[, 5)'); INSERT INTO numrange_test VALUES('[, 5)');
INSERT INTO numrange_test VALUES(numrange(1.1, 2.2)); INSERT INTO numrange_test VALUES(numrange(1.1, 2.2));
INSERT INTO numrange_test VALUES('empty'); INSERT INTO numrange_test VALUES('empty');
INSERT INTO numrange_test VALUES(numrange(1.7)); INSERT INTO numrange_test VALUES(numrange(1.7, 1.7, '[]'));
SELECT nr, isempty(nr), lower(nr), upper(nr) FROM numrange_test; SELECT nr, isempty(nr), lower(nr), upper(nr) FROM numrange_test;
SELECT nr, lower_inc(nr), lower_inf(nr), upper_inc(nr), upper_inf(nr) FROM numrange_test; SELECT nr, lower_inc(nr), lower_inf(nr), upper_inc(nr), upper_inf(nr) FROM numrange_test;
...@@ -239,15 +239,15 @@ create table test_range_excl( ...@@ -239,15 +239,15 @@ create table test_range_excl(
); );
insert into test_range_excl insert into test_range_excl
values(int4range(123), int4range(1), '[2010-01-02 10:00, 2010-01-02 11:00)'); values(int4range(123, 123, '[]'), int4range(1, 1, '[]'), '[2010-01-02 10:00, 2010-01-02 11:00)');
insert into test_range_excl insert into test_range_excl
values(int4range(123), int4range(2), '[2010-01-02 11:00, 2010-01-02 12:00)'); values(int4range(123, 123, '[]'), int4range(2, 2, '[]'), '[2010-01-02 11:00, 2010-01-02 12:00)');
insert into test_range_excl insert into test_range_excl
values(int4range(123), int4range(3), '[2010-01-02 10:10, 2010-01-02 11:00)'); values(int4range(123, 123, '[]'), int4range(3, 3, '[]'), '[2010-01-02 10:10, 2010-01-02 11:00)');
insert into test_range_excl insert into test_range_excl
values(int4range(124), int4range(3), '[2010-01-02 10:10, 2010-01-02 11:10)'); values(int4range(124, 124, '[]'), int4range(3, 3, '[]'), '[2010-01-02 10:10, 2010-01-02 11:10)');
insert into test_range_excl insert into test_range_excl
values(int4range(125), int4range(1), '[2010-01-02 10:10, 2010-01-02 11:00)'); values(int4range(125, 125, '[]'), int4range(1, 1, '[]'), '[2010-01-02 10:10, 2010-01-02 11:00)');
-- test bigint ranges -- test bigint ranges
select int8range(10000000000::int8, 20000000000::int8,'(]'); select int8range(10000000000::int8, 20000000000::int8,'(]');
...@@ -344,7 +344,7 @@ select rangetypes_sql(numrange(1,10), ARRAY[2,20]); -- match failure ...@@ -344,7 +344,7 @@ select rangetypes_sql(numrange(1,10), ARRAY[2,20]); -- match failure
-- Arrays of ranges -- Arrays of ranges
-- --
select ARRAY[numrange(1.1), numrange(12.3,155.5)]; select ARRAY[numrange(1.1, 1.2), numrange(12.3, 155.5)];
create table i8r_array (f1 int, f2 int8range[]); create table i8r_array (f1 int, f2 int8range[]);
insert into i8r_array values (42, array[int8range(1,10), int8range(2,20)]); insert into i8r_array values (42, array[int8range(1,10), int8range(2,20)]);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment