Re: macaddr 64 bit (EUI-64) datatype support
Haribabu Kommi <kommi.haribabu@gmail.com>
From: Haribabu Kommi <kommi.haribabu@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Robert Haas <robertmhaas@gmail.com>, Stephen Frost <sfrost@snowman.net>, Shay Rojansky <roji@roji.org>,
Peter Eisentraut <peter.eisentraut@2ndquadrant.com>, Vitaly Burovoy <vitaly.burovoy@gmail.com>,
Alvaro Herrera <alvherre@2ndquadrant.com>, Julien Rouhaud <julien.rouhaud@dalibo.com>,
Craig Ringer <craig@2ndquadrant.com>, "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Date: 2016-11-22T23:52:22Z
Lists: pgsql-hackers
On Wed, Nov 23, 2016 at 1:42 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote: > Haribabu Kommi <kommi.haribabu@gmail.com> writes: > > Any suggestions for the name to be used for the new datatype the can > > work for both 48 and 64 bit MAC addresses? > > The precedent of int4/int8/float4/float8 is that SQL data types should > be named after their length in bytes. So I'd be inclined to call this > "macaddr8" not "macaddr64". That would suggest taking the simple > approach of always storing values in the 8-byte format, rather than > dealing with the complexities of having two formats internally, two > display formats, etc. > > > It is possible to represent a 48 bit MAC address as 64 bit MAC address > > by adding reserved bytes in the middle as follows. > > 01-01-01-01-01-01::macaddr => 01-01-01-FF-FE-01-01-01::newmacaddr > > Check. So we could accept 6-byte addresses on input and perform > that conversion automatically. > Do you prefer the automatic conversion from 6 byte to 8 byte MAC address, This way it takes extra space with new datatype. Is it fine to with new datatype? > > While comparing a 48 bit MAC address with 64 bit MAC address, Ignore > > the two bytes if the contents in those bytes are reserved bytes. > > Um ... I don't follow. Surely these must compare different: > > 01-01-01-FF-FE-01-01-01 > 01-01-01-FF-0E-01-01-01 > Yes, that's correct. Both the above MAC addresses are different. Sorry for not providing more details. The new macaddr8 datatype can accept both 6 and 8 byte MAC addresses. Let's assume the data in the table for the macaddr8 column as follows. row1 = 01-01-01-02-02-02 row2 = 01-01-01-FF-FE-02-02-02 The MAC address is same, it is just a representation in 2 forms, one is 6 byte and another is 8 byte. What I am suggesting is, we can treat both of the rows data as same, because it is just a representation difference. To do the same, while comparing two MAC addresses that are of 6 and 8 byte length, some special handling is added to check for the reserved keywords in the 8 byte MAC address, based on that the comparison is carried out. > The new datatype can store directly whatever is the input is, like 48 bit > > or 64 bit. The same data is sent over the wire, whether the reserved > > bytes are present or not? > > I'd just send all 8 bytes. What the client wants to do with values > that could be mapped back into the 6-byte space is its business. > As the new datatype that can store both 6 and 8 byte MAC addresses as it is, while sending this data to client, based on the data that is stored, it sends 6 or 8 bytes. If we go with storing 8 byte always, then sending all 8 bytes is fine. Regards, Hari Babu Fujitsu Australia
Commits
-
Add support for EUI-64 MAC addresses as macaddr8
- c7a9fa399d55 10.0 landed
-
perltidy pg_dump TAP tests
- 6af8b89adba1 10.0 cited