Re: pgsql: Make pgbench use erand48() rather than random().

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: pgsql: Make pgbench use erand48() rather than random().
Дата
Msg-id 24202.1312408420@sss.pgh.pa.us
обсуждение исходный текст
Ответ на pgsql: Make pgbench use erand48() rather than random().  (Robert Haas <rhaas@postgresql.org>)
Ответы Re: pgsql: Make pgbench use erand48() rather than random().  (Robert Haas <robertmhaas@gmail.com>)
Список pgsql-committers
Robert Haas <rhaas@postgresql.org> writes:
> Make pgbench use erand48() rather than random().

Hmm.  I find the pgbench part of this a bit questionable, specifically
your decision to remove the code around line 2590 that installed a
variable srandom() seed in child processes.  That would be okay if we
were no longer depending on random() at all, but you are still depending
on it to initialize the "per thread" state near line 2240.  AFAICS, this
will result in each child process generating the same random
sequence(s), which is exactly what we don't want.

IOW, please put this back:

-   /*
-    * Set a different random seed in each child process.  Otherwise they all
-    * inherit the parent's state and generate the same "random" sequence. (In
-    * the threaded case, the different threads will obtain subsets of the
-    * output of a single random() sequence, which should be okay for our
-    * purposes.)
-    */
-   INSTR_TIME_SET_CURRENT(start_time);
-   srandom(((unsigned int) INSTR_TIME_GET_MICROSEC(start_time)) +
-           ((unsigned int) getpid()));

or provide a credible explanation why we don't need it.

(I guess the comment needs some work, though.)

            regards, tom lane

В списке pgsql-committers по дате отправления:

Предыдущее
От: Robert Haas
Дата:
Сообщение: pgsql: Make pgbench use erand48() rather than random().
Следующее
От: andrewsn@pgfoundry.org (User Andrewsn)
Дата:
Сообщение: ip4r - ip4r: fix some VARDATA / VARDATA_ANY misuses