Re: random() (was Re: New GUC to sample log queries) - Mailing list pgsql-hackers

From Tom Lane
Subject Re: random() (was Re: New GUC to sample log queries)
Date
Msg-id 10518.1545940836@sss.pgh.pa.us
Whole thread Raw
In response to Re: random() (was Re: New GUC to sample log queries)  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: random() (was Re: New GUC to sample log queries)
List pgsql-hackers
I wrote:
> Peter Geoghegan <pg@bowt.ie> writes:
>> We're already making fairly broad assumptions about our having control
>> of the backend's PRNG state within InitProcessGlobals(). How should
>> this affect the new drandom()/setseed() private state, if at all?

> I would think that InitProcessGlobals would initialize drandom's
> seed alongside random()'s seed.  Hopefully to values not easily
> predictable from each other -- see also Munro's comment, which
> I'll respond to in a moment.

On further reflection, it seems likely that in most installations a lot
of processes never invoke drandom()/setseed() at all, making such work
in InitProcessGlobals a waste of cycles.  Probably a better idea is to
have drandom() initialize the seed on first use, if it wasn't already
set by setseed().  This might also make it easier to decouple that
seed value from the random() sequence --- we could use a fresh
timestamp value, and perhaps another strong-RNG call, though I'm not
sure if the latter is worthwhile.

            regards, tom lane


pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: random() (was Re: New GUC to sample log queries)
Next
From: John Naylor
Date:
Subject: Re: reducing the footprint of ScanKeyword (was Re: Large writable variables)