summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2025-09-25 13:29:02 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2025-09-25 13:29:37 -0400
commite849bd551c323a384f2b14d20a1b7bfaa6127ed7 (patch)
treebcae2bb0dbf5ccca5cc2d4188e4e72fa4608da30 /src
parent803ef0ed49eec57990053da1091f9e3b5a7fb839 (diff)
Add minimal sleep to stats isolation test functions.
The functions test_stat_func() and test_stat_func2() had empty function bodies, so that they took very little time to run. This made it possible that on machines with relatively low timer resolution the functions could return before the clock advanced, making the test fail (as seen on buildfarm members fruitcrow and hamerkop). To avoid that, pg_sleep for 10us during the functions. As far as we can tell, all current hardware has clock resolution much less than that. (The current implementation of pg_sleep will round it up to 1ms anyway, but someday that might get improved.) Author: Michael Banck <mbanck@gmx.net> Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us> Discussion: https://postgr.es/m/68d413a3.a70a0220.24c74c.8be9@mx.google.com Backpatch-through: 15
Diffstat (limited to 'src')
-rw-r--r--src/test/isolation/specs/stats.spec7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/test/isolation/specs/stats.spec b/src/test/isolation/specs/stats.spec
index 1d98ac785b8..e6d29749915 100644
--- a/src/test/isolation/specs/stats.spec
+++ b/src/test/isolation/specs/stats.spec
@@ -6,10 +6,13 @@ setup
INSERT INTO test_stat_tab(key, value) VALUES('k0', 1);
INSERT INTO test_stat_oid(name, oid) VALUES('test_stat_tab', 'test_stat_tab'::regclass);
- CREATE FUNCTION test_stat_func() RETURNS VOID LANGUAGE plpgsql AS $$BEGIN END;$$;
+ -- include 10us sleep to ensure that runtime measures as more than zero
+ CREATE FUNCTION test_stat_func() RETURNS VOID LANGUAGE plpgsql AS
+ $$BEGIN PERFORM pg_sleep(10e-6); END;$$;
INSERT INTO test_stat_oid(name, oid) VALUES('test_stat_func', 'test_stat_func'::regproc);
- CREATE FUNCTION test_stat_func2() RETURNS VOID LANGUAGE plpgsql AS $$BEGIN END;$$;
+ CREATE FUNCTION test_stat_func2() RETURNS VOID LANGUAGE plpgsql AS
+ $$BEGIN PERFORM pg_sleep(10e-6); END;$$;
INSERT INTO test_stat_oid(name, oid) VALUES('test_stat_func2', 'test_stat_func2'::regproc);
CREATE TABLE test_slru_stats(slru TEXT, stat TEXT, value INT);