mirror of
https://github.com/postgres/postgres.git
synced 2025-04-24 10:47:04 +03:00
Allow input format xxxx-xxxx-xxxx for macaddr type
Author: Herwin Weststrate <herwin@quarantainenet.nl> Reviewed-by: Ali Akbar <the.apaan@gmail.com>
This commit is contained in:
parent
5d93ce2d0c
commit
6f04368cfc
@ -3645,6 +3645,7 @@ SELECT person.name, holidays.num_weeks FROM person, holidays
|
|||||||
<member><literal>'08002b:010203'</></member>
|
<member><literal>'08002b:010203'</></member>
|
||||||
<member><literal>'08002b-010203'</></member>
|
<member><literal>'08002b-010203'</></member>
|
||||||
<member><literal>'0800.2b01.0203'</></member>
|
<member><literal>'0800.2b01.0203'</></member>
|
||||||
|
<member><literal>'0800-2b01-0203'</></member>
|
||||||
<member><literal>'08002b010203'</></member>
|
<member><literal>'08002b010203'</></member>
|
||||||
</simplelist>
|
</simplelist>
|
||||||
|
|
||||||
@ -3666,7 +3667,7 @@ SELECT person.name, holidays.num_weeks FROM person, holidays
|
|||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
The remaining four input formats are not part of any standard.
|
The remaining five input formats are not part of any standard.
|
||||||
</para>
|
</para>
|
||||||
</sect2>
|
</sect2>
|
||||||
|
|
||||||
|
@ -56,6 +56,9 @@ macaddr_in(PG_FUNCTION_ARGS)
|
|||||||
if (count != 6)
|
if (count != 6)
|
||||||
count = sscanf(str, "%2x%2x.%2x%2x.%2x%2x%1s",
|
count = sscanf(str, "%2x%2x.%2x%2x.%2x%2x%1s",
|
||||||
&a, &b, &c, &d, &e, &f, junk);
|
&a, &b, &c, &d, &e, &f, junk);
|
||||||
|
if (count != 6)
|
||||||
|
count = sscanf(str, "%2x%2x-%2x%2x-%2x%2x%1s",
|
||||||
|
&a, &b, &c, &d, &e, &f, junk);
|
||||||
if (count != 6)
|
if (count != 6)
|
||||||
count = sscanf(str, "%2x%2x%2x%2x%2x%2x%1s",
|
count = sscanf(str, "%2x%2x%2x%2x%2x%2x%1s",
|
||||||
&a, &b, &c, &d, &e, &f, junk);
|
&a, &b, &c, &d, &e, &f, junk);
|
||||||
|
@ -7,14 +7,15 @@ INSERT INTO macaddr_data VALUES (2, '08-00-2b-01-02-03');
|
|||||||
INSERT INTO macaddr_data VALUES (3, '08002b:010203');
|
INSERT INTO macaddr_data VALUES (3, '08002b:010203');
|
||||||
INSERT INTO macaddr_data VALUES (4, '08002b-010203');
|
INSERT INTO macaddr_data VALUES (4, '08002b-010203');
|
||||||
INSERT INTO macaddr_data VALUES (5, '0800.2b01.0203');
|
INSERT INTO macaddr_data VALUES (5, '0800.2b01.0203');
|
||||||
INSERT INTO macaddr_data VALUES (6, '08002b010203');
|
INSERT INTO macaddr_data VALUES (6, '0800-2b01-0203');
|
||||||
INSERT INTO macaddr_data VALUES (7, '0800:2b01:0203'); -- invalid
|
INSERT INTO macaddr_data VALUES (7, '08002b010203');
|
||||||
|
INSERT INTO macaddr_data VALUES (8, '0800:2b01:0203'); -- invalid
|
||||||
ERROR: invalid input syntax for type macaddr: "0800:2b01:0203"
|
ERROR: invalid input syntax for type macaddr: "0800:2b01:0203"
|
||||||
LINE 1: INSERT INTO macaddr_data VALUES (7, '0800:2b01:0203');
|
LINE 1: INSERT INTO macaddr_data VALUES (8, '0800:2b01:0203');
|
||||||
^
|
^
|
||||||
INSERT INTO macaddr_data VALUES (8, 'not even close'); -- invalid
|
INSERT INTO macaddr_data VALUES (9, 'not even close'); -- invalid
|
||||||
ERROR: invalid input syntax for type macaddr: "not even close"
|
ERROR: invalid input syntax for type macaddr: "not even close"
|
||||||
LINE 1: INSERT INTO macaddr_data VALUES (8, 'not even close');
|
LINE 1: INSERT INTO macaddr_data VALUES (9, 'not even close');
|
||||||
^
|
^
|
||||||
INSERT INTO macaddr_data VALUES (10, '08:00:2b:01:02:04');
|
INSERT INTO macaddr_data VALUES (10, '08:00:2b:01:02:04');
|
||||||
INSERT INTO macaddr_data VALUES (11, '08:00:2b:01:02:02');
|
INSERT INTO macaddr_data VALUES (11, '08:00:2b:01:02:02');
|
||||||
@ -30,12 +31,13 @@ SELECT * FROM macaddr_data;
|
|||||||
4 | 08:00:2b:01:02:03
|
4 | 08:00:2b:01:02:03
|
||||||
5 | 08:00:2b:01:02:03
|
5 | 08:00:2b:01:02:03
|
||||||
6 | 08:00:2b:01:02:03
|
6 | 08:00:2b:01:02:03
|
||||||
|
7 | 08:00:2b:01:02:03
|
||||||
10 | 08:00:2b:01:02:04
|
10 | 08:00:2b:01:02:04
|
||||||
11 | 08:00:2b:01:02:02
|
11 | 08:00:2b:01:02:02
|
||||||
12 | 08:00:2a:01:02:03
|
12 | 08:00:2a:01:02:03
|
||||||
13 | 08:00:2c:01:02:03
|
13 | 08:00:2c:01:02:03
|
||||||
14 | 08:00:2a:01:02:04
|
14 | 08:00:2a:01:02:04
|
||||||
(11 rows)
|
(12 rows)
|
||||||
|
|
||||||
CREATE INDEX macaddr_data_btree ON macaddr_data USING btree (b);
|
CREATE INDEX macaddr_data_btree ON macaddr_data USING btree (b);
|
||||||
CREATE INDEX macaddr_data_hash ON macaddr_data USING hash (b);
|
CREATE INDEX macaddr_data_hash ON macaddr_data USING hash (b);
|
||||||
@ -52,9 +54,10 @@ SELECT a, b, trunc(b) FROM macaddr_data ORDER BY 2, 1;
|
|||||||
4 | 08:00:2b:01:02:03 | 08:00:2b:00:00:00
|
4 | 08:00:2b:01:02:03 | 08:00:2b:00:00:00
|
||||||
5 | 08:00:2b:01:02:03 | 08:00:2b:00:00:00
|
5 | 08:00:2b:01:02:03 | 08:00:2b:00:00:00
|
||||||
6 | 08:00:2b:01:02:03 | 08:00:2b:00:00:00
|
6 | 08:00:2b:01:02:03 | 08:00:2b:00:00:00
|
||||||
|
7 | 08:00:2b:01:02:03 | 08:00:2b:00:00:00
|
||||||
10 | 08:00:2b:01:02:04 | 08:00:2b:00:00:00
|
10 | 08:00:2b:01:02:04 | 08:00:2b:00:00:00
|
||||||
13 | 08:00:2c:01:02:03 | 08:00:2c:00:00:00
|
13 | 08:00:2c:01:02:03 | 08:00:2c:00:00:00
|
||||||
(11 rows)
|
(12 rows)
|
||||||
|
|
||||||
SELECT b < '08:00:2b:01:02:04' FROM macaddr_data WHERE a = 1; -- true
|
SELECT b < '08:00:2b:01:02:04' FROM macaddr_data WHERE a = 1; -- true
|
||||||
?column?
|
?column?
|
||||||
@ -113,12 +116,13 @@ SELECT ~b FROM macaddr_data;
|
|||||||
f7:ff:d4:fe:fd:fc
|
f7:ff:d4:fe:fd:fc
|
||||||
f7:ff:d4:fe:fd:fc
|
f7:ff:d4:fe:fd:fc
|
||||||
f7:ff:d4:fe:fd:fc
|
f7:ff:d4:fe:fd:fc
|
||||||
|
f7:ff:d4:fe:fd:fc
|
||||||
f7:ff:d4:fe:fd:fb
|
f7:ff:d4:fe:fd:fb
|
||||||
f7:ff:d4:fe:fd:fd
|
f7:ff:d4:fe:fd:fd
|
||||||
f7:ff:d5:fe:fd:fc
|
f7:ff:d5:fe:fd:fc
|
||||||
f7:ff:d3:fe:fd:fc
|
f7:ff:d3:fe:fd:fc
|
||||||
f7:ff:d5:fe:fd:fb
|
f7:ff:d5:fe:fd:fb
|
||||||
(11 rows)
|
(12 rows)
|
||||||
|
|
||||||
SELECT b & '00:00:00:ff:ff:ff' FROM macaddr_data;
|
SELECT b & '00:00:00:ff:ff:ff' FROM macaddr_data;
|
||||||
?column?
|
?column?
|
||||||
@ -129,12 +133,13 @@ SELECT b & '00:00:00:ff:ff:ff' FROM macaddr_data;
|
|||||||
00:00:00:01:02:03
|
00:00:00:01:02:03
|
||||||
00:00:00:01:02:03
|
00:00:00:01:02:03
|
||||||
00:00:00:01:02:03
|
00:00:00:01:02:03
|
||||||
|
00:00:00:01:02:03
|
||||||
00:00:00:01:02:04
|
00:00:00:01:02:04
|
||||||
00:00:00:01:02:02
|
00:00:00:01:02:02
|
||||||
00:00:00:01:02:03
|
00:00:00:01:02:03
|
||||||
00:00:00:01:02:03
|
00:00:00:01:02:03
|
||||||
00:00:00:01:02:04
|
00:00:00:01:02:04
|
||||||
(11 rows)
|
(12 rows)
|
||||||
|
|
||||||
SELECT b | '01:02:03:04:05:06' FROM macaddr_data;
|
SELECT b | '01:02:03:04:05:06' FROM macaddr_data;
|
||||||
?column?
|
?column?
|
||||||
@ -145,11 +150,12 @@ SELECT b | '01:02:03:04:05:06' FROM macaddr_data;
|
|||||||
09:02:2b:05:07:07
|
09:02:2b:05:07:07
|
||||||
09:02:2b:05:07:07
|
09:02:2b:05:07:07
|
||||||
09:02:2b:05:07:07
|
09:02:2b:05:07:07
|
||||||
|
09:02:2b:05:07:07
|
||||||
09:02:2b:05:07:06
|
09:02:2b:05:07:06
|
||||||
09:02:2b:05:07:06
|
09:02:2b:05:07:06
|
||||||
09:02:2b:05:07:07
|
09:02:2b:05:07:07
|
||||||
09:02:2f:05:07:07
|
09:02:2f:05:07:07
|
||||||
09:02:2b:05:07:06
|
09:02:2b:05:07:06
|
||||||
(11 rows)
|
(12 rows)
|
||||||
|
|
||||||
DROP TABLE macaddr_data;
|
DROP TABLE macaddr_data;
|
||||||
|
@ -9,9 +9,10 @@ INSERT INTO macaddr_data VALUES (2, '08-00-2b-01-02-03');
|
|||||||
INSERT INTO macaddr_data VALUES (3, '08002b:010203');
|
INSERT INTO macaddr_data VALUES (3, '08002b:010203');
|
||||||
INSERT INTO macaddr_data VALUES (4, '08002b-010203');
|
INSERT INTO macaddr_data VALUES (4, '08002b-010203');
|
||||||
INSERT INTO macaddr_data VALUES (5, '0800.2b01.0203');
|
INSERT INTO macaddr_data VALUES (5, '0800.2b01.0203');
|
||||||
INSERT INTO macaddr_data VALUES (6, '08002b010203');
|
INSERT INTO macaddr_data VALUES (6, '0800-2b01-0203');
|
||||||
INSERT INTO macaddr_data VALUES (7, '0800:2b01:0203'); -- invalid
|
INSERT INTO macaddr_data VALUES (7, '08002b010203');
|
||||||
INSERT INTO macaddr_data VALUES (8, 'not even close'); -- invalid
|
INSERT INTO macaddr_data VALUES (8, '0800:2b01:0203'); -- invalid
|
||||||
|
INSERT INTO macaddr_data VALUES (9, 'not even close'); -- invalid
|
||||||
|
|
||||||
INSERT INTO macaddr_data VALUES (10, '08:00:2b:01:02:04');
|
INSERT INTO macaddr_data VALUES (10, '08:00:2b:01:02:04');
|
||||||
INSERT INTO macaddr_data VALUES (11, '08:00:2b:01:02:02');
|
INSERT INTO macaddr_data VALUES (11, '08:00:2b:01:02:02');
|
||||||
|
Loading…
x
Reference in New Issue
Block a user