Re: Remove dependence on integer wrapping
От | jian he |
---|---|
Тема | Re: Remove dependence on integer wrapping |
Дата | |
Msg-id | CACJufxHNwqoXoP91a-2D3NytrurTSK_+-hd+XeVCYAbk2F0Uhw@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Remove dependence on integer wrapping (Matthew Kim <matthewkmkim@gmail.com>) |
Ответы |
Re: Remove dependence on integer wrapping
|
Список | pgsql-hackers |
On Fri, Aug 9, 2024 at 6:16 AM Matthew Kim <matthewkmkim@gmail.com> wrote: > > I've updated patch 0004 to check the return value of pg_mul_s32_overflow(). Since tm.tm_year overflowed, the error messageis hardcoded. > --- a/src/backend/utils/adt/date.c +++ b/src/backend/utils/adt/date.c @@ -257,7 +257,10 @@ make_date(PG_FUNCTION_ARGS) if (tm.tm_year < 0) { bc = true; - tm.tm_year = -tm.tm_year; + if (pg_mul_s32_overflow(tm.tm_year, -1, &tm.tm_year)) + ereport(ERROR, + (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE), + errmsg("date field value out of range"))); } Should the error about integers be out of range? SELECT make_date(-2147483648, 1, 1); "-2147483648" is not an allowed integer. \df make_date List of functions Schema | Name | Result data type | Argument data types | Type ------------+-----------+------------------+------------------------------------------+------ pg_catalog | make_date | date | year integer, month integer, day integer | func
В списке pgsql-hackers по дате отправления: