mirror of
https://github.com/postgres/postgres.git
synced 2025-07-28 23:42:10 +03:00
Convert [autovacuum_]vacuum_cost_delay into floating-point GUCs.
This change makes it possible to specify sub-millisecond delays, which work well on most modern platforms, though that was not true when the cost-delay feature was designed. To support this without breaking existing configuration entries, improve guc.c to allow floating-point GUCs to have units. Also, allow "us" (microseconds) as an input/output unit for time-unit GUCs. (It's not allowed as a base unit, at least not yet.) Likewise change the autovacuum_vacuum_cost_delay reloption to be floating-point; this forces a catversion bump because the layout of StdRdOptions changes. This patch doesn't in itself change the default values or allowed ranges for these parameters, and it should not affect the behavior for any already-allowed setting for them. Discussion: https://postgr.es/m/1798.1552165479@sss.pgh.pa.us
This commit is contained in:
@ -149,11 +149,11 @@ SELECT '2006-08-13 12:34:56'::timestamptz;
|
||||
(1 row)
|
||||
|
||||
SAVEPOINT first_sp;
|
||||
SET vacuum_cost_delay TO 80;
|
||||
SET vacuum_cost_delay TO 80.1;
|
||||
SHOW vacuum_cost_delay;
|
||||
vacuum_cost_delay
|
||||
-------------------
|
||||
80ms
|
||||
80100us
|
||||
(1 row)
|
||||
|
||||
SET datestyle = 'German, DMY';
|
||||
@ -183,7 +183,7 @@ SELECT '2006-08-13 12:34:56'::timestamptz;
|
||||
(1 row)
|
||||
|
||||
SAVEPOINT second_sp;
|
||||
SET vacuum_cost_delay TO 90;
|
||||
SET vacuum_cost_delay TO '900us';
|
||||
SET datestyle = 'SQL, YMD';
|
||||
SHOW datestyle;
|
||||
DateStyle
|
||||
@ -222,7 +222,7 @@ ROLLBACK TO third_sp;
|
||||
SHOW vacuum_cost_delay;
|
||||
vacuum_cost_delay
|
||||
-------------------
|
||||
90ms
|
||||
900us
|
||||
(1 row)
|
||||
|
||||
SHOW datestyle;
|
||||
@ -508,7 +508,7 @@ SELECT '2006-08-13 12:34:56'::timestamptz;
|
||||
|
||||
-- Test some simple error cases
|
||||
SET seq_page_cost TO 'NaN';
|
||||
ERROR: parameter "seq_page_cost" requires a numeric value
|
||||
ERROR: invalid value for parameter "seq_page_cost": "NaN"
|
||||
SET vacuum_cost_delay TO '10s';
|
||||
ERROR: 10000 ms is outside the valid range for parameter "vacuum_cost_delay" (0 .. 100)
|
||||
SET geqo_selection_bias TO '-infinity';
|
||||
|
@ -47,7 +47,7 @@ SET datestyle = 'MDY';
|
||||
SHOW datestyle;
|
||||
SELECT '2006-08-13 12:34:56'::timestamptz;
|
||||
SAVEPOINT first_sp;
|
||||
SET vacuum_cost_delay TO 80;
|
||||
SET vacuum_cost_delay TO 80.1;
|
||||
SHOW vacuum_cost_delay;
|
||||
SET datestyle = 'German, DMY';
|
||||
SHOW datestyle;
|
||||
@ -56,7 +56,7 @@ ROLLBACK TO first_sp;
|
||||
SHOW datestyle;
|
||||
SELECT '2006-08-13 12:34:56'::timestamptz;
|
||||
SAVEPOINT second_sp;
|
||||
SET vacuum_cost_delay TO 90;
|
||||
SET vacuum_cost_delay TO '900us';
|
||||
SET datestyle = 'SQL, YMD';
|
||||
SHOW datestyle;
|
||||
SELECT '2006-08-13 12:34:56'::timestamptz;
|
||||
|
Reference in New Issue
Block a user