Re: General purpose hashing func in pgbench

Daniel Verite <daniel@manitou-mail.org>

From: "Daniel Verite" <daniel@manitou-mail.org>
To: "Fabien COELHO" <coelho@cri.ensmp.fr>
Cc: "Ildar Musin" <i.musin@postgrespro.ru>,"pgsql-hackers" <pgsql-hackers@postgresql.org>
Date: 2017-12-26T11:03:54Z
Lists: pgsql-hackers
	Fabien COELHO wrote:

> Most "permutation" functions are really cryptographic cyphers which are 
> quite expensive, and require powers of two, which is not what is needed. 
> ISTM that there are some constructs to deal with arbitrary sizes based on 
> cryptographic functions, but that would make it too expensive for the 
> purpose.

FWIW, you might have a look at the permuteseq extension:
  https://pgxn.org/dist/permuteseq
It permutes an arbitrary range of 64-bit integers into itself,
with a user-supplied key as the seed.
Outputs are coerced into the desired range by using the
smallest possible power of two for the Feistel cypher's
block size, and then cycle-walking over the results.


Best regards,
-- 
Daniel Vérité
PostgreSQL-powered mailer: http://www.manitou-mail.org
Twitter: @DanielVerite


Commits

  1. Add general purpose hasing functions to pgbench.