mirror of
https://git.postgresql.org/git/postgresql.git
synced 2026-02-13 09:57:02 +08:00
on pghackers. Arrange for the sort ordering of general INET values to be network part as major sort key, host part as minor sort key. I did not force an initdb for this change, but anyone who's running indexes on general INET values may need to recreate those indexes.
48 lines
1.7 KiB
SQL
48 lines
1.7 KiB
SQL
--
|
|
-- INET
|
|
--
|
|
|
|
-- prepare the table...
|
|
|
|
DROP TABLE INET_TBL;
|
|
CREATE TABLE INET_TBL (c cidr, i inet);
|
|
INSERT INTO INET_TBL (c, i) VALUES ('192.168.1', '192.168.1.226/24');
|
|
INSERT INTO INET_TBL (c, i) VALUES ('192.168.1.0/24', '192.168.1.226');
|
|
INSERT INTO INET_TBL (c, i) VALUES ('10', '10.1.2.3/8');
|
|
INSERT INTO INET_TBL (c, i) VALUES ('10.0.0.0', '10.1.2.3/8');
|
|
INSERT INTO INET_TBL (c, i) VALUES ('10.1.2.3', '10.1.2.3/32');
|
|
INSERT INTO INET_TBL (c, i) VALUES ('10.1.2', '10.1.2.3/24');
|
|
INSERT INTO INET_TBL (c, i) VALUES ('10.1', '10.1.2.3/16');
|
|
INSERT INTO INET_TBL (c, i) VALUES ('10', '10.1.2.3/8');
|
|
INSERT INTO INET_TBL (c, i) VALUES ('10', '11.1.2.3/8');
|
|
INSERT INTO INET_TBL (c, i) VALUES ('10', '9.1.2.3/8');
|
|
-- check that CIDR rejects invalid input:
|
|
INSERT INTO INET_TBL (c, i) VALUES ('192.168.1.2/24', '192.168.1.226');
|
|
|
|
SELECT '' AS ten, c AS cidr, i AS inet FROM INET_TBL;
|
|
|
|
-- now test some support functions
|
|
|
|
SELECT '' AS ten, i AS inet, host(i) FROM INET_TBL;
|
|
SELECT '' AS ten, c AS cidr, broadcast(c),
|
|
i AS inet, broadcast(i) FROM INET_TBL;
|
|
SELECT '' AS ten, c AS cidr, network(c) AS "network(cidr)",
|
|
i AS inet, network(i) AS "network(inet)" FROM INET_TBL;
|
|
SELECT '' AS ten, c AS cidr, masklen(c) AS "masklen(cidr)",
|
|
i AS inet, masklen(i) AS "masklen(inet)" FROM INET_TBL;
|
|
|
|
SELECT '' AS four, c AS cidr, masklen(c) AS "masklen(cidr)",
|
|
i AS inet, masklen(i) AS "masklen(inet)" FROM INET_TBL
|
|
WHERE masklen(c) <= 8;
|
|
|
|
SELECT '' AS six, c AS cidr, i AS inet FROM INET_TBL
|
|
WHERE c = i;
|
|
|
|
SELECT '' AS ten, i, c,
|
|
i < c AS lt, i <= c AS le, i = c AS eq,
|
|
i >= c AS ge, i > c AS gt, i <> c AS ne,
|
|
i << c AS sb, i <<= c AS sbe,
|
|
i >> c AS sup, i >>= c AS spe
|
|
FROM INET_TBL;
|
|
|