UUID Data Type
Stores universally unique identifiers (UUIDs). UUIDs are 16-byte (128-bit) numbers used to uniquely identify records. To generate UUIDs, Vertica provides the function UUID_GENERATE
, which returns UUIDs based on high-quality randomness from /dev/urandom
.
Syntax
UUID
UUID Input and Output Formats
UUIDs support input of case-insensitive string literal formats, as specified by RFC 4122. In general, a UUID is written as a sequence of hexadecimal digits, in several groups optionally separated by hyphens, for a total of 32 digits representing 128 bits.
The following input formats are valid:
6bbf0744-74b4-46b9-bb05-53905d4538e7 {6bbf0744-74b4-46b9-bb05-53905d4538e7} 6BBF074474B446B9BB0553905D4538E7 6BBf-0744-74B4-46B9-BB05-5390-5D45-38E7
On output, Vertica always uses the following format:
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
For example, the following table defines column cust_id
as a UUID:
=> CREATE TABLE public.Customers ( cust_id uuid, lname varchar(36), fname varchar(24) );
The following input for cust_id
uses several valid formats:
=> COPY Customers FROM STDIN; Enter data to be copied followed by a newline. End with a backslash and a period on a line by itself. >> {cede66b7-3d29-4da6-b700-871fc0ac57be}|Kearney|Thomas >> 34462732ed5649838f3be735b0c32d50|Pham|Duc >> 9fb0-1de0-1d63-4d09-9415-90e0-b4e9-3b9a|Steinberg|Jeremy >> \.
On querying this table, Vertica formats all cust_id
data in the same way:
=> SELECT cust_id, fname, lname FROM Customers; cust_id | fname | lname --------------------------------------+--------+----------- 9fb01de0-1d63-4d09-9415-90e0b4e93b9a | Jeremy | Steinberg 34462732-ed56-4983-8f3b-e735b0c32d50 | Duc | Pham cede66b7-3d29-4da6-b700-871fc0ac57be | Thomas | Kearney (3 rows)
Generating UUIDs
You can use the Vertica function UUID_GENERATE
to automatically generate UUIDs that uniquely identify table records. For example:
=> INSERT INTO Customers SELECT UUID_GENERATE(),'Rostova','Natasha';
OUTPUT -------- 1 (1 row) => COMMIT; COMMIT => SELECT cust_id, fname, lname FROM Customers; cust_id | fname | lname --------------------------------------+---------+----------- 9fb01de0-1d63-4d09-9415-90e0b4e93b9a | Jeremy | Steinberg 34462732-ed56-4983-8f3b-e735b0c32d50 | Duc | Pham cede66b7-3d29-4da6-b700-871fc0ac57be | Thomas | Kearney 9aad6757-fe1b-473a-a109-b89b7b358c69 | Natasha | Rostova (4 rows)
NULL Input and Output
The following string is reserved as NULL for UUID columns:
00000000-0000-0000-0000-000000000000
Vertica always renders NULL as blank.
The following COPY
statements insert NULL values into the UUID column, explicitly and implicitly:
=> COPY Customers FROM STDIN NULL AS 'null'; Enter data to be copied followed by a newline. End with a backslash and a period on a line by itself. >> null|Doe|Jane >> 00000000-0000-0000-0000-000000000000|Man|Nowhere >> \. => COPY Customers FROM STDIN; >> |Doe|John >> \.
In all cases, Vertica renders NULL as blank:
=> SELECT cust_id, fname, lname FROM Customers WHERE cust_id IS NULL; cust_id | fname | lname ---------+---------+------- | Nowhere | Man | Jane | Doe | John | Doe (3 rows)
Usage Restrictions
UUID data types only support relational operators and functions that are also supported by CHAR and VARCHAR data types—for example, MIN
, MAX
, and COUNT
. UUID data types do not support mathematical operators or functions, such as SUM
and AVG
.