4 -- test various cases of valid and invalid input
6 SELECT '08:00:2b:01:02:03 '::macaddr8;
8 -------------------------
9 08:00:2b:ff:fe:01:02:03
12 SELECT ' 08:00:2b:01:02:03 '::macaddr8;
14 -------------------------
15 08:00:2b:ff:fe:01:02:03
18 SELECT ' 08:00:2b:01:02:03'::macaddr8;
20 -------------------------
21 08:00:2b:ff:fe:01:02:03
24 SELECT '08:00:2b:01:02:03:04:05 '::macaddr8;
26 -------------------------
27 08:00:2b:01:02:03:04:05
30 SELECT ' 08:00:2b:01:02:03:04:05 '::macaddr8;
32 -------------------------
33 08:00:2b:01:02:03:04:05
36 SELECT ' 08:00:2b:01:02:03:04:05'::macaddr8;
38 -------------------------
39 08:00:2b:01:02:03:04:05
42 SELECT '123 08:00:2b:01:02:03'::macaddr8; -- invalid
43 ERROR: invalid input syntax for type macaddr8: "123 08:00:2b:01:02:03"
44 LINE 1: SELECT '123 08:00:2b:01:02:03'::macaddr8;
46 SELECT '08:00:2b:01:02:03 123'::macaddr8; -- invalid
47 ERROR: invalid input syntax for type macaddr8: "08:00:2b:01:02:03 123"
48 LINE 1: SELECT '08:00:2b:01:02:03 123'::macaddr8;
50 SELECT '123 08:00:2b:01:02:03:04:05'::macaddr8; -- invalid
51 ERROR: invalid input syntax for type macaddr8: "123 08:00:2b:01:02:03:04:05"
52 LINE 1: SELECT '123 08:00:2b:01:02:03:04:05'::macaddr8;
54 SELECT '08:00:2b:01:02:03:04:05 123'::macaddr8; -- invalid
55 ERROR: invalid input syntax for type macaddr8: "08:00:2b:01:02:03:04:05 123"
56 LINE 1: SELECT '08:00:2b:01:02:03:04:05 123'::macaddr8;
58 SELECT '08:00:2b:01:02:03:04:05:06:07'::macaddr8; -- invalid
59 ERROR: invalid input syntax for type macaddr8: "08:00:2b:01:02:03:04:05:06:07"
60 LINE 1: SELECT '08:00:2b:01:02:03:04:05:06:07'::macaddr8;
62 SELECT '08-00-2b-01-02-03-04-05-06-07'::macaddr8; -- invalid
63 ERROR: invalid input syntax for type macaddr8: "08-00-2b-01-02-03-04-05-06-07"
64 LINE 1: SELECT '08-00-2b-01-02-03-04-05-06-07'::macaddr8;
66 SELECT '08002b:01020304050607'::macaddr8; -- invalid
67 ERROR: invalid input syntax for type macaddr8: "08002b:01020304050607"
68 LINE 1: SELECT '08002b:01020304050607'::macaddr8;
70 SELECT '08002b01020304050607'::macaddr8; -- invalid
71 ERROR: invalid input syntax for type macaddr8: "08002b01020304050607"
72 LINE 1: SELECT '08002b01020304050607'::macaddr8;
74 SELECT '0z002b0102030405'::macaddr8; -- invalid
75 ERROR: invalid input syntax for type macaddr8: "0z002b0102030405"
76 LINE 1: SELECT '0z002b0102030405'::macaddr8;
78 SELECT '08002b010203xyza'::macaddr8; -- invalid
79 ERROR: invalid input syntax for type macaddr8: "08002b010203xyza"
80 LINE 1: SELECT '08002b010203xyza'::macaddr8;
82 SELECT '08:00-2b:01:02:03:04:05'::macaddr8; -- invalid
83 ERROR: invalid input syntax for type macaddr8: "08:00-2b:01:02:03:04:05"
84 LINE 1: SELECT '08:00-2b:01:02:03:04:05'::macaddr8;
86 SELECT '08:00-2b:01:02:03:04:05'::macaddr8; -- invalid
87 ERROR: invalid input syntax for type macaddr8: "08:00-2b:01:02:03:04:05"
88 LINE 1: SELECT '08:00-2b:01:02:03:04:05'::macaddr8;
90 SELECT '08:00:2b:01.02:03:04:05'::macaddr8; -- invalid
91 ERROR: invalid input syntax for type macaddr8: "08:00:2b:01.02:03:04:05"
92 LINE 1: SELECT '08:00:2b:01.02:03:04:05'::macaddr8;
94 SELECT '08:00:2b:01.02:03:04:05'::macaddr8; -- invalid
95 ERROR: invalid input syntax for type macaddr8: "08:00:2b:01.02:03:04:05"
96 LINE 1: SELECT '08:00:2b:01.02:03:04:05'::macaddr8;
98 -- test converting a MAC address to modified EUI-64 for inclusion
100 SELECT macaddr8_set7bit('00:08:2b:01:02:03'::macaddr8);
102 -------------------------
103 02:08:2b:ff:fe:01:02:03
106 CREATE TABLE macaddr8_data (a int, b macaddr8);
107 INSERT INTO macaddr8_data VALUES (1, '08:00:2b:01:02:03');
108 INSERT INTO macaddr8_data VALUES (2, '08-00-2b-01-02-03');
109 INSERT INTO macaddr8_data VALUES (3, '08002b:010203');
110 INSERT INTO macaddr8_data VALUES (4, '08002b-010203');
111 INSERT INTO macaddr8_data VALUES (5, '0800.2b01.0203');
112 INSERT INTO macaddr8_data VALUES (6, '0800-2b01-0203');
113 INSERT INTO macaddr8_data VALUES (7, '08002b010203');
114 INSERT INTO macaddr8_data VALUES (8, '0800:2b01:0203');
115 INSERT INTO macaddr8_data VALUES (9, 'not even close'); -- invalid
116 ERROR: invalid input syntax for type macaddr8: "not even close"
117 LINE 1: INSERT INTO macaddr8_data VALUES (9, 'not even close');
119 INSERT INTO macaddr8_data VALUES (10, '08:00:2b:01:02:04');
120 INSERT INTO macaddr8_data VALUES (11, '08:00:2b:01:02:02');
121 INSERT INTO macaddr8_data VALUES (12, '08:00:2a:01:02:03');
122 INSERT INTO macaddr8_data VALUES (13, '08:00:2c:01:02:03');
123 INSERT INTO macaddr8_data VALUES (14, '08:00:2a:01:02:04');
124 INSERT INTO macaddr8_data VALUES (15, '08:00:2b:01:02:03:04:05');
125 INSERT INTO macaddr8_data VALUES (16, '08-00-2b-01-02-03-04-05');
126 INSERT INTO macaddr8_data VALUES (17, '08002b:0102030405');
127 INSERT INTO macaddr8_data VALUES (18, '08002b-0102030405');
128 INSERT INTO macaddr8_data VALUES (19, '0800.2b01.0203.0405');
129 INSERT INTO macaddr8_data VALUES (20, '08002b01:02030405');
130 INSERT INTO macaddr8_data VALUES (21, '08002b0102030405');
131 SELECT * FROM macaddr8_data ORDER BY 1;
133 ----+-------------------------
134 1 | 08:00:2b:ff:fe:01:02:03
135 2 | 08:00:2b:ff:fe:01:02:03
136 3 | 08:00:2b:ff:fe:01:02:03
137 4 | 08:00:2b:ff:fe:01:02:03
138 5 | 08:00:2b:ff:fe:01:02:03
139 6 | 08:00:2b:ff:fe:01:02:03
140 7 | 08:00:2b:ff:fe:01:02:03
141 8 | 08:00:2b:ff:fe:01:02:03
142 10 | 08:00:2b:ff:fe:01:02:04
143 11 | 08:00:2b:ff:fe:01:02:02
144 12 | 08:00:2a:ff:fe:01:02:03
145 13 | 08:00:2c:ff:fe:01:02:03
146 14 | 08:00:2a:ff:fe:01:02:04
147 15 | 08:00:2b:01:02:03:04:05
148 16 | 08:00:2b:01:02:03:04:05
149 17 | 08:00:2b:01:02:03:04:05
150 18 | 08:00:2b:01:02:03:04:05
151 19 | 08:00:2b:01:02:03:04:05
152 20 | 08:00:2b:01:02:03:04:05
153 21 | 08:00:2b:01:02:03:04:05
156 CREATE INDEX macaddr8_data_btree ON macaddr8_data USING btree (b);
157 CREATE INDEX macaddr8_data_hash ON macaddr8_data USING hash (b);
158 SELECT a, b, trunc(b) FROM macaddr8_data ORDER BY 2, 1;
160 ----+-------------------------+-------------------------
161 12 | 08:00:2a:ff:fe:01:02:03 | 08:00:2a:00:00:00:00:00
162 14 | 08:00:2a:ff:fe:01:02:04 | 08:00:2a:00:00:00:00:00
163 15 | 08:00:2b:01:02:03:04:05 | 08:00:2b:00:00:00:00:00
164 16 | 08:00:2b:01:02:03:04:05 | 08:00:2b:00:00:00:00:00
165 17 | 08:00:2b:01:02:03:04:05 | 08:00:2b:00:00:00:00:00
166 18 | 08:00:2b:01:02:03:04:05 | 08:00:2b:00:00:00:00:00
167 19 | 08:00:2b:01:02:03:04:05 | 08:00:2b:00:00:00:00:00
168 20 | 08:00:2b:01:02:03:04:05 | 08:00:2b:00:00:00:00:00
169 21 | 08:00:2b:01:02:03:04:05 | 08:00:2b:00:00:00:00:00
170 11 | 08:00:2b:ff:fe:01:02:02 | 08:00:2b:00:00:00:00:00
171 1 | 08:00:2b:ff:fe:01:02:03 | 08:00:2b:00:00:00:00:00
172 2 | 08:00:2b:ff:fe:01:02:03 | 08:00:2b:00:00:00:00:00
173 3 | 08:00:2b:ff:fe:01:02:03 | 08:00:2b:00:00:00:00:00
174 4 | 08:00:2b:ff:fe:01:02:03 | 08:00:2b:00:00:00:00:00
175 5 | 08:00:2b:ff:fe:01:02:03 | 08:00:2b:00:00:00:00:00
176 6 | 08:00:2b:ff:fe:01:02:03 | 08:00:2b:00:00:00:00:00
177 7 | 08:00:2b:ff:fe:01:02:03 | 08:00:2b:00:00:00:00:00
178 8 | 08:00:2b:ff:fe:01:02:03 | 08:00:2b:00:00:00:00:00
179 10 | 08:00:2b:ff:fe:01:02:04 | 08:00:2b:00:00:00:00:00
180 13 | 08:00:2c:ff:fe:01:02:03 | 08:00:2c:00:00:00:00:00
183 SELECT b < '08:00:2b:01:02:04' FROM macaddr8_data WHERE a = 1; -- true
189 SELECT b > '08:00:2b:ff:fe:01:02:04' FROM macaddr8_data WHERE a = 1; -- false
195 SELECT b > '08:00:2b:ff:fe:01:02:03' FROM macaddr8_data WHERE a = 1; -- false
201 SELECT b::macaddr <= '08:00:2b:01:02:04' FROM macaddr8_data WHERE a = 1; -- true
207 SELECT b::macaddr >= '08:00:2b:01:02:04' FROM macaddr8_data WHERE a = 1; -- false
213 SELECT b = '08:00:2b:ff:fe:01:02:03' FROM macaddr8_data WHERE a = 1; -- true
219 SELECT b::macaddr <> '08:00:2b:01:02:04'::macaddr FROM macaddr8_data WHERE a = 1; -- true
225 SELECT b::macaddr <> '08:00:2b:01:02:03'::macaddr FROM macaddr8_data WHERE a = 1; -- false
231 SELECT b < '08:00:2b:01:02:03:04:06' FROM macaddr8_data WHERE a = 15; -- true
237 SELECT b > '08:00:2b:01:02:03:04:06' FROM macaddr8_data WHERE a = 15; -- false
243 SELECT b > '08:00:2b:01:02:03:04:05' FROM macaddr8_data WHERE a = 15; -- false
249 SELECT b <= '08:00:2b:01:02:03:04:06' FROM macaddr8_data WHERE a = 15; -- true
255 SELECT b >= '08:00:2b:01:02:03:04:06' FROM macaddr8_data WHERE a = 15; -- false
261 SELECT b = '08:00:2b:01:02:03:04:05' FROM macaddr8_data WHERE a = 15; -- true
267 SELECT b <> '08:00:2b:01:02:03:04:06' FROM macaddr8_data WHERE a = 15; -- true
273 SELECT b <> '08:00:2b:01:02:03:04:05' FROM macaddr8_data WHERE a = 15; -- false
279 SELECT ~b FROM macaddr8_data;
281 -------------------------
282 f7:ff:d4:00:01:fe:fd:fc
283 f7:ff:d4:00:01:fe:fd:fc
284 f7:ff:d4:00:01:fe:fd:fc
285 f7:ff:d4:00:01:fe:fd:fc
286 f7:ff:d4:00:01:fe:fd:fc
287 f7:ff:d4:00:01:fe:fd:fc
288 f7:ff:d4:00:01:fe:fd:fc
289 f7:ff:d4:00:01:fe:fd:fc
290 f7:ff:d4:00:01:fe:fd:fb
291 f7:ff:d4:00:01:fe:fd:fd
292 f7:ff:d5:00:01:fe:fd:fc
293 f7:ff:d3:00:01:fe:fd:fc
294 f7:ff:d5:00:01:fe:fd:fb
295 f7:ff:d4:fe:fd:fc:fb:fa
296 f7:ff:d4:fe:fd:fc:fb:fa
297 f7:ff:d4:fe:fd:fc:fb:fa
298 f7:ff:d4:fe:fd:fc:fb:fa
299 f7:ff:d4:fe:fd:fc:fb:fa
300 f7:ff:d4:fe:fd:fc:fb:fa
301 f7:ff:d4:fe:fd:fc:fb:fa
304 SELECT b & '00:00:00:ff:ff:ff' FROM macaddr8_data;
306 -------------------------
307 00:00:00:ff:fe:01:02:03
308 00:00:00:ff:fe:01:02:03
309 00:00:00:ff:fe:01:02:03
310 00:00:00:ff:fe:01:02:03
311 00:00:00:ff:fe:01:02:03
312 00:00:00:ff:fe:01:02:03
313 00:00:00:ff:fe:01:02:03
314 00:00:00:ff:fe:01:02:03
315 00:00:00:ff:fe:01:02:04
316 00:00:00:ff:fe:01:02:02
317 00:00:00:ff:fe:01:02:03
318 00:00:00:ff:fe:01:02:03
319 00:00:00:ff:fe:01:02:04
320 00:00:00:01:02:03:04:05
321 00:00:00:01:02:03:04:05
322 00:00:00:01:02:03:04:05
323 00:00:00:01:02:03:04:05
324 00:00:00:01:02:03:04:05
325 00:00:00:01:02:03:04:05
326 00:00:00:01:02:03:04:05
329 SELECT b | '01:02:03:04:05:06' FROM macaddr8_data;
331 -------------------------
332 09:02:2b:ff:fe:05:07:07
333 09:02:2b:ff:fe:05:07:07
334 09:02:2b:ff:fe:05:07:07
335 09:02:2b:ff:fe:05:07:07
336 09:02:2b:ff:fe:05:07:07
337 09:02:2b:ff:fe:05:07:07
338 09:02:2b:ff:fe:05:07:07
339 09:02:2b:ff:fe:05:07:07
340 09:02:2b:ff:fe:05:07:06
341 09:02:2b:ff:fe:05:07:06
342 09:02:2b:ff:fe:05:07:07
343 09:02:2f:ff:fe:05:07:07
344 09:02:2b:ff:fe:05:07:06
345 09:02:2b:ff:fe:07:05:07
346 09:02:2b:ff:fe:07:05:07
347 09:02:2b:ff:fe:07:05:07
348 09:02:2b:ff:fe:07:05:07
349 09:02:2b:ff:fe:07:05:07
350 09:02:2b:ff:fe:07:05:07
351 09:02:2b:ff:fe:07:05:07
354 DROP TABLE macaddr8_data;