[COMMITTERS] pgsql: Fix behavior when converting a float infinity to numeric.

Поиск
Список
Период
Сортировка
От Tom Lane
Тема [COMMITTERS] pgsql: Fix behavior when converting a float infinity to numeric.
Дата
Msg-id E1dxJX4-0004wc-3L@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Fix behavior when converting a float infinity to numeric.

float8_numeric() and float4_numeric() failed to consider the possibility
that the input is an IEEE infinity.  The results depended on the
platform-specific behavior of sprintf(): on most platforms you'd get
something like

ERROR:  invalid input syntax for type numeric: "inf"

but at least on Windows it's possible for the conversion to succeed and
deliver a finite value (typically 1), due to a nonstandard output format
from sprintf and lack of syntax error checking in these functions.

Since our numeric type lacks the concept of infinity, a suitable conversion
is impossible; the best thing to do is throw an explicit error before
letting sprintf do its thing.

While at it, let's use snprintf not sprintf.  Overrunning the buffer
should be impossible if sprintf does what it's supposed to, but this
is cheap insurance against a stack smash if it doesn't.

Problem reported by Taiki Kondo.  Patch by me based on fix suggestion
from KaiGai Kohei.  Back-patch to all supported branches.

Discussion: https://postgr.es/m/12A9442FBAE80D4E8953883E0B84E088C8C7A2@BPXM01GP.gisp.nec.co.jp

Branch
------
REL9_5_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/ad56dbd6c0b87e95fb1cf45025bb7dd8152a9f59

Modified Files
--------------
src/backend/utils/adt/numeric.c       | 14 ++++++++++++--
src/test/regress/expected/numeric.out | 21 +++++++++++++++++++++
src/test/regress/sql/numeric.sql      |  8 ++++++++
3 files changed, 41 insertions(+), 2 deletions(-)


--
Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers

В списке pgsql-committers по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: [COMMITTERS] pgsql: Revert to 9.6 treatment of ALTER TYPE enumtype ADD VALUE.
Следующее
От: Amit Langote
Дата:
Сообщение: PartitionSchemaData & partcollation (Re: [COMMITTERS] pgsql:Associate partitioning information with each RelOptInfo.)