Thread: PostgreSQL and uuid/guid

PostgreSQL and uuid/guid

From
Mario Splivalo
Date:
Hello all.

While browsing the web I've seen that many people 'need' the ability to
create uuid/guid values from within the PostgreSQL. Most of them are
switching from MSSQL, and they're missing the newid() function, which in
MSSQL created the uuid/guid value.

Now I'm in need of such function too. I'm finaly putting together
MSSQL-like-merge-replication for PostgreSQL, and the guid/uuid values
would come more than handy here.

Let's pretend for a moment here that I'm not satisfied with any other
solution (for instance, assigning IDs for each replication 'subscriber',
and then combining that ID with sequence generated numbers to have
unique ID's within the replication system), and that I realy need
guid/uids.

I've found source code for the guid/uuid.  There is a program, called
uuidgen, wich creates the uuid. uuidgen is part of the libuuid1 package
from Debian/GNU. The sources are in the e2fsprogs pacgages, where I
found the source for the uuidgen.

Now, it should be possible to create postgresql function (in python,
forn instance) wich would call the uuidgen program, but that approach
seems rather slow.

I'd like to have postgresql function written in C that would call
uuid_generate
(http://www.die.net/doc/linux/man/man3/uuid_generate.3.html).
Considering what is said for the uuidgen manpage (concerning random and
pseudorandom generated numbers) I feel that uuids generated this way are
what I need.

What is the general feeling concerning the uuid issue I explained above?
I've never written a C postgreSQL function, and any help (or
documentation pointout) would be greatly appreciated.

If I posted this to the wrong mailing list, please point me out to the
correct one.
Mario
-- 
Mario Splivalo
Mob-Art
mario.splivalo@mobart.hr

"I can do it quick, I can do it cheap, I can do it well. Pick any two."




Re: PostgreSQL and uuid/guid

From
george young
Date:
On Mon, 02 Jan 2006 14:26:14 +0100
Mario Splivalo <mario.splivalo@mobart.hr> threw this fish to the penguins:

> While browsing the web I've seen that many people 'need' the ability to
> create uuid/guid values from within the PostgreSQL. Most of them are
> switching from MSSQL, and they're missing the newid() function, which in
> MSSQL created the uuid/guid value.
> 
> Now I'm in need of such function too. I'm finaly putting together
> MSSQL-like-merge-replication for PostgreSQL, and the guid/uuid values
> would come more than handy here.
...
> Now, it should be possible to create postgresql function (in python,
> forn instance) wich would call the uuidgen program, but that approach
> seems rather slow.

Since it looks like you are familiar with python, you could try a uuid generator in pure python -- here's one I played
witha while ago:
 
(don't know if it's still maintained, but there are others if you search comp.lang.python).
 http://www.alcyone.com/pyos/uid/

> I'd like to have postgresql function written in C that would call
> uuid_generate
> (http://www.die.net/doc/linux/man/man3/uuid_generate.3.html).
> Considering what is said for the uuidgen manpage (concerning random and
> pseudorandom generated numbers) I feel that uuids generated this way are
> what I need.
> 
> What is the general feeling concerning the uuid issue I explained above?
> I've never written a C postgreSQL function, and any help (or
> documentation pointout) would be greatly appreciated.
> If I posted this to the wrong mailing list, please point me out to the
> correct one.

You question is quite welcome here!

-- George Young
-- 
"Are the gods not just?"  "Oh no, child.
What would become of us if they were?" (CSL)