Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
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)