Here's a PL/pgsql implementation I wrote.....I'm sure critics will be
able to improve upon it:

CREATE or REPLACE FUNCTION "common"."newid"()
RETURNS "pg_catalog"."varchar" AS 
$BODY$
DECLARE
  v_seed_value varchar(32);
BEGIN
select 
md5(
inet_client_addr()::varchar ||
timeofday() ||
inet_server_addr()::varchar ||
to_hex(inet_client_port()) 
)
into v_seed_value;

return (substr(v_seed_value,1,8) || '-' ||
        substr(v_seed_value,9,4) || '-' ||
        substr(v_seed_value,13,4) || '-' ||
        substr(v_seed_value,17,4) || '-' ||
        substr(v_seed_value,21,12));
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE SECURITY DEFINER;

---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
       subscribe-nomail command to [EMAIL PROTECTED] so that your
       message can get through to the mailing list cleanly

Reply via email to