summaryrefslogtreecommitdiff
path: root/src/backend
diff options
context:
space:
mode:
authorTom Lane2011-11-23 01:45:05 +0000
committerTom Lane2011-11-23 01:45:05 +0000
commitdf73584431e7edb1dd76578777bd0fcc17b916a1 (patch)
tree3fb50fe824636a99d0af48ea153bfb362475c84b /src/backend
parentcddc819e45010492da00164d225a749661f43aef (diff)
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.
Diffstat (limited to 'src/backend')
-rw-r--r--src/backend/commands/typecmds.c6
-rw-r--r--src/backend/utils/adt/rangetypes.c58
2 files changed, 2 insertions, 62 deletions
diff --git a/src/backend/commands/typecmds.c b/src/backend/commands/typecmds.c
index 54105f2c408..1516a2aba4f 100644
--- a/src/backend/commands/typecmds.c
+++ b/src/backend/commands/typecmds.c
@@ -1495,11 +1495,9 @@ static void
makeRangeConstructors(const char *name, Oid namespace,
Oid rangeOid, Oid subtype)
{
- static const char * const prosrc[4] = {"range_constructor0",
- "range_constructor1",
- "range_constructor2",
+ static const char * const prosrc[2] = {"range_constructor2",
"range_constructor3"};
- static const int pronargs[4] = {0, 1, 2, 3};
+ static const int pronargs[2] = {2, 3};
Oid constructorArgTypes[3];
ObjectAddress myself,
diff --git a/src/backend/utils/adt/rangetypes.c b/src/backend/utils/adt/rangetypes.c
index dbad4bf6020..3326cb17c89 100644
--- a/src/backend/utils/adt/rangetypes.c
+++ b/src/backend/utils/adt/rangetypes.c
@@ -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 */
Datum
range_constructor2(PG_FUNCTION_ARGS)
@@ -1775,28 +1739,6 @@ make_empty_range(TypeCacheEntry *typcache)
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);
-}
-
/*
*----------------------------------------------------------