|
|
|
@ -240,137 +240,208 @@ SELECT * FROM inet_tbl WHERE i<<='192.168.1.0/24'::cidr; |
|
|
|
|
192.168.1.0/26 | 192.168.1.226 |
|
|
|
|
(6 rows) |
|
|
|
|
|
|
|
|
|
SELECT ~i FROM inet_tbl; |
|
|
|
|
?column? |
|
|
|
|
-------------------------------------------- |
|
|
|
|
63.87.254.29/24 |
|
|
|
|
63.87.254.29 |
|
|
|
|
63.87.254.255/24 |
|
|
|
|
63.87.254.255/25 |
|
|
|
|
63.87.254.0/24 |
|
|
|
|
63.87.254.0/25 |
|
|
|
|
245.254.253.252/8 |
|
|
|
|
245.254.253.252/8 |
|
|
|
|
245.254.253.252 |
|
|
|
|
245.254.253.252/24 |
|
|
|
|
245.254.253.252/16 |
|
|
|
|
245.254.253.252/8 |
|
|
|
|
244.254.253.252/8 |
|
|
|
|
246.254.253.252/8 |
|
|
|
|
ffef:ffdc:ffff:ffff:ffff:ffff:ffff:ff0e/64 |
|
|
|
|
ffef:ffdc:ffff:ffff:ffff:ffff:ffff:0 |
|
|
|
|
ffff:ffff:ffff:ffff:ffff:ffff:fbfc:fdfe/24 |
|
|
|
|
SET enable_seqscan TO on; |
|
|
|
|
DROP INDEX inet_idx1; |
|
|
|
|
-- simple tests of inet boolean and arithmetic operators |
|
|
|
|
SELECT i, ~i AS "~i" FROM inet_tbl; |
|
|
|
|
i | ~i |
|
|
|
|
------------------+-------------------------------------------- |
|
|
|
|
192.168.1.226/24 | 63.87.254.29/24 |
|
|
|
|
192.168.1.226 | 63.87.254.29 |
|
|
|
|
192.168.1.0/24 | 63.87.254.255/24 |
|
|
|
|
192.168.1.0/25 | 63.87.254.255/25 |
|
|
|
|
192.168.1.255/24 | 63.87.254.0/24 |
|
|
|
|
192.168.1.255/25 | 63.87.254.0/25 |
|
|
|
|
10.1.2.3/8 | 245.254.253.252/8 |
|
|
|
|
10.1.2.3/8 | 245.254.253.252/8 |
|
|
|
|
10.1.2.3 | 245.254.253.252 |
|
|
|
|
10.1.2.3/24 | 245.254.253.252/24 |
|
|
|
|
10.1.2.3/16 | 245.254.253.252/16 |
|
|
|
|
10.1.2.3/8 | 245.254.253.252/8 |
|
|
|
|
11.1.2.3/8 | 244.254.253.252/8 |
|
|
|
|
9.1.2.3/8 | 246.254.253.252/8 |
|
|
|
|
10:23::f1/64 | ffef:ffdc:ffff:ffff:ffff:ffff:ffff:ff0e/64 |
|
|
|
|
10:23::ffff | ffef:ffdc:ffff:ffff:ffff:ffff:ffff:0 |
|
|
|
|
::4.3.2.1/24 | ffff:ffff:ffff:ffff:ffff:ffff:fbfc:fdfe/24 |
|
|
|
|
(17 rows) |
|
|
|
|
|
|
|
|
|
SELECT i & c FROM inet_tbl; |
|
|
|
|
?column? |
|
|
|
|
---------------- |
|
|
|
|
192.168.1.0/24 |
|
|
|
|
192.168.1.0 |
|
|
|
|
192.168.1.0/24 |
|
|
|
|
192.168.1.0/25 |
|
|
|
|
192.168.1.0/24 |
|
|
|
|
192.168.1.0/25 |
|
|
|
|
10.0.0.0/8 |
|
|
|
|
10.0.0.0 |
|
|
|
|
10.1.2.3 |
|
|
|
|
10.1.2.0/24 |
|
|
|
|
10.1.0.0/16 |
|
|
|
|
10.0.0.0/8 |
|
|
|
|
10.0.0.0/8 |
|
|
|
|
8.0.0.0/8 |
|
|
|
|
10:23::f1 |
|
|
|
|
10:23::8000 |
|
|
|
|
::0.2.2.0 |
|
|
|
|
SELECT i, c, i & c AS "and" FROM inet_tbl; |
|
|
|
|
i | c | and |
|
|
|
|
------------------+--------------------+---------------- |
|
|
|
|
192.168.1.226/24 | 192.168.1.0/24 | 192.168.1.0/24 |
|
|
|
|
192.168.1.226 | 192.168.1.0/26 | 192.168.1.0 |
|
|
|
|
192.168.1.0/24 | 192.168.1.0/24 | 192.168.1.0/24 |
|
|
|
|
192.168.1.0/25 | 192.168.1.0/24 | 192.168.1.0/25 |
|
|
|
|
192.168.1.255/24 | 192.168.1.0/24 | 192.168.1.0/24 |
|
|
|
|
192.168.1.255/25 | 192.168.1.0/24 | 192.168.1.0/25 |
|
|
|
|
10.1.2.3/8 | 10.0.0.0/8 | 10.0.0.0/8 |
|
|
|
|
10.1.2.3/8 | 10.0.0.0/32 | 10.0.0.0 |
|
|
|
|
10.1.2.3 | 10.1.2.3/32 | 10.1.2.3 |
|
|
|
|
10.1.2.3/24 | 10.1.2.0/24 | 10.1.2.0/24 |
|
|
|
|
10.1.2.3/16 | 10.1.0.0/16 | 10.1.0.0/16 |
|
|
|
|
10.1.2.3/8 | 10.0.0.0/8 | 10.0.0.0/8 |
|
|
|
|
11.1.2.3/8 | 10.0.0.0/8 | 10.0.0.0/8 |
|
|
|
|
9.1.2.3/8 | 10.0.0.0/8 | 8.0.0.0/8 |
|
|
|
|
10:23::f1/64 | 10:23::f1/128 | 10:23::f1 |
|
|
|
|
10:23::ffff | 10:23::8000/113 | 10:23::8000 |
|
|
|
|
::4.3.2.1/24 | ::ffff:1.2.3.4/128 | ::0.2.2.0 |
|
|
|
|
(17 rows) |
|
|
|
|
|
|
|
|
|
SELECT i | c FROM inet_tbl; |
|
|
|
|
?column? |
|
|
|
|
------------------ |
|
|
|
|
192.168.1.226/24 |
|
|
|
|
192.168.1.226 |
|
|
|
|
192.168.1.0/24 |
|
|
|
|
192.168.1.0/25 |
|
|
|
|
192.168.1.255/24 |
|
|
|
|
192.168.1.255/25 |
|
|
|
|
10.1.2.3/8 |
|
|
|
|
10.1.2.3 |
|
|
|
|
10.1.2.3 |
|
|
|
|
10.1.2.3/24 |
|
|
|
|
10.1.2.3/16 |
|
|
|
|
10.1.2.3/8 |
|
|
|
|
11.1.2.3/8 |
|
|
|
|
11.1.2.3/8 |
|
|
|
|
10:23::f1 |
|
|
|
|
10:23::ffff |
|
|
|
|
::ffff:5.3.3.5 |
|
|
|
|
SELECT i, c, i | c AS "or" FROM inet_tbl; |
|
|
|
|
i | c | or |
|
|
|
|
------------------+--------------------+------------------ |
|
|
|
|
192.168.1.226/24 | 192.168.1.0/24 | 192.168.1.226/24 |
|
|
|
|
192.168.1.226 | 192.168.1.0/26 | 192.168.1.226 |
|
|
|
|
192.168.1.0/24 | 192.168.1.0/24 | 192.168.1.0/24 |
|
|
|
|
192.168.1.0/25 | 192.168.1.0/24 | 192.168.1.0/25 |
|
|
|
|
192.168.1.255/24 | 192.168.1.0/24 | 192.168.1.255/24 |
|
|
|
|
192.168.1.255/25 | 192.168.1.0/24 | 192.168.1.255/25 |
|
|
|
|
10.1.2.3/8 | 10.0.0.0/8 | 10.1.2.3/8 |
|
|
|
|
10.1.2.3/8 | 10.0.0.0/32 | 10.1.2.3 |
|
|
|
|
10.1.2.3 | 10.1.2.3/32 | 10.1.2.3 |
|
|
|
|
10.1.2.3/24 | 10.1.2.0/24 | 10.1.2.3/24 |
|
|
|
|
10.1.2.3/16 | 10.1.0.0/16 | 10.1.2.3/16 |
|
|
|
|
10.1.2.3/8 | 10.0.0.0/8 | 10.1.2.3/8 |
|
|
|
|
11.1.2.3/8 | 10.0.0.0/8 | 11.1.2.3/8 |
|
|
|
|
9.1.2.3/8 | 10.0.0.0/8 | 11.1.2.3/8 |
|
|
|
|
10:23::f1/64 | 10:23::f1/128 | 10:23::f1 |
|
|
|
|
10:23::ffff | 10:23::8000/113 | 10:23::ffff |
|
|
|
|
::4.3.2.1/24 | ::ffff:1.2.3.4/128 | ::ffff:5.3.3.5 |
|
|
|
|
(17 rows) |
|
|
|
|
|
|
|
|
|
SELECT i + 500 FROM inet_tbl; |
|
|
|
|
?column? |
|
|
|
|
------------------ |
|
|
|
|
192.168.4.214/24 |
|
|
|
|
192.168.4.214 |
|
|
|
|
192.168.3.244/24 |
|
|
|
|
192.168.3.244/25 |
|
|
|
|
192.168.4.243/24 |
|
|
|
|
192.168.4.243/25 |
|
|
|
|
10.1.4.247/8 |
|
|
|
|
10.1.4.247/8 |
|
|
|
|
10.1.4.247 |
|
|
|
|
10.1.4.247/24 |
|
|
|
|
10.1.4.247/16 |
|
|
|
|
10.1.4.247/8 |
|
|
|
|
11.1.4.247/8 |
|
|
|
|
9.1.4.247/8 |
|
|
|
|
10:23::3e5/64 |
|
|
|
|
10:23::1:2f3 |
|
|
|
|
::4.3.4.245/24 |
|
|
|
|
SELECT i, i + 500 AS "i+500" FROM inet_tbl; |
|
|
|
|
i | i+500 |
|
|
|
|
------------------+------------------ |
|
|
|
|
192.168.1.226/24 | 192.168.3.214/24 |
|
|
|
|
192.168.1.226 | 192.168.3.214 |
|
|
|
|
192.168.1.0/24 | 192.168.2.244/24 |
|
|
|
|
192.168.1.0/25 | 192.168.2.244/25 |
|
|
|
|
192.168.1.255/24 | 192.168.3.243/24 |
|
|
|
|
192.168.1.255/25 | 192.168.3.243/25 |
|
|
|
|
10.1.2.3/8 | 10.1.3.247/8 |
|
|
|
|
10.1.2.3/8 | 10.1.3.247/8 |
|
|
|
|
10.1.2.3 | 10.1.3.247 |
|
|
|
|
10.1.2.3/24 | 10.1.3.247/24 |
|
|
|
|
10.1.2.3/16 | 10.1.3.247/16 |
|
|
|
|
10.1.2.3/8 | 10.1.3.247/8 |
|
|
|
|
11.1.2.3/8 | 11.1.3.247/8 |
|
|
|
|
9.1.2.3/8 | 9.1.3.247/8 |
|
|
|
|
10:23::f1/64 | 10:23::2e5/64 |
|
|
|
|
10:23::ffff | 10:23::1:1f3 |
|
|
|
|
::4.3.2.1/24 | ::4.3.3.245/24 |
|
|
|
|
(17 rows) |
|
|
|
|
|
|
|
|
|
SELECT i, i - 500 AS "i-500" FROM inet_tbl; |
|
|
|
|
i | i-500 |
|
|
|
|
------------------+---------------------------------------- |
|
|
|
|
192.168.1.226/24 | 192.167.255.238/24 |
|
|
|
|
192.168.1.226 | 192.167.255.238 |
|
|
|
|
192.168.1.0/24 | 192.167.255.12/24 |
|
|
|
|
192.168.1.0/25 | 192.167.255.12/25 |
|
|
|
|
192.168.1.255/24 | 192.168.0.11/24 |
|
|
|
|
192.168.1.255/25 | 192.168.0.11/25 |
|
|
|
|
10.1.2.3/8 | 10.1.0.15/8 |
|
|
|
|
10.1.2.3/8 | 10.1.0.15/8 |
|
|
|
|
10.1.2.3 | 10.1.0.15 |
|
|
|
|
10.1.2.3/24 | 10.1.0.15/24 |
|
|
|
|
10.1.2.3/16 | 10.1.0.15/16 |
|
|
|
|
10.1.2.3/8 | 10.1.0.15/8 |
|
|
|
|
11.1.2.3/8 | 11.1.0.15/8 |
|
|
|
|
9.1.2.3/8 | 9.1.0.15/8 |
|
|
|
|
10:23::f1/64 | 10:22:ffff:ffff:ffff:ffff:ffff:fefd/64 |
|
|
|
|
10:23::ffff | 10:23::fe0b |
|
|
|
|
::4.3.2.1/24 | ::4.3.0.13/24 |
|
|
|
|
(17 rows) |
|
|
|
|
|
|
|
|
|
SELECT i - 500 FROM inet_tbl; |
|
|
|
|
?column? |
|
|
|
|
-------------------- |
|
|
|
|
192.168.255.238/24 |
|
|
|
|
192.168.255.238 |
|
|
|
|
192.168.255.12/24 |
|
|
|
|
192.168.255.12/25 |
|
|
|
|
192.168.0.11/24 |
|
|
|
|
192.168.0.11/25 |
|
|
|
|
10.1.0.15/8 |
|
|
|
|
10.1.0.15/8 |
|
|
|
|
10.1.0.15 |
|
|
|
|
10.1.0.15/24 |
|
|
|
|
10.1.0.15/16 |
|
|
|
|
10.1.0.15/8 |
|
|
|
|
11.1.0.15/8 |
|
|
|
|
9.1.0.15/8 |
|
|
|
|
10:23::fefd/64 |
|
|
|
|
10:23::fe0b |
|
|
|
|
::4.3.0.13/24 |
|
|
|
|
SELECT i, c, i - c AS "minus" FROM inet_tbl; |
|
|
|
|
i | c | minus |
|
|
|
|
------------------+--------------------+------------------ |
|
|
|
|
192.168.1.226/24 | 192.168.1.0/24 | 226 |
|
|
|
|
192.168.1.226 | 192.168.1.0/26 | 226 |
|
|
|
|
192.168.1.0/24 | 192.168.1.0/24 | 0 |
|
|
|
|
192.168.1.0/25 | 192.168.1.0/24 | 0 |
|
|
|
|
192.168.1.255/24 | 192.168.1.0/24 | 255 |
|
|
|
|
192.168.1.255/25 | 192.168.1.0/24 | 255 |
|
|
|
|
10.1.2.3/8 | 10.0.0.0/8 | 66051 |
|
|
|
|
10.1.2.3/8 | 10.0.0.0/32 | 66051 |
|
|
|
|
10.1.2.3 | 10.1.2.3/32 | 0 |
|
|
|
|
10.1.2.3/24 | 10.1.2.0/24 | 3 |
|
|
|
|
10.1.2.3/16 | 10.1.0.0/16 | 515 |
|
|
|
|
10.1.2.3/8 | 10.0.0.0/8 | 66051 |
|
|
|
|
11.1.2.3/8 | 10.0.0.0/8 | 16843267 |
|
|
|
|
9.1.2.3/8 | 10.0.0.0/8 | -16711165 |
|
|
|
|
10:23::f1/64 | 10:23::f1/128 | 0 |
|
|
|
|
10:23::ffff | 10:23::8000/113 | 32767 |
|
|
|
|
::4.3.2.1/24 | ::ffff:1.2.3.4/128 | -281470631346435 |
|
|
|
|
(17 rows) |
|
|
|
|
|
|
|
|
|
SELECT i - c FROM inet_tbl; |
|
|
|
|
SELECT '127.0.0.1'::inet + 257; |
|
|
|
|
?column? |
|
|
|
|
----------- |
|
|
|
|
127.0.1.2 |
|
|
|
|
(1 row) |
|
|
|
|
|
|
|
|
|
SELECT ('127.0.0.1'::inet + 257) - 257; |
|
|
|
|
?column? |
|
|
|
|
----------- |
|
|
|
|
127.0.0.1 |
|
|
|
|
(1 row) |
|
|
|
|
|
|
|
|
|
SELECT '127::1'::inet + 257; |
|
|
|
|
?column? |
|
|
|
|
---------- |
|
|
|
|
127::102 |
|
|
|
|
(1 row) |
|
|
|
|
|
|
|
|
|
SELECT ('127::1'::inet + 257) - 257; |
|
|
|
|
?column? |
|
|
|
|
---------- |
|
|
|
|
127::1 |
|
|
|
|
(1 row) |
|
|
|
|
|
|
|
|
|
SELECT '127.0.0.2'::inet - ('127.0.0.2'::inet + 500); |
|
|
|
|
?column? |
|
|
|
|
---------- |
|
|
|
|
-500 |
|
|
|
|
(1 row) |
|
|
|
|
|
|
|
|
|
SELECT '127.0.0.2'::inet - ('127.0.0.2'::inet - 500); |
|
|
|
|
?column? |
|
|
|
|
---------- |
|
|
|
|
500 |
|
|
|
|
(1 row) |
|
|
|
|
|
|
|
|
|
SELECT '127::2'::inet - ('127::2'::inet + 500); |
|
|
|
|
?column? |
|
|
|
|
---------- |
|
|
|
|
-500 |
|
|
|
|
(1 row) |
|
|
|
|
|
|
|
|
|
SELECT '127::2'::inet - ('127::2'::inet - 500); |
|
|
|
|
?column? |
|
|
|
|
---------- |
|
|
|
|
500 |
|
|
|
|
(1 row) |
|
|
|
|
|
|
|
|
|
-- these should give overflow errors: |
|
|
|
|
SELECT '127.0.0.1'::inet + 10000000000; |
|
|
|
|
ERROR: result out of range |
|
|
|
|
SELECT '127.0.0.1'::inet - 10000000000; |
|
|
|
|
ERROR: result out of range |
|
|
|
|
SELECT '126::1'::inet - '127::2'::inet; |
|
|
|
|
ERROR: result out of range |
|
|
|
|
SELECT '127::1'::inet - '126::2'::inet; |
|
|
|
|
ERROR: result out of range |
|
|
|
|
-- but not these |
|
|
|
|
SELECT '127::1'::inet + 10000000000; |
|
|
|
|
?column? |
|
|
|
|
------------------ |
|
|
|
|
226 |
|
|
|
|
226 |
|
|
|
|
0 |
|
|
|
|
0 |
|
|
|
|
255 |
|
|
|
|
255 |
|
|
|
|
66051 |
|
|
|
|
66051 |
|
|
|
|
0 |
|
|
|
|
3 |
|
|
|
|
515 |
|
|
|
|
66051 |
|
|
|
|
16843267 |
|
|
|
|
-16711165 |
|
|
|
|
0 |
|
|
|
|
32767 |
|
|
|
|
-281470631346435 |
|
|
|
|
(17 rows) |
|
|
|
|
127::2:540b:e401 |
|
|
|
|
(1 row) |
|
|
|
|
|
|
|
|
|
SELECT '127::1'::inet - '127::2'::inet; |
|
|
|
|
?column? |
|
|
|
|
---------- |
|
|
|
|
-1 |
|
|
|
|
(1 row) |
|
|
|
|
|
|
|
|
|
SET enable_seqscan TO on; |
|
|
|
|
DROP INDEX inet_idx1; |
|
|
|
|