Re: pgbench - add pseudo-random permutation function

Fabien COELHO <coelho@cri.ensmp.fr>

From: Fabien COELHO <coelho@cri.ensmp.fr>
To: Alvaro Herrera <alvherre@2ndquadrant.com>
Cc: David Steele <david@pgmasters.net>, Peter Eisentraut <peter.eisentraut@2ndquadrant.com>, Tomas Vondra <tomas.vondra@2ndquadrant.com>, Thomas Munro <thomas.munro@gmail.com>, Hironobu SUZUKI <hironobu@interdb.jp>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2021-03-08T10:50:43Z
Lists: pgsql-hackers

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. pgbench: Function to generate random permutations.

  2. Add basic support for using the POPCNT and SSE4.2s LZCNT opcodes

  3. Further improve code for probing the availability of ARM CRC instructions.

>> What are your current thoughts?
>
> Thanks for prodding.  I still think it's a useful feature.  However I
> don't think I'll have to time to get it done on the current commitfest.
> I suggest to let it sit in the commitfest to see if somebody else will
> pick it up -- and if not, we move it to the next one, with apologies to
> author and reviewers.
>
> I may have time to become familiar or at least semi-comfortable with all
> that weird math in it by then.

Yep.

Generating a parametric good-quality low-cost (but not 
cryptographically-secure) pseudo-random permutations on arbitrary sizes 
(not juste power of two sizes) is not a trivial task, I had to be quite 
creative to achieve it, hence the "weird" maths. I had a lot of bad 
not-really-working ideas before the current status of the patch.

The code could be simplified if we assume that PG_INT128_TYPE will be 
available on all relevant architectures, and accept the feature not to be 
available if not.

-- 
Fabien.