SELECT i AS inet, host(i), text(i), family(i) FROM INET_TBL; SELECT c AS cidr, abbrev(c) AS"abbrev(cidr)",
i AS inet, abbrev(i) AS"abbrev(inet)"FROM INET_TBL; SELECT c AS cidr, broadcast(c) AS"broadcast(cidr)",
i AS inet, broadcast(i) AS"broadcast(inet)"FROM INET_TBL; SELECT c AS cidr, network(c) AS"network(cidr)",
i AS inet, network(i) AS"network(inet)"FROM INET_TBL; SELECT c AS cidr, masklen(c) AS"masklen(cidr)",
i AS inet, masklen(i) AS"masklen(inet)"FROM INET_TBL;
SELECT c AS cidr, masklen(c) AS"masklen(cidr)",
i AS inet, masklen(i) AS"masklen(inet)"FROM INET_TBL WHERE masklen(c) <= 8;
SELECT i AS inet, netmask(i) AS"netmask(inet)"FROM INET_TBL; SELECT i AS inet, hostmask(i) AS"hostmask(inet)"FROM INET_TBL;
SELECT c AS cidr, i AS inet FROM INET_TBL WHERE c = i;
SELECT 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,
i && c AS ovr FROM INET_TBL;
SELECT max(i) AS max, min(i) AS min FROM INET_TBL; SELECT max(c) AS max, min(c) AS min FROM INET_TBL;
-- check the conversion to/from text and setting netmask SELECT c AS cidr, set_masklen(cidr(text(c)), 24) AS"set_masklen(cidr)",
i AS inet, set_masklen(inet(text(i)), 24) AS"set_masklen(inet)"FROM INET_TBL; -- check that netmask is treated as maximum value when set to -1 SELECT c AS cidr, set_masklen(cidr(text(c)), -1) AS"set_masklen(cidr)",
i AS inet, set_masklen(inet(text(i)), -1) AS"set_masklen(inet)"FROM INET_TBL; -- check that invalid netmask is rejected SELECT set_masklen(inet(text(i)), 33) FROM INET_TBL; SELECT set_masklen(cidr(text(c)), 33) FROM INET_TBL;
-- check that btree index works correctly CREATEINDEX inet_idx1 ON inet_tbl(i); SET enable_seqscan TO off; EXPLAIN (COSTS OFF) SELECT * FROM inet_tbl WHERE i<<'192.168.1.0/24'::cidr; SELECT * FROM inet_tbl WHERE i<<'192.168.1.0/24'::cidr; EXPLAIN (COSTS OFF) SELECT * FROM inet_tbl WHERE i<<='192.168.1.0/24'::cidr; SELECT * FROM inet_tbl WHERE i<<='192.168.1.0/24'::cidr; EXPLAIN (COSTS OFF) SELECT * FROM inet_tbl WHERE'192.168.1.0/24'::cidr >>= i; SELECT * FROM inet_tbl WHERE'192.168.1.0/24'::cidr >>= i; EXPLAIN (COSTS OFF) SELECT * FROM inet_tbl WHERE'192.168.1.0/24'::cidr >> i; SELECT * FROM inet_tbl WHERE'192.168.1.0/24'::cidr >> i; SET enable_seqscan TOon; DROPINDEX inet_idx1;
-- check that gist index works correctly CREATEINDEX inet_idx2 ON inet_tbl using gist (i inet_ops); SET enable_seqscan TO off; SELECT * FROM inet_tbl WHERE i << '192.168.1.0/24'::cidr ORDERBY i; SELECT * FROM inet_tbl WHERE i <<= '192.168.1.0/24'::cidr ORDERBY i; SELECT * FROM inet_tbl WHERE i && '192.168.1.0/24'::cidr ORDERBY i; SELECT * FROM inet_tbl WHERE i >>= '192.168.1.0/24'::cidr ORDERBY i; SELECT * FROM inet_tbl WHERE i >> '192.168.1.0/24'::cidr ORDERBY i; SELECT * FROM inet_tbl WHERE i < '192.168.1.0/24'::cidr ORDERBY i; SELECT * FROM inet_tbl WHERE i <= '192.168.1.0/24'::cidr ORDERBY i; SELECT * FROM inet_tbl WHERE i = '192.168.1.0/24'::cidr ORDERBY i; SELECT * FROM inet_tbl WHERE i >= '192.168.1.0/24'::cidr ORDERBY i; SELECT * FROM inet_tbl WHERE i > '192.168.1.0/24'::cidr ORDERBY i; SELECT * FROM inet_tbl WHERE i <> '192.168.1.0/24'::cidr ORDERBY i;
-- test index-only scans EXPLAIN (COSTS OFF) SELECT i FROM inet_tbl WHERE i << '192.168.1.0/24'::cidr ORDERBY i; SELECT i FROM inet_tbl WHERE i << '192.168.1.0/24'::cidr ORDERBY i;
SET enable_seqscan TOon; DROPINDEX inet_idx2;
-- check that spgist index works correctly CREATEINDEX inet_idx3 ON inet_tbl using spgist (i); SET enable_seqscan TO off; SELECT * FROM inet_tbl WHERE i << '192.168.1.0/24'::cidr ORDERBY i; SELECT * FROM inet_tbl WHERE i <<= '192.168.1.0/24'::cidr ORDERBY i; SELECT * FROM inet_tbl WHERE i && '192.168.1.0/24'::cidr ORDERBY i; SELECT * FROM inet_tbl WHERE i >>= '192.168.1.0/24'::cidr ORDERBY i; SELECT * FROM inet_tbl WHERE i >> '192.168.1.0/24'::cidr ORDERBY i; SELECT * FROM inet_tbl WHERE i < '192.168.1.0/24'::cidr ORDERBY i; SELECT * FROM inet_tbl WHERE i <= '192.168.1.0/24'::cidr ORDERBY i; SELECT * FROM inet_tbl WHERE i = '192.168.1.0/24'::cidr ORDERBY i; SELECT * FROM inet_tbl WHERE i >= '192.168.1.0/24'::cidr ORDERBY i; SELECT * FROM inet_tbl WHERE i > '192.168.1.0/24'::cidr ORDERBY i; SELECT * FROM inet_tbl WHERE i <> '192.168.1.0/24'::cidr ORDERBY i;
-- test index-only scans EXPLAIN (COSTS OFF) SELECT i FROM inet_tbl WHERE i << '192.168.1.0/24'::cidr ORDERBY i; SELECT i FROM inet_tbl WHERE i << '192.168.1.0/24'::cidr ORDERBY i;
SET enable_seqscan TOon; DROPINDEX inet_idx3;
-- simple tests of inet boolean and arithmetic operators SELECT i, ~i AS"~i"FROM inet_tbl; SELECT i, c, i & c AS"and"FROM inet_tbl; SELECT i, c, i | c AS"or"FROM inet_tbl; SELECT i, i + 500AS"i+500"FROM inet_tbl; SELECT i, i - 500AS"i-500"FROM inet_tbl; SELECT i, c, i - c AS"minus"FROM inet_tbl; SELECT'127.0.0.1'::inet + 257; SELECT ('127.0.0.1'::inet + 257) - 257; SELECT'127::1'::inet + 257; SELECT ('127::1'::inet + 257) - 257; SELECT'127.0.0.2'::inet - ('127.0.0.2'::inet + 500); SELECT'127.0.0.2'::inet - ('127.0.0.2'::inet - 500); SELECT'127::2'::inet - ('127::2'::inet + 500); SELECT'127::2'::inet - ('127::2'::inet - 500); -- these should give overflow errors: SELECT'127.0.0.1'::inet + 10000000000; SELECT'127.0.0.1'::inet - 10000000000; SELECT'126::1'::inet - '127::2'::inet; SELECT'127::1'::inet - '126::2'::inet; -- but not these SELECT'127::1'::inet + 10000000000; SELECT'127::1'::inet - '127::2'::inet;
-- insert one more row with addressed from different families INSERTINTO INET_TBL (c, i) VALUES ('10', '10::/8'); -- now, this one should fail SELECT inet_merge(c, i) FROM INET_TBL; -- fix it by inet_same_family() condition SELECT inet_merge(c, i) FROM INET_TBL WHERE inet_same_family(c, i);
-- test non-error-throwing API for some core types SELECT pg_input_is_valid('1234', 'cidr'); SELECT * FROM pg_input_error_info('1234', 'cidr'); SELECT pg_input_is_valid('192.168.198.200/24', 'cidr'); SELECT * FROM pg_input_error_info('192.168.198.200/24', 'cidr');
SELECT pg_input_is_valid('1234', 'inet'); SELECT * FROM pg_input_error_info('1234', 'inet');
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-08-08)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.