mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			98 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
UUID Generation Functions
 | 
						|
=========================
 | 
						|
Peter Eisentraut <peter_e@gmx.net>
 | 
						|
 | 
						|
This module provides functions to generate universally unique
 | 
						|
identifiers (UUIDs) using one of the several standard algorithms, as
 | 
						|
well as functions to produce certain special UUID constants.
 | 
						|
 | 
						|
 | 
						|
Installation
 | 
						|
------------
 | 
						|
 | 
						|
The extra library required can be found at
 | 
						|
<http://www.ossp.org/pkg/lib/uuid/>.
 | 
						|
 | 
						|
 | 
						|
UUID Generation
 | 
						|
---------------
 | 
						|
 | 
						|
The relevant standards ITU-T Rec. X.667, ISO/IEC 9834-8:2005, and RFC
 | 
						|
4122 specify four algorithms for generating UUIDs, identified by the
 | 
						|
version numbers 1, 3, 4, and 5.  (There is no version 2 algorithm.)
 | 
						|
Each of these algorithms could be suitable for a different set of
 | 
						|
applications.
 | 
						|
 | 
						|
uuid_generate_v1()
 | 
						|
~~~~~~~~~~~~~~~~~~
 | 
						|
 | 
						|
This function generates a version 1 UUID.  This involves the MAC
 | 
						|
address of the computer and a time stamp.  Note that UUIDs of this
 | 
						|
kind reveal the identity of the computer that created the identifier
 | 
						|
and the time at which it did so, which might make it unsuitable for
 | 
						|
certain security-sensitive applications.
 | 
						|
 | 
						|
uuid_generate_v1mc()
 | 
						|
~~~~~~~~~~~~~~~~~~~~
 | 
						|
 | 
						|
This function generates a version 1 UUID but uses a random multicast
 | 
						|
MAC address instead of the real MAC address of the computer.
 | 
						|
 | 
						|
uuid_generate_v3(namespace uuid, name text)
 | 
						|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
						|
 | 
						|
This function generates a version 3 UUID in the given namespace using
 | 
						|
the specified input name.  The namespace should be one of the special
 | 
						|
constants produced by the uuid_ns_*() functions shown below.  (It
 | 
						|
could be any UUID in theory.)  The name is an identifier in the
 | 
						|
selected namespace.  For example:
 | 
						|
 | 
						|
  uuid_generate_v3(uuid_ns_url(), 'http://www.postgresql.org')
 | 
						|
 | 
						|
The name parameter will be MD5-hashed, so the cleartext cannot be
 | 
						|
derived from the generated UUID.
 | 
						|
 | 
						|
The generation of UUIDs by this method has no random or
 | 
						|
environment-dependent element and is therefore reproducible.
 | 
						|
 | 
						|
uuid_generate_v4()
 | 
						|
~~~~~~~~~~~~~~~~~~
 | 
						|
 | 
						|
This function generates a version 4 UUID, which is derived entirely
 | 
						|
from random numbers.
 | 
						|
 | 
						|
uuid_generate_v5(namespace uuid, name text)
 | 
						|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
						|
 | 
						|
This function generates a version 5 UUID, which works like a version 3
 | 
						|
UUID except that SHA-1 is used as a hashing method.  Version 5 should
 | 
						|
be preferred over version 3 because SHA-1 is thought to be more secure
 | 
						|
than MD5.
 | 
						|
 | 
						|
 | 
						|
UUID Constants
 | 
						|
--------------
 | 
						|
 | 
						|
  uuid_nil()
 | 
						|
 | 
						|
A "nil" UUID constant, which does not occur as a real UUID.
 | 
						|
 | 
						|
  uuid_ns_dns()
 | 
						|
 | 
						|
Constant designating the DNS namespace for UUIDs.
 | 
						|
 | 
						|
  uuid_ns_url()
 | 
						|
 | 
						|
Constant designating the URL namespace for UUIDs.
 | 
						|
 | 
						|
  uuid_ns_oid()
 | 
						|
 | 
						|
Constant designating the ISO object identifier (OID) namespace for
 | 
						|
UUIDs.  (This pertains to ASN.1 OIDs, unrelated to the OIDs used in
 | 
						|
PostgreSQL.)
 | 
						|
 | 
						|
  uuid_ns_x500()
 | 
						|
 | 
						|
Constant designating the X.500 distinguished name (DN) namespace for
 | 
						|
UUIDs.
 |