Sha256: f6dd61418ff69f51a2c256821ece90bcee33cb92fea1c9e008761620331520dd

Contents?: true

Size: 759 Bytes

Versions: 131

Compression:

Stored size: 759 Bytes

Contents

/*
See https://wiki.postgresql.org/wiki/Pseudo_encrypt
Encrypt an id eg 101 and generate a unique integer eg
  select pseudo_encrypt(101); # => 1064847687
pseudo_encrypt will always return the same number for any input integer.
Useful creating a psuedo-random id that is guaranteed to be unique.
Could be used in conjunction with a sequence
*/
CREATE OR REPLACE FUNCTION renalware.pseudo_encrypt(VALUE int) returns int AS $$
DECLARE
l1 int;
l2 int;
r1 int;
r2 int;
i int:=0;
BEGIN
 l1:= (VALUE >> 16) & 65535;
 r1:= VALUE & 65535;
 WHILE i < 3 LOOP
   l2 := r1;
   r2 := l1 # ((((1366 * r1 + 150889) % 714025) / 714025.0) * 32767)::int;
   l1 := l2;
   r1 := r2;
   i := i + 1;
 END LOOP;
 RETURN ((r1 << 16) + l1);
END;
$$ LANGUAGE plpgsql strict immutable;

Version data entries

131 entries across 131 versions & 1 rubygems

Version Path
renalware-core-2.0.147 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.146 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.145 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.144 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.143 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.142 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.141 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.140 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.139 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.138 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.137 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.136 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.135 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.134 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.133 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.132 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.131 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.130 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.129 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.128 db/functions/pseudo_encrypt_v01.sql