views:

26

answers:

2

Hi guys,

I am running PostgreSQL 8.4.4 with Ubuntu 10.04.

I am trying to generate uuid but can't find a way to do it.

I do have the uuid-ossp.sql in /usr/share/postgresql/8.4/contrib/uuid-ossp.sql

When I try this is what I get :

postgres=# SELECT uuid_generate_v1();
ERROR:  function uuid_generate_v1() does not exist
LINE 1: SELECT uuid_generate_v1();
               ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.

Any idea ?

+2  A: 

The stuff in contrib aren't run automatically. You have to run it yourself to install the functions. I don't know about the 8.4 version, but in the 8.3 version it appears to only install it per-database, so open up the database you're using in psql and issue the command \i /usr/share/postgresql/8.4/contrib/uuid-ossp.sql

Paul Tomblin
Thank you. It worked. Good to know !
Spredzy
Yes, it's per database. You could install everything in the template1 database to be sure every new database that uses this database as its template (this is the default), is created including all contrib modules.
Frank Heikens
A: 

I saw this in my PostgreSQL travels. It requires the pgcrypto contrib module.

CREATE OR REPLACE FUNCTION generate_uuid() RETURNS UUID AS
$$
SELECT ENCODE(GEN_RANDOM_BYTES(16), 'hex')::UUID
$$ LANGUAGE SQL IMMUTABLE;
Gary Chambers