| 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: | Whole Thread | Raw Message | 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/
| 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: Use the "pg_temp" schema alias in EXPLAIN and related output. |