pgsql: Allow fractional input values for integer GUCs, and improve roun

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Allow fractional input values for integer GUCs, and improve roun
Date: 2019-03-11 23:14:07
Message-ID: E1h3U7T-0001PV-7W@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Allow fractional input values for integer GUCs, and improve rounding logic.

Historically guc.c has just refused examples like set work_mem = '30.1GB',
but it seems more useful for it to take that and round off the value to
some reasonable approximation of what the user said. Just rounding to
the parameter's native unit would work, but it would lead to rather
silly-looking settings, such as 31562138kB for this example. Instead
let's round to the nearest multiple of the next smaller unit (if any),
producing 30822MB.

Also, do the units conversion math in floating point and round to integer
(if needed) only at the end. This produces saner results for inputs that
aren't exact multiples of the parameter's native unit, and removes another
difference in the behavior for integer vs. float parameters.

In passing, document the ability to use hex or octal input where it
ought to be documented.

Discussion: https://postgr.es/m/1798.1552165479@sss.pgh.pa.us

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/1a83a80a2fe5b559f85ed4830acb92d5124b7a9a

Modified Files
--------------
doc/src/sgml/config.sgml | 18 ++++++-
src/backend/utils/misc/guc.c | 83 +++++++++++++++++++++-----------
src/test/regress/expected/reloptions.out | 5 +-
src/test/regress/sql/reloptions.sql | 2 +-
4 files changed, 74 insertions(+), 34 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Michael Paquier 2019-03-12 01:06:04 pgsql: Add routine able to update the control file to src/common/
Previous Message Andrew Dunstan 2019-03-11 22:24:41 pgsql: Tweak wording on VARIADIC array doc patch.