Skip to content

Commit 6f04368

Browse files
committed
Allow input format xxxx-xxxx-xxxx for macaddr type
Author: Herwin Weststrate <herwin@quarantainenet.nl> Reviewed-by: Ali Akbar <the.apaan@gmail.com>
1 parent 5d93ce2 commit 6f04368

File tree

4 files changed

+25
-14
lines changed

4 files changed

+25
-14
lines changed

doc/src/sgml/datatype.sgml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3645,6 +3645,7 @@ SELECT person.name, holidays.num_weeks FROM person, holidays
36453645
<member><literal>'08002b:010203'</></member>
36463646
<member><literal>'08002b-010203'</></member>
36473647
<member><literal>'0800.2b01.0203'</></member>
3648+
<member><literal>'0800-2b01-0203'</></member>
36483649
<member><literal>'08002b010203'</></member>
36493650
</simplelist>
36503651

@@ -3666,7 +3667,7 @@ SELECT person.name, holidays.num_weeks FROM person, holidays
36663667
</para>
36673668

36683669
<para>
3669-
The remaining four input formats are not part of any standard.
3670+
The remaining five input formats are not part of any standard.
36703671
</para>
36713672
</sect2>
36723673

src/backend/utils/adt/mac.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@ macaddr_in(PG_FUNCTION_ARGS)
5656
if (count != 6)
5757
count = sscanf(str, "%2x%2x.%2x%2x.%2x%2x%1s",
5858
&a, &b, &c, &d, &e, &f, junk);
59+
if (count != 6)
60+
count = sscanf(str, "%2x%2x-%2x%2x-%2x%2x%1s",
61+
&a, &b, &c, &d, &e, &f, junk);
5962
if (count != 6)
6063
count = sscanf(str, "%2x%2x%2x%2x%2x%2x%1s",
6164
&a, &b, &c, &d, &e, &f, junk);

src/test/regress/expected/macaddr.out

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,15 @@ INSERT INTO macaddr_data VALUES (2, '08-00-2b-01-02-03');
77
INSERT INTO macaddr_data VALUES (3, '08002b:010203');
88
INSERT INTO macaddr_data VALUES (4, '08002b-010203');
99
INSERT INTO macaddr_data VALUES (5, '0800.2b01.0203');
10-
INSERT INTO macaddr_data VALUES (6, '08002b010203');
11-
INSERT INTO macaddr_data VALUES (7, '0800:2b01:0203'); -- invalid
10+
INSERT INTO macaddr_data VALUES (6, '0800-2b01-0203');
11+
INSERT INTO macaddr_data VALUES (7, '08002b010203');
12+
INSERT INTO macaddr_data VALUES (8, '0800:2b01:0203'); -- invalid
1213
ERROR: invalid input syntax for type macaddr: "0800:2b01:0203"
13-
LINE 1: INSERT INTO macaddr_data VALUES (7, '0800:2b01:0203');
14+
LINE 1: INSERT INTO macaddr_data VALUES (8, '0800:2b01:0203');
1415
^
15-
INSERT INTO macaddr_data VALUES (8, 'not even close'); -- invalid
16+
INSERT INTO macaddr_data VALUES (9, 'not even close'); -- invalid
1617
ERROR: invalid input syntax for type macaddr: "not even close"
17-
LINE 1: INSERT INTO macaddr_data VALUES (8, 'not even close');
18+
LINE 1: INSERT INTO macaddr_data VALUES (9, 'not even close');
1819
^
1920
INSERT INTO macaddr_data VALUES (10, '08:00:2b:01:02:04');
2021
INSERT INTO macaddr_data VALUES (11, '08:00:2b:01:02:02');
@@ -30,12 +31,13 @@ SELECT * FROM macaddr_data;
3031
4 | 08:00:2b:01:02:03
3132
5 | 08:00:2b:01:02:03
3233
6 | 08:00:2b:01:02:03
34+
7 | 08:00:2b:01:02:03
3335
10 | 08:00:2b:01:02:04
3436
11 | 08:00:2b:01:02:02
3537
12 | 08:00:2a:01:02:03
3638
13 | 08:00:2c:01:02:03
3739
14 | 08:00:2a:01:02:04
38-
(11 rows)
40+
(12 rows)
3941

