| -- |
| -- macaddr8 |
| -- |
| -- test various cases of valid and invalid input |
| -- valid |
| SELECT '08:00:2b:01:02:03 '::macaddr8; |
| macaddr8 |
| ------------------------- |
| 08:00:2b:ff:fe:01:02:03 |
| (1 row) |
| |
| SELECT ' 08:00:2b:01:02:03 '::macaddr8; |
| macaddr8 |
| ------------------------- |
| 08:00:2b:ff:fe:01:02:03 |
| (1 row) |
| |
| SELECT ' 08:00:2b:01:02:03'::macaddr8; |
| macaddr8 |
| ------------------------- |
| 08:00:2b:ff:fe:01:02:03 |
| (1 row) |
| |
| SELECT '08:00:2b:01:02:03:04:05 '::macaddr8; |
| macaddr8 |
| ------------------------- |
| 08:00:2b:01:02:03:04:05 |
| (1 row) |
| |
| SELECT ' 08:00:2b:01:02:03:04:05 '::macaddr8; |
| macaddr8 |
| ------------------------- |
| 08:00:2b:01:02:03:04:05 |
| (1 row) |
| |
| SELECT ' 08:00:2b:01:02:03:04:05'::macaddr8; |
| macaddr8 |
| ------------------------- |
| 08:00:2b:01:02:03:04:05 |
| (1 row) |
| |
| SELECT '123 08:00:2b:01:02:03'::macaddr8; -- invalid |
| ERROR: invalid input syntax for type macaddr8: "123 08:00:2b:01:02:03" |
| LINE 1: SELECT '123 08:00:2b:01:02:03'::macaddr8; |
| ^ |
| SELECT '08:00:2b:01:02:03 123'::macaddr8; -- invalid |
| ERROR: invalid input syntax for type macaddr8: "08:00:2b:01:02:03 123" |
| LINE 1: SELECT '08:00:2b:01:02:03 123'::macaddr8; |
| ^ |
| SELECT '123 08:00:2b:01:02:03:04:05'::macaddr8; -- invalid |
| ERROR: invalid input syntax for type macaddr8: "123 08:00:2b:01:02:03:04:05" |
| LINE 1: SELECT '123 08:00:2b:01:02:03:04:05'::macaddr8; |
| ^ |
| SELECT '08:00:2b:01:02:03:04:05 123'::macaddr8; -- invalid |
| ERROR: invalid input syntax for type macaddr8: "08:00:2b:01:02:03:04:05 123" |
| LINE 1: SELECT '08:00:2b:01:02:03:04:05 123'::macaddr8; |
| ^ |
| SELECT '08:00:2b:01:02:03:04:05:06:07'::macaddr8; -- invalid |
| ERROR: invalid input syntax for type macaddr8: "08:00:2b:01:02:03:04:05:06:07" |
| LINE 1: SELECT '08:00:2b:01:02:03:04:05:06:07'::macaddr8; |
| ^ |
| SELECT '08-00-2b-01-02-03-04-05-06-07'::macaddr8; -- invalid |
| ERROR: invalid input syntax for type macaddr8: "08-00-2b-01-02-03-04-05-06-07" |
| LINE 1: SELECT '08-00-2b-01-02-03-04-05-06-07'::macaddr8; |
| ^ |
| SELECT '08002b:01020304050607'::macaddr8; -- invalid |
| ERROR: invalid input syntax for type macaddr8: "08002b:01020304050607" |
| LINE 1: SELECT '08002b:01020304050607'::macaddr8; |
| ^ |
| SELECT '08002b01020304050607'::macaddr8; -- invalid |
| ERROR: invalid input syntax for type macaddr8: "08002b01020304050607" |
| LINE 1: SELECT '08002b01020304050607'::macaddr8; |
| ^ |
| SELECT '0z002b0102030405'::macaddr8; -- invalid |
| ERROR: invalid input syntax for type macaddr8: "0z002b0102030405" |
| LINE 1: SELECT '0z002b0102030405'::macaddr8; |
| ^ |
| SELECT '08002b010203xyza'::macaddr8; -- invalid |
| ERROR: invalid input syntax for type macaddr8: "08002b010203xyza" |
| LINE 1: SELECT '08002b010203xyza'::macaddr8; |
| ^ |
| SELECT '08:00-2b:01:02:03:04:05'::macaddr8; -- invalid |
| ERROR: invalid input syntax for type macaddr8: "08:00-2b:01:02:03:04:05" |
| LINE 1: SELECT '08:00-2b:01:02:03:04:05'::macaddr8; |
| ^ |
| SELECT '08:00-2b:01:02:03:04:05'::macaddr8; -- invalid |
| ERROR: invalid input syntax for type macaddr8: "08:00-2b:01:02:03:04:05" |
| LINE 1: SELECT '08:00-2b:01:02:03:04:05'::macaddr8; |
| ^ |
| SELECT '08:00:2b:01.02:03:04:05'::macaddr8; -- invalid |
| ERROR: invalid input syntax for type macaddr8: "08:00:2b:01.02:03:04:05" |
| LINE 1: SELECT '08:00:2b:01.02:03:04:05'::macaddr8; |
| ^ |
| SELECT '08:00:2b:01.02:03:04:05'::macaddr8; -- invalid |
| ERROR: invalid input syntax for type macaddr8: "08:00:2b:01.02:03:04:05" |
| LINE 1: SELECT '08:00:2b:01.02:03:04:05'::macaddr8; |
| ^ |
| -- test converting a MAC address to modified EUI-64 for inclusion |
| -- in an ipv6 address |
| SELECT macaddr8_set7bit('00:08:2b:01:02:03'::macaddr8); |
| macaddr8_set7bit |
| ------------------------- |
| 02:08:2b:ff:fe:01:02:03 |
| (1 row) |
| |
| CREATE TABLE macaddr8_data (a int, b macaddr8); |
| INSERT INTO macaddr8_data VALUES (1, '08:00:2b:01:02:03'); |
| INSERT INTO macaddr8_data VALUES (2, '08-00-2b-01-02-03'); |
| INSERT INTO macaddr8_data VALUES (3, '08002b:010203'); |
| INSERT INTO macaddr8_data VALUES (4, '08002b-010203'); |
| INSERT INTO macaddr8_data VALUES (5, '0800.2b01.0203'); |
| INSERT INTO macaddr8_data VALUES (6, '0800-2b01-0203'); |
| INSERT INTO macaddr8_data VALUES (7, '08002b010203'); |
| INSERT INTO macaddr8_data VALUES (8, '0800:2b01:0203'); |
| INSERT INTO macaddr8_data VALUES (9, 'not even close'); -- invalid |
| ERROR: invalid input syntax for type macaddr8: "not even close" |
| LINE 1: INSERT INTO macaddr8_data VALUES (9, 'not even close'); |
| ^ |
| INSERT INTO macaddr8_data VALUES (10, '08:00:2b:01:02:04'); |
| INSERT INTO macaddr8_data VALUES (11, '08:00:2b:01:02:02'); |
| INSERT INTO macaddr8_data VALUES (12, '08:00:2a:01:02:03'); |
| INSERT INTO macaddr8_data VALUES (13, '08:00:2c:01:02:03'); |
| INSERT INTO macaddr8_data VALUES (14, '08:00:2a:01:02:04'); |
| INSERT INTO macaddr8_data VALUES (15, '08:00:2b:01:02:03:04:05'); |
| INSERT INTO macaddr8_data VALUES (16, '08-00-2b-01-02-03-04-05'); |
| INSERT INTO macaddr8_data VALUES (17, '08002b:0102030405'); |
| INSERT INTO macaddr8_data VALUES (18, '08002b-0102030405'); |
| INSERT INTO macaddr8_data VALUES (19, '0800.2b01.0203.0405'); |
| INSERT INTO macaddr8_data VALUES (20, '08002b01:02030405'); |
| INSERT INTO macaddr8_data VALUES (21, '08002b0102030405'); |
| SELECT * FROM macaddr8_data ORDER BY 1; |
| a | b |
| ----+------------------------- |
| 1 | 08:00:2b:ff:fe:01:02:03 |
| 2 | 08:00:2b:ff:fe:01:02:03 |
| 3 | 08:00:2b:ff:fe:01:02:03 |
| 4 | 08:00:2b:ff:fe:01:02:03 |
| 5 | 08:00:2b:ff:fe:01:02:03 |
| 6 | 08:00:2b:ff:fe:01:02:03 |
| 7 | 08:00:2b:ff:fe:01:02:03 |
| 8 | 08:00:2b:ff:fe:01:02:03 |
| 10 | 08:00:2b:ff:fe:01:02:04 |
| 11 | 08:00:2b:ff:fe:01:02:02 |
| 12 | 08:00:2a:ff:fe:01:02:03 |
| 13 | 08:00:2c:ff:fe:01:02:03 |
| 14 | 08:00:2a:ff:fe:01:02:04 |
| 15 | 08:00:2b:01:02:03:04:05 |
| 16 | 08:00:2b:01:02:03:04:05 |
| 17 | 08:00:2b:01:02:03:04:05 |
| 18 | 08:00:2b:01:02:03:04:05 |
| 19 | 08:00:2b:01:02:03:04:05 |
| 20 | 08:00:2b:01:02:03:04:05 |
| 21 | 08:00:2b:01:02:03:04:05 |
| (20 rows) |
| |
| CREATE INDEX macaddr8_data_btree ON macaddr8_data USING btree (b); |
| CREATE INDEX macaddr8_data_hash ON macaddr8_data USING hash (b); |
| SELECT a, b, trunc(b) FROM macaddr8_data ORDER BY 2, 1; |
| a | b | trunc |
| ----+-------------------------+------------------------- |
| 12 | 08:00:2a:ff:fe:01:02:03 | 08:00:2a:00:00:00:00:00 |
| 14 | 08:00:2a:ff:fe:01:02:04 | 08:00:2a:00:00:00:00:00 |
| 15 | 08:00:2b:01:02:03:04:05 | 08:00:2b:00:00:00:00:00 |
| 16 | 08:00:2b:01:02:03:04:05 | 08:00:2b:00:00:00:00:00 |
| 17 | 08:00:2b:01:02:03:04:05 | 08:00:2b:00:00:00:00:00 |
| 18 | 08:00:2b:01:02:03:04:05 | 08:00:2b:00:00:00:00:00 |
| 19 | 08:00:2b:01:02:03:04:05 | 08:00:2b:00:00:00:00:00 |
| 20 | 08:00:2b:01:02:03:04:05 | 08:00:2b:00:00:00:00:00 |
| 21 | 08:00:2b:01:02:03:04:05 | 08:00:2b:00:00:00:00:00 |
| 11 | 08:00:2b:ff:fe:01:02:02 | 08:00:2b:00:00:00:00:00 |
| 1 | 08:00:2b:ff:fe:01:02:03 | 08:00:2b:00:00:00:00:00 |
| 2 | 08:00:2b:ff:fe:01:02:03 | 08:00:2b:00:00:00:00:00 |
| 3 | 08:00:2b:ff:fe:01:02:03 | 08:00:2b:00:00:00:00:00 |
| 4 | 08:00:2b:ff:fe:01:02:03 | 08:00:2b:00:00:00:00:00 |
| 5 | 08:00:2b:ff:fe:01:02:03 | 08:00:2b:00:00:00:00:00 |
| 6 | 08:00:2b:ff:fe:01:02:03 | 08:00:2b:00:00:00:00:00 |
| 7 | 08:00:2b:ff:fe:01:02:03 | 08:00:2b:00:00:00:00:00 |
| 8 | 08:00:2b:ff:fe:01:02:03 | 08:00:2b:00:00:00:00:00 |
| 10 | 08:00:2b:ff:fe:01:02:04 | 08:00:2b:00:00:00:00:00 |
| 13 | 08:00:2c:ff:fe:01:02:03 | 08:00:2c:00:00:00:00:00 |
| (20 rows) |
| |
| SELECT b < '08:00:2b:01:02:04' FROM macaddr8_data WHERE a = 1; -- true |
| ?column? |
| ---------- |
| t |
| (1 row) |
| |
| SELECT b > '08:00:2b:ff:fe:01:02:04' FROM macaddr8_data WHERE a = 1; -- false |
| ?column? |
| ---------- |
| f |
| (1 row) |
| |
| SELECT b > '08:00:2b:ff:fe:01:02:03' FROM macaddr8_data WHERE a = 1; -- false |
| ?column? |
| ---------- |
| f |
| (1 row) |
| |
| SELECT b::macaddr <= '08:00:2b:01:02:04' FROM macaddr8_data WHERE a = 1; -- true |
| ?column? |
| ---------- |
| t |
| (1 row) |
| |
| SELECT b::macaddr >= '08:00:2b:01:02:04' FROM macaddr8_data WHERE a = 1; -- false |
| ?column? |
| ---------- |
| f |
| (1 row) |
| |
| SELECT b = '08:00:2b:ff:fe:01:02:03' FROM macaddr8_data WHERE a = 1; -- true |
| ?column? |
| ---------- |
| t |
| (1 row) |
| |
| SELECT b::macaddr <> '08:00:2b:01:02:04'::macaddr FROM macaddr8_data WHERE a = 1; -- true |
| ?column? |
| ---------- |
| t |
| (1 row) |
| |
| SELECT b::macaddr <> '08:00:2b:01:02:03'::macaddr FROM macaddr8_data WHERE a = 1; -- false |
| ?column? |
| ---------- |
| f |
| (1 row) |
| |
| SELECT b < '08:00:2b:01:02:03:04:06' FROM macaddr8_data WHERE a = 15; -- true |
| ?column? |
| ---------- |
| t |
| (1 row) |
| |
| SELECT b > '08:00:2b:01:02:03:04:06' FROM macaddr8_data WHERE a = 15; -- false |
| ?column? |
| ---------- |
| f |
| (1 row) |
| |
| SELECT b > '08:00:2b:01:02:03:04:05' FROM macaddr8_data WHERE a = 15; -- false |
| ?column? |
| ---------- |
| f |
| (1 row) |
| |
| SELECT b <= '08:00:2b:01:02:03:04:06' FROM macaddr8_data WHERE a = 15; -- true |
| ?column? |
| ---------- |
| t |
| (1 row) |
| |
| SELECT b >= '08:00:2b:01:02:03:04:06' FROM macaddr8_data WHERE a = 15; -- false |
| ?column? |
| ---------- |
| f |
| (1 row) |
| |
| SELECT b = '08:00:2b:01:02:03:04:05' FROM macaddr8_data WHERE a = 15; -- true |
| ?column? |
| ---------- |
| t |
| (1 row) |
| |
| SELECT b <> '08:00:2b:01:02:03:04:06' FROM macaddr8_data WHERE a = 15; -- true |
| ?column? |
| ---------- |
| t |
| (1 row) |
| |
| SELECT b <> '08:00:2b:01:02:03:04:05' FROM macaddr8_data WHERE a = 15; -- false |
| ?column? |
| ---------- |
| f |
| (1 row) |
| |
| SELECT ~b FROM macaddr8_data; |
| ?column? |
| ------------------------- |
| f7:ff:d4:00:01:fe:fd:fc |
| f7:ff:d4:00:01:fe:fd:fc |
| f7:ff:d4:00:01:fe:fd:fc |
| f7:ff:d4:00:01:fe:fd:fc |
| f7:ff:d4:00:01:fe:fd:fc |
| f7:ff:d4:00:01:fe:fd:fc |
| f7:ff:d4:00:01:fe:fd:fc |
| f7:ff:d4:00:01:fe:fd:fc |
| f7:ff:d4:00:01:fe:fd:fb |
| f7:ff:d4:00:01:fe:fd:fd |
| f7:ff:d5:00:01:fe:fd:fc |
| f7:ff:d3:00:01:fe:fd:fc |
| f7:ff:d5:00:01:fe:fd:fb |
| f7:ff:d4:fe:fd:fc:fb:fa |
| f7:ff:d4:fe:fd:fc:fb:fa |
| f7:ff:d4:fe:fd:fc:fb:fa |
| f7:ff:d4:fe:fd:fc:fb:fa |
| f7:ff:d4:fe:fd:fc:fb:fa |
| f7:ff:d4:fe:fd:fc:fb:fa |
| f7:ff:d4:fe:fd:fc:fb:fa |
| (20 rows) |
| |
| SELECT b & '00:00:00:ff:ff:ff' FROM macaddr8_data; |
| ?column? |
| ------------------------- |
| 00:00:00:ff:fe:01:02:03 |
| 00:00:00:ff:fe:01:02:03 |
| 00:00:00:ff:fe:01:02:03 |
| 00:00:00:ff:fe:01:02:03 |
| 00:00:00:ff:fe:01:02:03 |
| 00:00:00:ff:fe:01:02:03 |
| 00:00:00:ff:fe:01:02:03 |
| 00:00:00:ff:fe:01:02:03 |
| 00:00:00:ff:fe:01:02:04 |
| 00:00:00:ff:fe:01:02:02 |
| 00:00:00:ff:fe:01:02:03 |
| 00:00:00:ff:fe:01:02:03 |
| 00:00:00:ff:fe:01:02:04 |
| 00:00:00:01:02:03:04:05 |
| 00:00:00:01:02:03:04:05 |
| 00:00:00:01:02:03:04:05 |
| 00:00:00:01:02:03:04:05 |
| 00:00:00:01:02:03:04:05 |
| 00:00:00:01:02:03:04:05 |
| 00:00:00:01:02:03:04:05 |
| (20 rows) |
| |
| SELECT b | '01:02:03:04:05:06' FROM macaddr8_data; |
| ?column? |
| ------------------------- |
| 09:02:2b:ff:fe:05:07:07 |
| 09:02:2b:ff:fe:05:07:07 |
| 09:02:2b:ff:fe:05:07:07 |
| 09:02:2b:ff:fe:05:07:07 |
| 09:02:2b:ff:fe:05:07:07 |
| 09:02:2b:ff:fe:05:07:07 |
| 09:02:2b:ff:fe:05:07:07 |
| 09:02:2b:ff:fe:05:07:07 |
| 09:02:2b:ff:fe:05:07:06 |
| 09:02:2b:ff:fe:05:07:06 |
| 09:02:2b:ff:fe:05:07:07 |
| 09:02:2f:ff:fe:05:07:07 |
| 09:02:2b:ff:fe:05:07:06 |
| 09:02:2b:ff:fe:07:05:07 |
| 09:02:2b:ff:fe:07:05:07 |
| 09:02:2b:ff:fe:07:05:07 |
| 09:02:2b:ff:fe:07:05:07 |
| 09:02:2b:ff:fe:07:05:07 |
| 09:02:2b:ff:fe:07:05:07 |
| 09:02:2b:ff:fe:07:05:07 |
| (20 rows) |
| |
| DROP TABLE macaddr8_data; |
| -- test non-error-throwing API for some core types |
| SELECT pg_input_is_valid('08:00:2b:01:02:03:04:ZZ', 'macaddr8'); |
| pg_input_is_valid |
| ------------------- |
| f |
| (1 row) |
| |
| SELECT * FROM pg_input_error_info('08:00:2b:01:02:03:04:ZZ', 'macaddr8'); |
| message | detail | hint | sql_error_code |
| -------------------------------------------------------------------+--------+------+---------------- |
| invalid input syntax for type macaddr8: "08:00:2b:01:02:03:04:ZZ" | | | 22P02 |
| (1 row) |
| |
| SELECT pg_input_is_valid('08:00:2b:01:02:03:04:', 'macaddr8'); |
| pg_input_is_valid |
| ------------------- |
| f |
| (1 row) |
| |
| SELECT * FROM pg_input_error_info('08:00:2b:01:02:03:04:', 'macaddr8'); |
| message | detail | hint | sql_error_code |
| -----------------------------------------------------------------+--------+------+---------------- |
| invalid input syntax for type macaddr8: "08:00:2b:01:02:03:04:" | | | 22P02 |
| (1 row) |
| |