From c472b8366f5bec1da4d5d5b894f47508bbc8d5d6 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sat, 13 Sep 2003 21:44:50 +0000 Subject: [PATCH] With Joe Conway's concurrence, remove srandom() call from normal_rand(). This was the last piece of code that took it upon itself to reset the random number sequence --- now we only have srandom() in postmaster start, backend start, and explicit setseed() operations. --- contrib/tablefunc/README.tablefunc | 11 ++++------- contrib/tablefunc/expected/tablefunc.out | 2 +- contrib/tablefunc/sql/tablefunc.sql | 2 +- contrib/tablefunc/tablefunc.c | 10 ++-------- contrib/tablefunc/tablefunc.sql.in | 2 +- 5 files changed, 9 insertions(+), 18 deletions(-) diff --git a/contrib/tablefunc/README.tablefunc b/contrib/tablefunc/README.tablefunc index b80899e957..ddae931319 100644 --- a/contrib/tablefunc/README.tablefunc +++ b/contrib/tablefunc/README.tablefunc @@ -48,7 +48,7 @@ Installation: installs following functions into database template1: - normal_rand(int numvals, float8 mean, float8 stddev, int seed) + normal_rand(int numvals, float8 mean, float8 stddev) - returns a set of normally distributed float8 values crosstabN(text sql) @@ -74,12 +74,12 @@ Documentation ================================================================== Name -normal_rand(int, float8, float8, int) - returns a set of normally +normal_rand(int, float8, float8) - returns a set of normally distributed float8 values Synopsis -normal_rand(int numvals, float8 mean, float8 stddev, int seed) +normal_rand(int numvals, float8 mean, float8 stddev) Inputs @@ -92,9 +92,6 @@ Inputs stddev the standard deviation of the normal distribution of values - seed - a seed value for the pseudo-random number generator - Outputs Returns setof float8, where the returned set of random values are normally @@ -103,7 +100,7 @@ Outputs Example usage test=# SELECT * FROM - test=# normal_rand(1000, 5, 3, EXTRACT(SECONDS FROM CURRENT_TIME(0))::int); + test=# normal_rand(1000, 5, 3); normal_rand ---------------------- 1.56556322244898 diff --git a/contrib/tablefunc/expected/tablefunc.out b/contrib/tablefunc/expected/tablefunc.out index fa69cf3b4a..2e412e5cfa 100644 --- a/contrib/tablefunc/expected/tablefunc.out +++ b/contrib/tablefunc/expected/tablefunc.out @@ -7,7 +7,7 @@ -- normal_rand() -- no easy way to do this for regression testing -- -SELECT avg(normal_rand)::int FROM normal_rand(100, 250, 0.2, EXTRACT(SECONDS FROM CURRENT_TIME(0))::int); +SELECT avg(normal_rand)::int FROM normal_rand(100, 250, 0.2); avg ----- 250 diff --git a/contrib/tablefunc/sql/tablefunc.sql b/contrib/tablefunc/sql/tablefunc.sql index fe0e4d44bc..5292fc2bc7 100644 --- a/contrib/tablefunc/sql/tablefunc.sql +++ b/contrib/tablefunc/sql/tablefunc.sql @@ -10,7 +10,7 @@ -- normal_rand() -- no easy way to do this for regression testing -- -SELECT avg(normal_rand)::int FROM normal_rand(100, 250, 0.2, EXTRACT(SECONDS FROM CURRENT_TIME(0))::int); +SELECT avg(normal_rand)::int FROM normal_rand(100, 250, 0.2); -- -- crosstab() diff --git a/contrib/tablefunc/tablefunc.c b/contrib/tablefunc/tablefunc.c index 312c63a4c0..031d7c8bc8 100644 --- a/contrib/tablefunc/tablefunc.c +++ b/contrib/tablefunc/tablefunc.c @@ -165,8 +165,8 @@ typedef struct crosstab_hashent * normal_rand - return requested number of random values * with a Gaussian (Normal) distribution. * - * inputs are int numvals, float8 lower_bound, and float8 upper_bound - * returns float8 + * inputs are int numvals, float8 mean, and float8 stddev + * returns setof float8 */ PG_FUNCTION_INFO_V1(normal_rand); Datum @@ -213,12 +213,6 @@ normal_rand(PG_FUNCTION_ARGS) funcctx->user_fctx = fctx; - /* - * we might actually get passed a negative number, but for this - * purpose it doesn't matter, just cast it as an unsigned value - */ - srandom(PG_GETARG_UINT32(3)); - MemoryContextSwitchTo(oldcontext); } diff --git a/contrib/tablefunc/tablefunc.sql.in b/contrib/tablefunc/tablefunc.sql.in index 2714db199c..f3d5d3d8a1 100644 --- a/contrib/tablefunc/tablefunc.sql.in +++ b/contrib/tablefunc/tablefunc.sql.in @@ -1,7 +1,7 @@ -- Adjust this setting to control where the objects get created. SET search_path = public; -CREATE OR REPLACE FUNCTION normal_rand(int4, float8, float8, int4) +CREATE OR REPLACE FUNCTION normal_rand(int4, float8, float8) RETURNS setof float8 AS 'MODULE_PATHNAME','normal_rand' LANGUAGE 'C' VOLATILE STRICT; -- 2.40.0