4042
CREATE INDEX macaddr_data_btree ON macaddr_data USING btree (b);
4143
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;
5254
4 | 08:00:2b:01:02:03 | 08:00:2b:00:00:00
5355
5 | 08:00:2b:01:02:03 | 08:00:2b:00:00:00
5456
6 | 08:00:2b:01:02:03 | 08:00:2b:00:00:00
57+
7 | 08:00:2b:01:02:03 | 08:00:2b:00:00:00
5558
10 | 08:00:2b:01:02:04 | 08:00:2b:00:00:00
5659
13 | 08:00:2c:01:02:03 | 08:00:2c:00:00:00
57-
(11 rows)
60+
(12 rows)
5861

5962
SELECT b < '08:00:2b:01:02:04' FROM macaddr_data WHERE a = 1; -- true
6063
?column?
@@ -113,12 +116,13 @@ SELECT ~b FROM macaddr_data;
113116
f7:ff:d4:fe:fd:fc
114117
f7:ff:d4:fe:fd:fc
115118
f7:ff:d4:fe:fd:fc
119+
f7:ff:d4:fe:fd:fc
116120
f7:ff:d4:fe:fd:fb
117121
f7:ff:d4:fe:fd:fd
118122
f7:ff:d5:fe:fd:fc
119123
f7:ff:d3:fe:fd:fc
120124
f7:ff:d5:fe:fd:fb
121-
(11 rows)
125+
(12 rows)
122126

123127
SELECT b & '00:00:00:ff:ff:ff' FROM macaddr_data;
124128
?column?
@@ -129,12 +133,13 @@ SELECT b & '00:00:00:ff:ff:ff' FROM macaddr_data;
129133
00:00:00:01:02:03
130134
00:00:00:01:02:03
131135
00:00:00:01:02:03
136+
00:00:00:01:02:03
132137
00:00:00:01:02:04
133138
00:00:00:01:02:02
134139
00:00:00:01:02:03
135140
00:00:00:01:02:03
136141
00:00:00:01:02:04
137-
(11 rows)
142+
(12 rows)
138143

139144
SELECT b | '01:02:03:04:05:06' FROM macaddr_data;
140145
?column?
@@ -145,11 +150,12 @@ SELECT b | '01:02:03:04:05:06' FROM macaddr_data;
145150
09:02:2b:05:07:07
146151
09:02:2b:05:07:07
147152
09:02:2b:05:07:07
153+
09:02:2b:05:07:07
148154
09:02:2b:05:07:06
149155
09:02:2b:05:07:06
150156
09:02:2b:05:07:07
151157
09:02:2f:05:07:07
152158
09:02:2b:05:07:06
153-
(11 rows)
159+
(12 rows)
154160

155161
DROP TABLE macaddr_data;

src/test/regress/sql/macaddr.sql

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,10 @@ INSERT INTO macaddr_data VALUES (2, '08-00-2b-01-02-03');
99
INSERT INTO macaddr_data VALUES (3, '08002b:010203');
1010
INSERT INTO macaddr_data VALUES (4, '08002b-010203');
1111
INSERT INTO macaddr_data VALUES (5, '0800.2b01.0203');
12-
INSERT INTO macaddr_data VALUES (6, '08002b010203');
13-
INSERT INTO macaddr_data VALUES (7, '0800:2b01:0203'); -- invalid
14-
INSERT INTO macaddr_data VALUES (8, 'not even close'); -- invalid
12+
INSERT INTO macaddr_data VALUES (6, '0800-2b01-0203');
13+
INSERT INTO macaddr_data VALUES (7, '08002b010203');
14+
INSERT INTO macaddr_data VALUES (8, '0800:2b01:0203'); -- invalid
15+
INSERT INTO macaddr_data VALUES (9, 'not even close'); -- invalid
1516

1617
INSERT INTO macaddr_data VALUES (10, '08:00:2b:01:02:04');
1718
INSERT INTO macaddr_data VALUES (11, '08:00:2b:01:02:02');

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy