Re: pgsql: Allow numeric scale to be negative or greater than precision.

From: Simon Riggs <simon(dot)riggs(at)enterprisedb(dot)com>
To: Dean Rasheed <dean(dot)a(dot)rasheed(at)gmail(dot)com>
Cc: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: Re: pgsql: Allow numeric scale to be negative or greater than precision.
Date: 2021-07-27 16:10:41
Message-ID: CANbhV-HnsH6rFQF29y5NTgS5B7rivKBHdd3nspg_q2xT9X2ESg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

This is for migration?

Or does it mean very small values now occupy less space since we store
fewer zeros?

Thanks

On Mon, 26 Jul 2021 at 14:17, Dean Rasheed <dean(dot)a(dot)rasheed(at)gmail(dot)com> wrote:
>
> Allow numeric scale to be negative or greater than precision.
>
> Formerly, when specifying NUMERIC(precision, scale), the scale had to
> be in the range [0, precision], which was per SQL spec. This commit
> extends the range of allowed scales to [-1000, 1000], independent of
> the precision (whose valid range remains [1, 1000]).
>
> A negative scale implies rounding before the decimal point. For
> example, a column might be declared with a scale of -3 to round values
> to the nearest thousand. Note that the display scale remains
> non-negative, so in this case the display scale will be zero, and all
> digits before the decimal point will be displayed.
>
> A scale greater than the precision supports fractional values with
> zeros immediately after the decimal point.
>
> Take the opportunity to tidy up the code that packs, unpacks and
> validates the contents of a typmod integer, encapsulating it in a
> small set of new inline functions.
>
> Bump the catversion because the allowed contents of atttypmod have
> changed for numeric columns. This isn't a change that requires a
> re-initdb, but negative scale values in the typmod would confuse old
> backends.
>
> Dean Rasheed, with additional improvements by Tom Lane. Reviewed by
> Tom Lane.
>
> Discussion: https://postgr.es/m/CAEZATCWdNLgpKihmURF8nfofP0RFtAKJ7ktY6GcZOPnMfUoRqA@mail.gmail.com
>
> Branch
> ------
> master
>
> Details
> -------
> https://git.postgresql.org/pg/commitdiff/085f931f52494e1f304e35571924efa6fcdc2b44
>
> Modified Files
> --------------
> doc/src/sgml/datatype.sgml | 48 ++++++++++-
> src/backend/utils/adt/numeric.c | 130 +++++++++++++++++++++--------
> src/include/catalog/catversion.h | 2 +-
> src/include/utils/numeric.h | 16 +++-
> src/test/regress/expected/numeric.out | 63 ++++++++++++++
> src/test/regress/expected/sanity_check.out | 1 +
> src/test/regress/sql/numeric.sql | 34 ++++++++
> 7 files changed, 251 insertions(+), 43 deletions(-)
>

--
Simon Riggs http://www.EnterpriseDB.com/

In response to

Responses

Browse pgsql-committers by date

  From Date Subject
Next Message Tom Lane 2021-07-27 16:22:47 Re: pgsql: Allow numeric scale to be negative or greater than precision.
Previous Message Tom Lane 2021-07-27 16:08:28 pgsql: In event triggers, use "pg_temp" only for our own temp schema.