• Tom Lane's avatar
    Allow fractional input values for integer GUCs, and improve rounding logic. · 1a83a80a
    Tom Lane authored
    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
    1a83a80a
reloptions.out 7.77 KB