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.1.1 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.1.0 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.167 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.166 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.165 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.164 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.163 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.162 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.161 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.160 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.159 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.158 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.157 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.156 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.155 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.153 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.152 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.151 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.149 db/functions/pseudo_encrypt_v01.sql
renalware-core-2.0.148 db/functions/pseudo_encrypt_v01.sql