Remove unused parameter in lookup_var_attr_stats
[pgsql.git] / src / test / regress / expected / uuid.out
blob798633ad51e3eb0ceb7e96d12438b76a5c9431c4
1 -- regression test for the uuid datatype
2 -- creating test tables
3 CREATE TABLE guid1
5         guid_field UUID,
6         text_field TEXT DEFAULT(now())
7 );
8 CREATE TABLE guid2
10         guid_field UUID,
11         text_field TEXT DEFAULT(now())
13 CREATE TABLE guid3
15         id SERIAL,
16         guid_field UUID
18 -- inserting invalid data tests
19 -- too long
20 INSERT INTO guid1(guid_field) VALUES('11111111-1111-1111-1111-111111111111F');
21 ERROR:  invalid input syntax for type uuid: "11111111-1111-1111-1111-111111111111F"
22 LINE 1: INSERT INTO guid1(guid_field) VALUES('11111111-1111-1111-111...
23                                              ^
24 -- too short
25 INSERT INTO guid1(guid_field) VALUES('{11111111-1111-1111-1111-11111111111}');
26 ERROR:  invalid input syntax for type uuid: "{11111111-1111-1111-1111-11111111111}"
27 LINE 1: INSERT INTO guid1(guid_field) VALUES('{11111111-1111-1111-11...
28                                              ^
29 -- valid data but invalid format
30 INSERT INTO guid1(guid_field) VALUES('111-11111-1111-1111-1111-111111111111');
31 ERROR:  invalid input syntax for type uuid: "111-11111-1111-1111-1111-111111111111"
32 LINE 1: INSERT INTO guid1(guid_field) VALUES('111-11111-1111-1111-11...
33                                              ^
34 INSERT INTO guid1(guid_field) VALUES('{22222222-2222-2222-2222-222222222222 ');
35 ERROR:  invalid input syntax for type uuid: "{22222222-2222-2222-2222-222222222222 "
36 LINE 1: INSERT INTO guid1(guid_field) VALUES('{22222222-2222-2222-22...
37                                              ^
38 -- invalid data
39 INSERT INTO guid1(guid_field) VALUES('11111111-1111-1111-G111-111111111111');
40 ERROR:  invalid input syntax for type uuid: "11111111-1111-1111-G111-111111111111"
41 LINE 1: INSERT INTO guid1(guid_field) VALUES('11111111-1111-1111-G11...
42                                              ^
43 INSERT INTO guid1(guid_field) VALUES('11+11111-1111-1111-1111-111111111111');
44 ERROR:  invalid input syntax for type uuid: "11+11111-1111-1111-1111-111111111111"
45 LINE 1: INSERT INTO guid1(guid_field) VALUES('11+11111-1111-1111-111...
46                                              ^
47 -- test non-error-throwing API
48 SELECT pg_input_is_valid('11', 'uuid');
49  pg_input_is_valid 
50 -------------------
51  f
52 (1 row)
54 SELECT * FROM pg_input_error_info('11', 'uuid');
55                  message                  | detail | hint | sql_error_code 
56 ------------------------------------------+--------+------+----------------
57  invalid input syntax for type uuid: "11" |        |      | 22P02
58 (1 row)
60 --inserting three input formats
61 INSERT INTO guid1(guid_field) VALUES('11111111-1111-1111-1111-111111111111');
62 INSERT INTO guid1(guid_field) VALUES('{22222222-2222-2222-2222-222222222222}');
63 INSERT INTO guid1(guid_field) VALUES('3f3e3c3b3a3039383736353433a2313e');
64 -- retrieving the inserted data
65 SELECT guid_field FROM guid1;
66               guid_field              
67 --------------------------------------
68  11111111-1111-1111-1111-111111111111
69  22222222-2222-2222-2222-222222222222
70  3f3e3c3b-3a30-3938-3736-353433a2313e
71 (3 rows)
73 -- ordering test
74 SELECT guid_field FROM guid1 ORDER BY guid_field ASC;
75               guid_field              
76 --------------------------------------
77  11111111-1111-1111-1111-111111111111
78  22222222-2222-2222-2222-222222222222
79  3f3e3c3b-3a30-3938-3736-353433a2313e
80 (3 rows)
82 SELECT guid_field FROM guid1 ORDER BY guid_field DESC;
83               guid_field              
84 --------------------------------------
85  3f3e3c3b-3a30-3938-3736-353433a2313e
86  22222222-2222-2222-2222-222222222222
87  11111111-1111-1111-1111-111111111111
88 (3 rows)
90 -- = operator test
91 SELECT COUNT(*) FROM guid1 WHERE guid_field = '3f3e3c3b-3a30-3938-3736-353433a2313e';
92  count 
93 -------
94      1
95 (1 row)
97 -- <> operator test
98 SELECT COUNT(*) FROM guid1 WHERE guid_field <> '11111111111111111111111111111111';
99  count 
100 -------
101      2
102 (1 row)
104 -- < operator test
105 SELECT COUNT(*) FROM guid1 WHERE guid_field < '22222222-2222-2222-2222-222222222222';
106  count 
107 -------
108      1
109 (1 row)
111 -- <= operator test
112 SELECT COUNT(*) FROM guid1 WHERE guid_field <= '22222222-2222-2222-2222-222222222222';
113  count 
114 -------
115      2
116 (1 row)
118 -- > operator test
119 SELECT COUNT(*) FROM guid1 WHERE guid_field > '22222222-2222-2222-2222-222222222222';
120  count 
121 -------
122      1
123 (1 row)
125 -- >= operator test
126 SELECT COUNT(*) FROM guid1 WHERE guid_field >= '22222222-2222-2222-2222-222222222222';
127  count 
128 -------
129      2
130 (1 row)
132 -- btree and hash index creation test
133 CREATE INDEX guid1_btree ON guid1 USING BTREE (guid_field);
134 CREATE INDEX guid1_hash  ON guid1 USING HASH  (guid_field);
135 -- unique index test
136 CREATE UNIQUE INDEX guid1_unique_BTREE ON guid1 USING BTREE (guid_field);
137 EXPLAIN (COSTS OFF)
138 SELECT COUNT(*) FROM guid1 WHERE guid_field <> '11111111111111111111111111111111' OR
139                                                         guid_field <> '3f3e3c3b-3a30-3938-3736-353433a2313e';
140                                                                    QUERY PLAN                                                                   
141 ------------------------------------------------------------------------------------------------------------------------------------------------
142  Aggregate
143    ->  Seq Scan on guid1
144          Filter: ((guid_field <> '11111111-1111-1111-1111-111111111111'::uuid) OR (guid_field <> '3f3e3c3b-3a30-3938-3736-353433a2313e'::uuid))
145 (3 rows)
147 EXPLAIN (COSTS OFF)
148 SELECT COUNT(*) FROM guid1 WHERE guid_field <= '22222222-2222-2222-2222-222222222222' OR
149                                                                         guid_field <= '11111111111111111111111111111111' OR
150                                                                         guid_field <= '3f3e3c3b-3a30-3938-3736-353433a2313e';
151                                                                                                    QUERY PLAN                                                                                                   
152 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
153  Aggregate
154    ->  Seq Scan on guid1
155          Filter: ((guid_field <= '22222222-2222-2222-2222-222222222222'::uuid) OR (guid_field <= '11111111-1111-1111-1111-111111111111'::uuid) OR (guid_field <= '3f3e3c3b-3a30-3938-3736-353433a2313e'::uuid))
156 (3 rows)
158 EXPLAIN (COSTS OFF)
159 SELECT COUNT(*) FROM guid1 WHERE guid_field = '3f3e3c3b-3a30-3938-3736-353433a2313e' OR
160                                                         guid_field = '11111111111111111111111111111111';
161                                                                   QUERY PLAN                                                                  
162 ----------------------------------------------------------------------------------------------------------------------------------------------
163  Aggregate
164    ->  Seq Scan on guid1
165          Filter: ((guid_field = '3f3e3c3b-3a30-3938-3736-353433a2313e'::uuid) OR (guid_field = '11111111-1111-1111-1111-111111111111'::uuid))
166 (3 rows)
168 -- should fail
169 INSERT INTO guid1(guid_field) VALUES('11111111-1111-1111-1111-111111111111');
170 ERROR:  duplicate key value violates unique constraint "guid1_unique_btree"
171 DETAIL:  Key (guid_field)=(11111111-1111-1111-1111-111111111111) already exists.
172 -- check to see whether the new indexes are actually there
173 SELECT count(*) FROM pg_class WHERE relkind='i' AND relname LIKE 'guid%';
174  count 
175 -------
176      3
177 (1 row)
179 -- populating the test tables with additional records
180 INSERT INTO guid1(guid_field) VALUES('44444444-4444-4444-4444-444444444444');
181 INSERT INTO guid2(guid_field) VALUES('11111111-1111-1111-1111-111111111111');
182 INSERT INTO guid2(guid_field) VALUES('{22222222-2222-2222-2222-222222222222}');
183 INSERT INTO guid2(guid_field) VALUES('3f3e3c3b3a3039383736353433a2313e');
184 -- join test
185 SELECT COUNT(*) FROM guid1 g1 INNER JOIN guid2 g2 ON g1.guid_field = g2.guid_field;
186  count 
187 -------
188      3
189 (1 row)
191 SELECT COUNT(*) FROM guid1 g1 LEFT JOIN guid2 g2 ON g1.guid_field = g2.guid_field WHERE g2.guid_field IS NULL;
192  count 
193 -------
194      1
195 (1 row)
197 -- generation test
198 TRUNCATE guid1;
199 INSERT INTO guid1 (guid_field) VALUES (gen_random_uuid());
200 INSERT INTO guid1 (guid_field) VALUES (gen_random_uuid());
201 SELECT count(DISTINCT guid_field) FROM guid1;
202  count 
203 -------
204      2
205 (1 row)
207 -- test of uuidv4() alias
208 TRUNCATE guid1;
209 INSERT INTO guid1 (guid_field) VALUES (uuidv4());
210 INSERT INTO guid1 (guid_field) VALUES (uuidv4());
211 SELECT count(DISTINCT guid_field) FROM guid1;
212  count 
213 -------
214      2
215 (1 row)
217 -- generation test for v7
218 TRUNCATE guid1;
219 INSERT INTO guid1 (guid_field) VALUES (uuidv7());
220 INSERT INTO guid1 (guid_field) VALUES (uuidv7());
221 INSERT INTO guid1 (guid_field) VALUES (uuidv7(INTERVAL '1 day'));
222 SELECT count(DISTINCT guid_field) FROM guid1;
223  count 
224 -------
225      3
226 (1 row)
228 -- test sortability of v7
229 INSERT INTO guid3 (guid_field) SELECT uuidv7() FROM generate_series(1, 10);
230 SELECT array_agg(id ORDER BY guid_field) FROM guid3;
231        array_agg        
232 ------------------------
233  {1,2,3,4,5,6,7,8,9,10}
234 (1 row)
236 -- extract functions
237 -- version
238 SELECT uuid_extract_version('11111111-1111-5111-8111-111111111111');  -- 5
239  uuid_extract_version 
240 ----------------------
241                     5
242 (1 row)
244 SELECT uuid_extract_version(gen_random_uuid());  -- 4
245  uuid_extract_version 
246 ----------------------
247                     4
248 (1 row)
250 SELECT uuid_extract_version('11111111-1111-1111-1111-111111111111');  -- null
251  uuid_extract_version 
252 ----------------------
253                      
254 (1 row)
256 SELECT uuid_extract_version(uuidv4());  -- 4
257  uuid_extract_version 
258 ----------------------
259                     4
260 (1 row)
262 SELECT uuid_extract_version(uuidv7());  -- 7
263  uuid_extract_version 
264 ----------------------
265                     7
266 (1 row)
268 -- timestamp
269 SELECT uuid_extract_timestamp('C232AB00-9414-11EC-B3C8-9F6BDECED846') = 'Tuesday, February 22, 2022 2:22:22.00 PM GMT+05:00';  -- RFC 9562 test vector for v1
270  ?column? 
271 ----------
273 (1 row)
275 SELECT uuid_extract_timestamp('017F22E2-79B0-7CC3-98C4-DC0C0C07398F') = 'Tuesday, February 22, 2022 2:22:22.00 PM GMT+05:00';  -- RFC 9562 test vector for v7
276  ?column? 
277 ----------
279 (1 row)
281 SELECT uuid_extract_timestamp(gen_random_uuid());  -- null
282  uuid_extract_timestamp 
283 ------------------------
285 (1 row)
287 SELECT uuid_extract_timestamp('11111111-1111-1111-1111-111111111111');  -- null
288  uuid_extract_timestamp 
289 ------------------------
291 (1 row)
293 -- clean up
294 DROP TABLE guid1, guid2, guid3 CASCADE;