Re: Generating random unique alphanumeric IDs - Mailing list pgsql-general

From Scott Marlowe
Subject Re: Generating random unique alphanumeric IDs
Date
Msg-id dcc563d10908162227n21fae66em448e467b63893192@mail.gmail.com
Whole thread Raw
In response to Re: Generating random unique alphanumeric IDs  (Alvaro Herrera <alvherre@commandprompt.com>)
List pgsql-general
On Sun, Aug 16, 2009 at 6:12 PM, Alvaro
Herrera<alvherre@commandprompt.com> wrote:
> It's in the wiki, in the Snippets area.
> wiki.postgresql.org/wiki/Snippets
> (pseudo encrypt or something like that I think it's called)

Here's a simple 255 value linear feedback shift register.  It's
nothing fancy, but works as an example.  It's not any kind of a secure
sequence, but can be handy for generating pseudo random codes for
things like identifiers that need to not be sequential.

create table lfsr (b bit(8));
insert into lfsr values ('10100011');
create or replace function lf() returns bit(8) language sql as $$
update lfsr set b=(select
((substring(b,1,1)#substring(b,3,1)#substring(b,4,1)#substring(b,5,1)))::bit(8)>>7|(b<<1)
from lfsr) ;
select b from lfsr $$;
create table l (b bit(8), i int);
insert into l select lf(),generate_series(1,255);
select count(distinct(b)) from l;
select b, count(b) from l group by b having count(b) > 1;
insert into l select lf(),generate_series(1,1);
select b, count(b) from l group by b having count(b) > 1;

pgsql-general by date:

Previous
From: Andrew Bartley
Date:
Subject: Re: Function Logging
Next
From: David Fetter
Date:
Subject: Re: plpgsql function to validate e-mail