diff options
| author | Tom Lane | 2011-11-23 01:45:05 +0000 |
|---|---|---|
| committer | Tom Lane | 2011-11-23 01:45:05 +0000 |
| commit | df73584431e7edb1dd76578777bd0fcc17b916a1 (patch) | |
| tree | 3fb50fe824636a99d0af48ea153bfb362475c84b /src/backend | |
| parent | cddc819e45010492da00164d225a749661f43aef (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.c | 6 | ||||
| -rw-r--r-- | src/backend/utils/adt/rangetypes.c | 58 |
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); -} - /* *---------------------------------------------------------- |
