mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-21 08:29:39 +08:00
c7a9fa399d
This adds in support for EUI-64 MAC addresses by adding a new data type called 'macaddr8' (using our usual convention of indicating the number of bytes stored). This was largely a copy-and-paste from the macaddr data type, with appropriate adjustments for having 8 bytes instead of 6 and adding support for converting a provided EUI-48 (6 byte format) to the EUI-64 format. Conversion from EUI-48 to EUI-64 inserts FFFE as the 4th and 5th bytes but does not perform the IPv6 modified EUI-64 action of flipping the 7th bit, but we add a function to perform that specific action for the user as it may be commonly done by users who wish to calculate their IPv6 address based on their network prefix and 48-bit MAC address. Author: Haribabu Kommi, with a good bit of rework of macaddr8_in by me. Reviewed by: Vitaly Burovoy, Kuntal Ghosh Discussion: https://postgr.es/m/CAJrrPGcUi8ZH+KkK+=TctNQ+EfkeCEHtMU_yo1mvX8hsk_ghNQ@mail.gmail.com
38 lines
1.1 KiB
SQL
38 lines
1.1 KiB
SQL
-- macaddr check
|
|
|
|
CREATE TABLE macaddr8tmp (a macaddr8);
|
|
|
|
\copy macaddr8tmp from 'data/macaddr.data'
|
|
|
|
SET enable_seqscan=on;
|
|
|
|
SELECT count(*) FROM macaddr8tmp WHERE a < '22:00:5c:e5:9b:0d';
|
|
|
|
SELECT count(*) FROM macaddr8tmp WHERE a <= '22:00:5c:e5:9b:0d';
|
|
|
|
SELECT count(*) FROM macaddr8tmp WHERE a = '22:00:5c:e5:9b:0d';
|
|
|
|
SELECT count(*) FROM macaddr8tmp WHERE a >= '22:00:5c:e5:9b:0d';
|
|
|
|
SELECT count(*) FROM macaddr8tmp WHERE a > '22:00:5c:e5:9b:0d';
|
|
|
|
CREATE INDEX macaddr8idx ON macaddr8tmp USING gist ( a );
|
|
|
|
SET enable_seqscan=off;
|
|
|
|
SELECT count(*) FROM macaddr8tmp WHERE a < '22:00:5c:e5:9b:0d'::macaddr8;
|
|
|
|
SELECT count(*) FROM macaddr8tmp WHERE a <= '22:00:5c:e5:9b:0d'::macaddr8;
|
|
|
|
SELECT count(*) FROM macaddr8tmp WHERE a = '22:00:5c:e5:9b:0d'::macaddr8;
|
|
|
|
SELECT count(*) FROM macaddr8tmp WHERE a >= '22:00:5c:e5:9b:0d'::macaddr8;
|
|
|
|
SELECT count(*) FROM macaddr8tmp WHERE a > '22:00:5c:e5:9b:0d'::macaddr8;
|
|
|
|
-- Test index-only scans
|
|
SET enable_bitmapscan=off;
|
|
EXPLAIN (COSTS OFF)
|
|
SELECT * FROM macaddr8tmp WHERE a < '02:03:04:05:06:07'::macaddr8;
|
|
SELECT * FROM macaddr8tmp WHERE a < '02:03:04:05:06:07'::macaddr8;
|