pgsql: Add non-decimal integer support to type numeric. - Mailing list pgsql-committers

From Dean Rasheed
Subject pgsql: Add non-decimal integer support to type numeric.
Date
Msg-id E1pK2P6-00575z-Oe@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Add non-decimal integer support to type numeric.

This enhances the numeric type input function, adding support for
hexadecimal, octal, and binary integers of any size, up to the limits
of the numeric type.

Since 6fcda9aba8, such non-decimal integers have been accepted by the
parser as integer literals and passed through to numeric_in(). This
commit gives numeric_in() the ability to handle them.

While at it, simplify the handling of NaN and infinities, reducing the
number of calls to pg_strncasecmp(), and arrange for pg_strncasecmp()
to not be called at all for regular numbers. This gives a significant
performance improvement for decimal inputs, more than offsetting the
small performance hit of checking for non-decimal input.

Discussion: https://postgr.es/m/CAEZATCV8XShnmT9HZy25C%2Bo78CVOFmUN5EM9FRAZ5xvYTggPMg%40mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/6dfacbf72b53b775e8442a7fd2fca7c24b139773

Modified Files
--------------
src/backend/utils/adt/numeric.c          | 360 +++++++++++++++++++++++++------
src/test/regress/expected/numeric.out    |  78 +++++--
src/test/regress/expected/numerology.out |  48 +++--
src/test/regress/sql/numeric.sql         |  14 ++
4 files changed, 405 insertions(+), 95 deletions(-)


pgsql-committers by date:

Previous
From: Tom Lane
Date:
Subject: pgsql: Fix pgindent --show-diff option.
Next
From: Pavel Stehule
Date:
Subject: Re: pgsql: Remove special outfuncs/readfuncs handling of RangeVar.catalogna