Revert commit 66c0185a3 and follow-on patches.
[pgsql.git] / contrib / uuid-ossp / expected / uuid_ossp.out
blob409c885c33a88de233053cb32a8543765484f747
1 CREATE EXTENSION "uuid-ossp";
2 SELECT uuid_nil();
3                uuid_nil               
4 --------------------------------------
5  00000000-0000-0000-0000-000000000000
6 (1 row)
8 SELECT uuid_ns_dns();
9              uuid_ns_dns              
10 --------------------------------------
11  6ba7b810-9dad-11d1-80b4-00c04fd430c8
12 (1 row)
14 SELECT uuid_ns_url();
15              uuid_ns_url              
16 --------------------------------------
17  6ba7b811-9dad-11d1-80b4-00c04fd430c8
18 (1 row)
20 SELECT uuid_ns_oid();
21              uuid_ns_oid              
22 --------------------------------------
23  6ba7b812-9dad-11d1-80b4-00c04fd430c8
24 (1 row)
26 SELECT uuid_ns_x500();
27              uuid_ns_x500             
28 --------------------------------------
29  6ba7b814-9dad-11d1-80b4-00c04fd430c8
30 (1 row)
32 -- some quick and dirty field extraction functions
33 -- this is actually timestamp concatenated with clock sequence, per RFC 4122
34 CREATE FUNCTION uuid_timestamp_bits(uuid) RETURNS varbit AS
35 $$ SELECT ('x' || substr($1::text, 15, 4) || substr($1::text, 10, 4) ||
36            substr($1::text, 1, 8) || substr($1::text, 20, 4))::bit(80)
37           & x'0FFFFFFFFFFFFFFF3FFF' $$
38 LANGUAGE SQL STRICT IMMUTABLE;
39 CREATE FUNCTION uuid_version_bits(uuid) RETURNS varbit AS
40 $$ SELECT ('x' || substr($1::text, 15, 2))::bit(8) & '11110000' $$
41 LANGUAGE SQL STRICT IMMUTABLE;
42 CREATE FUNCTION uuid_reserved_bits(uuid) RETURNS varbit AS
43 $$ SELECT ('x' || substr($1::text, 20, 2))::bit(8) & '11000000' $$
44 LANGUAGE SQL STRICT IMMUTABLE;
45 CREATE FUNCTION uuid_multicast_bit(uuid) RETURNS bool AS
46 $$ SELECT (('x' || substr($1::text, 25, 2))::bit(8) & '00000001') != '00000000' $$
47 LANGUAGE SQL STRICT IMMUTABLE;
48 CREATE FUNCTION uuid_local_admin_bit(uuid) RETURNS bool AS
49 $$ SELECT (('x' || substr($1::text, 25, 2))::bit(8) & '00000010') != '00000000' $$
50 LANGUAGE SQL STRICT IMMUTABLE;
51 CREATE FUNCTION uuid_node(uuid) RETURNS text AS
52 $$ SELECT substr($1::text, 25) $$
53 LANGUAGE SQL STRICT IMMUTABLE;
54 -- Ideally, the multicast bit would never be set in V1 output, but the
55 -- UUID library may fall back to MC if it can't get the system MAC address.
56 -- Also, the local-admin bit might be set (if so, we're probably inside a VM).
57 -- So we can't test either bit here.
58 SELECT uuid_version_bits(uuid_generate_v1()),
59        uuid_reserved_bits(uuid_generate_v1());
60  uuid_version_bits | uuid_reserved_bits 
61 -------------------+--------------------
62  00010000          | 10000000
63 (1 row)
65 -- Although RFC 4122 only requires the multicast bit to be set in V1MC style
66 -- UUIDs, our implementation always sets the local-admin bit as well.
67 SELECT uuid_version_bits(uuid_generate_v1mc()),
68        uuid_reserved_bits(uuid_generate_v1mc()),
69        uuid_multicast_bit(uuid_generate_v1mc()),
70        uuid_local_admin_bit(uuid_generate_v1mc());
71  uuid_version_bits | uuid_reserved_bits | uuid_multicast_bit | uuid_local_admin_bit 
72 -------------------+--------------------+--------------------+----------------------
73  00010000          | 10000000           | t                  | t
74 (1 row)
76 -- timestamp+clock sequence should be monotonic increasing in v1
77 SELECT uuid_timestamp_bits(uuid_generate_v1()) < uuid_timestamp_bits(uuid_generate_v1());
78  ?column? 
79 ----------
80  t
81 (1 row)
83 SELECT uuid_timestamp_bits(uuid_generate_v1mc()) < uuid_timestamp_bits(uuid_generate_v1mc());
84  ?column? 
85 ----------
86  t
87 (1 row)
89 -- Ideally, the node value is stable in V1 addresses, but OSSP UUID
90 -- falls back to V1MC behavior if it can't get the system MAC address.
91 SELECT CASE WHEN uuid_multicast_bit(uuid_generate_v1()) AND
92                  uuid_local_admin_bit(uuid_generate_v1()) THEN
93          true -- punt, no test
94        ELSE
95          uuid_node(uuid_generate_v1()) = uuid_node(uuid_generate_v1())
96        END;
97  case 
98 ------
99  t
100 (1 row)
102 -- In any case, V1MC node addresses should be random.
103 SELECT uuid_node(uuid_generate_v1()) <> uuid_node(uuid_generate_v1mc());
104  ?column? 
105 ----------
107 (1 row)
109 SELECT uuid_node(uuid_generate_v1mc()) <> uuid_node(uuid_generate_v1mc());
110  ?column? 
111 ----------
113 (1 row)
115 SELECT uuid_generate_v3(uuid_ns_dns(), 'www.widgets.com');
116            uuid_generate_v3           
117 --------------------------------------
118  3d813cbb-47fb-32ba-91df-831e1593ac29
119 (1 row)
121 SELECT uuid_generate_v5(uuid_ns_dns(), 'www.widgets.com');
122            uuid_generate_v5           
123 --------------------------------------
124  21f7f8de-8051-5b89-8680-0195ef798b6a
125 (1 row)
127 SELECT uuid_version_bits(uuid_generate_v4()),
128        uuid_reserved_bits(uuid_generate_v4());
129  uuid_version_bits | uuid_reserved_bits 
130 -------------------+--------------------
131  01000000          | 10000000
132 (1 row)
134 SELECT uuid_generate_v4() <> uuid_generate_v4();
135  ?column? 
136 ----------
138 (1 row)