Re: pgbench - add pseudo-random permutation function

From: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
To: Fabien COELHO <coelho(at)cri(dot)ensmp(dot)fr>
Cc: Thomas Munro <thomas(dot)munro(at)gmail(dot)com>, David Steele <david(at)pgmasters(dot)net>, Peter Eisentraut <peter(dot)eisentraut(at)2ndquadrant(dot)com>, Tomas Vondra <tomas(dot)vondra(at)2ndquadrant(dot)com>, Hironobu SUZUKI <hironobu(at)interdb(dot)jp>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: pgbench - add pseudo-random permutation function
Date: 2021-03-14 14:54:46
Message-ID: 20210314145446.GA31638@alvherre.pgsql
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 2021-Mar-14, Fabien COELHO wrote:

> + /*-----
> + * Apply 4 rounds of bijective transformations using key updated
> + * at each stage:
> + *
> + * (1) whiten: partial xors on overlapping power-of-2 subsets
> + * for instance with v in 0 .. 14 (i.e. with size == 15):
> + * if v is in 0 .. 7 do v = (v ^ k) % 8
> + * if v is in 7 .. 14 do v = 14 - ((14-v) ^ k) % 8
> + * note that because of the overlap (here 7), v may be changed twice.
> + * this transformation if bijective because the condition to apply it
> + * is still true after applying it, and xor itself is bijective on a
> + * power-of-2 size.
> + *
> + * (2) scatter: linear modulo
> + * v = (v * p + k) % size
> + * this transformation is bijective is p & size are prime, which is
> + * ensured in the code by the while loop which discards primes when
> + * size is a multiple of it.
> + *
> + */

My main question on this now is, do you have a scholar reference for
this algorithm?

--
Álvaro Herrera Valdivia, Chile
"Someone said that it is at least an order of magnitude more work to do
production software than a prototype. I think he is wrong by at least
an order of magnitude." (Brian Kernighan)

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Julien Rouhaud 2021-03-14 14:57:37 Re: REINDEX backend filtering
Previous Message Dmitry Dolgov 2021-03-14 14:48:33 Re: Index Skip Scan (new UniqueKeys)