mirror of
https://github.com/postgres/postgres.git
synced 2025-07-30 11:03:19 +03:00
Return NULL instead of throwing error when desired bound is not available.
Change range_lower and range_upper to return NULL rather than throwing an error when the input range is empty or the relevant bound is infinite. Per discussion, throwing an error seems likely to be unduly hard to work with. Also, this is more consistent with the behavior of the constructors, which treat NULL as meaning an infinite bound.
This commit is contained in:
@ -456,14 +456,9 @@ range_lower(PG_FUNCTION_ARGS)
|
||||
|
||||
range_deserialize(fcinfo, r1, &lower, &upper, &empty);
|
||||
|
||||
if (empty)
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_DATA_EXCEPTION),
|
||||
errmsg("empty range has no lower bound")));
|
||||
if (lower.infinite)
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_DATA_EXCEPTION),
|
||||
errmsg("range lower bound is infinite")));
|
||||
/* Return NULL if there's no finite lower bound */
|
||||
if (empty || lower.infinite)
|
||||
PG_RETURN_NULL();
|
||||
|
||||
PG_RETURN_DATUM(lower.val);
|
||||
}
|
||||
@ -478,14 +473,9 @@ range_upper(PG_FUNCTION_ARGS)
|
||||
|
||||
range_deserialize(fcinfo, r1, &lower, &upper, &empty);
|
||||
|
||||
if (empty)
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_DATA_EXCEPTION),
|
||||
errmsg("empty range has no upper bound")));
|
||||
if (upper.infinite)
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_DATA_EXCEPTION),
|
||||
errmsg("range upper bound is infinite")));
|
||||
/* Return NULL if there's no finite upper bound */
|
||||
if (empty || upper.infinite)
|
||||
PG_RETURN_NULL();
|
||||
|
||||
PG_RETURN_DATUM(upper.val);
|
||||
}
|
||||
|
Reference in New Issue
Block a user