]> granicus.if.org Git - postgresql/blob - src/test/regress/expected/inet.out
Teach the system how to use hashing for UNION. (INTERSECT/EXCEPT will follow,
[postgresql] / src / test / regress / expected / inet.out
1 --
2 -- INET
3 --
4 -- prepare the table...
5 DROP TABLE INET_TBL;
6 ERROR:  table "inet_tbl" does not exist
7 CREATE TABLE INET_TBL (c cidr, i inet);
8 INSERT INTO INET_TBL (c, i) VALUES ('192.168.1', '192.168.1.226/24');
9 INSERT INTO INET_TBL (c, i) VALUES ('192.168.1.0/26', '192.168.1.226');
10 INSERT INTO INET_TBL (c, i) VALUES ('192.168.1', '192.168.1.0/24');
11 INSERT INTO INET_TBL (c, i) VALUES ('192.168.1', '192.168.1.0/25');
12 INSERT INTO INET_TBL (c, i) VALUES ('192.168.1', '192.168.1.255/24');
13 INSERT INTO INET_TBL (c, i) VALUES ('192.168.1', '192.168.1.255/25');
14 INSERT INTO INET_TBL (c, i) VALUES ('10', '10.1.2.3/8');
15 INSERT INTO INET_TBL (c, i) VALUES ('10.0.0.0', '10.1.2.3/8');
16 INSERT INTO INET_TBL (c, i) VALUES ('10.1.2.3', '10.1.2.3/32');
17 INSERT INTO INET_TBL (c, i) VALUES ('10.1.2', '10.1.2.3/24');
18 INSERT INTO INET_TBL (c, i) VALUES ('10.1', '10.1.2.3/16');
19 INSERT INTO INET_TBL (c, i) VALUES ('10', '10.1.2.3/8');
20 INSERT INTO INET_TBL (c, i) VALUES ('10', '11.1.2.3/8');
21 INSERT INTO INET_TBL (c, i) VALUES ('10', '9.1.2.3/8');
22 INSERT INTO INET_TBL (c, i) VALUES ('10:23::f1', '10:23::f1/64');
23 INSERT INTO INET_TBL (c, i) VALUES ('10:23::8000/113', '10:23::ffff');
24 INSERT INTO INET_TBL (c, i) VALUES ('::ffff:1.2.3.4', '::4.3.2.1/24');
25 -- check that CIDR rejects invalid input:
26 INSERT INTO INET_TBL (c, i) VALUES ('192.168.1.2/30', '192.168.1.226');
27 ERROR:  invalid cidr value: "192.168.1.2/30"
28 DETAIL:  Value has bits set to right of mask.
29 INSERT INTO INET_TBL (c, i) VALUES ('1234::1234::1234', '::1.2.3.4');
30 ERROR:  invalid input syntax for type cidr: "1234::1234::1234"
31 -- check that CIDR rejects invalid input when converting from text:
32 INSERT INTO INET_TBL (c, i) VALUES (cidr('192.168.1.2/30'), '192.168.1.226');
33 ERROR:  invalid cidr value: "192.168.1.2/30"
34 DETAIL:  Value has bits set to right of mask.
35 INSERT INTO INET_TBL (c, i) VALUES (cidr('ffff:ffff:ffff:ffff::/24'), '::192.168.1.226');
36 ERROR:  invalid cidr value: "ffff:ffff:ffff:ffff::/24"
37 DETAIL:  Value has bits set to right of mask.
38 SELECT '' AS ten, c AS cidr, i AS inet FROM INET_TBL;
39  ten |        cidr        |       inet       
40 -----+--------------------+------------------
41      | 192.168.1.0/24     | 192.168.1.226/24
42      | 192.168.1.0/26     | 192.168.1.226
43      | 192.168.1.0/24     | 192.168.1.0/24
44      | 192.168.1.0/24     | 192.168.1.0/25
45      | 192.168.1.0/24     | 192.168.1.255/24
46      | 192.168.1.0/24     | 192.168.1.255/25
47      | 10.0.0.0/8         | 10.1.2.3/8
48      | 10.0.0.0/32        | 10.1.2.3/8
49      | 10.1.2.3/32        | 10.1.2.3
50      | 10.1.2.0/24        | 10.1.2.3/24
51      | 10.1.0.0/16        | 10.1.2.3/16
52      | 10.0.0.0/8         | 10.1.2.3/8
53      | 10.0.0.0/8         | 11.1.2.3/8
54      | 10.0.0.0/8         | 9.1.2.3/8
55      | 10:23::f1/128      | 10:23::f1/64
56      | 10:23::8000/113    | 10:23::ffff
57      | ::ffff:1.2.3.4/128 | ::4.3.2.1/24
58 (17 rows)
59
60 -- now test some support functions
61 SELECT '' AS ten, i AS inet, host(i), text(i), family(i) FROM INET_TBL;
62  ten |       inet       |     host      |       text       | family 
63 -----+------------------+---------------+------------------+--------
64      | 192.168.1.226/24 | 192.168.1.226 | 192.168.1.226/24 |      4
65      | 192.168.1.226    | 192.168.1.226 | 192.168.1.226/32 |      4
66      | 192.168.1.0/24   | 192.168.1.0   | 192.168.1.0/24   |      4
67      | 192.168.1.0/25   | 192.168.1.0   | 192.168.1.0/25   |      4
68      | 192.168.1.255/24 | 192.168.1.255 | 192.168.1.255/24 |      4
69      | 192.168.1.255/25 | 192.168.1.255 | 192.168.1.255/25 |      4
70      | 10.1.2.3/8       | 10.1.2.3      | 10.1.2.3/8       |      4
71      | 10.1.2.3/8       | 10.1.2.3      | 10.1.2.3/8       |      4
72      | 10.1.2.3         | 10.1.2.3      | 10.1.2.3/32      |      4
73      | 10.1.2.3/24      | 10.1.2.3      | 10.1.2.3/24      |      4
74      | 10.1.2.3/16      | 10.1.2.3      | 10.1.2.3/16      |      4
75      | 10.1.2.3/8       | 10.1.2.3      | 10.1.2.3/8       |      4
76      | 11.1.2.3/8       | 11.1.2.3      | 11.1.2.3/8       |      4
77      | 9.1.2.3/8        | 9.1.2.3       | 9.1.2.3/8        |      4
78      | 10:23::f1/64     | 10:23::f1     | 10:23::f1/64     |      6
79      | 10:23::ffff      | 10:23::ffff   | 10:23::ffff/128  |      6
80      | ::4.3.2.1/24     | ::4.3.2.1     | ::4.3.2.1/24     |      6
81 (17 rows)
82
83 SELECT '' AS ten, c AS cidr, broadcast(c),
84   i AS inet, broadcast(i) FROM INET_TBL;
85  ten |        cidr        |    broadcast     |       inet       |               broadcast               
86 -----+--------------------+------------------+------------------+---------------------------------------
87      | 192.168.1.0/24     | 192.168.1.255/24 | 192.168.1.226/24 | 192.168.1.255/24
88      | 192.168.1.0/26     | 192.168.1.63/26  | 192.168.1.226    | 192.168.1.226
89      | 192.168.1.0/24     | 192.168.1.255/24 | 192.168.1.0/24   | 192.168.1.255/24
90      | 192.168.1.0/24     | 192.168.1.255/24 | 192.168.1.0/25   | 192.168.1.127/25
91      | 192.168.1.0/24     | 192.168.1.255/24 | 192.168.1.255/24 | 192.168.1.255/24
92      | 192.168.1.0/24     | 192.168.1.255/24 | 192.168.1.255/25 | 192.168.1.255/25
93      | 10.0.0.0/8         | 10.255.255.255/8 | 10.1.2.3/8       | 10.255.255.255/8
94      | 10.0.0.0/32        | 10.0.0.0         | 10.1.2.3/8       | 10.255.255.255/8
95      | 10.1.2.3/32        | 10.1.2.3         | 10.1.2.3         | 10.1.2.3
96      | 10.1.2.0/24        | 10.1.2.255/24    | 10.1.2.3/24      | 10.1.2.255/24
97      | 10.1.0.0/16        | 10.1.255.255/16  | 10.1.2.3/16      | 10.1.255.255/16
98      | 10.0.0.0/8         | 10.255.255.255/8 | 10.1.2.3/8       | 10.255.255.255/8
99      | 10.0.0.0/8         | 10.255.255.255/8 | 11.1.2.3/8       | 11.255.255.255/8
100      | 10.0.0.0/8         | 10.255.255.255/8 | 9.1.2.3/8        | 9.255.255.255/8
101      | 10:23::f1/128      | 10:23::f1        | 10:23::f1/64     | 10:23::ffff:ffff:ffff:ffff/64
102      | 10:23::8000/113    | 10:23::ffff/113  | 10:23::ffff      | 10:23::ffff
103      | ::ffff:1.2.3.4/128 | ::ffff:1.2.3.4   | ::4.3.2.1/24     | 0:ff:ffff:ffff:ffff:ffff:ffff:ffff/24
104 (17 rows)
105
106 SELECT '' AS ten, c AS cidr, network(c) AS "network(cidr)",
107   i AS inet, network(i) AS "network(inet)" FROM INET_TBL;
108  ten |        cidr        |   network(cidr)    |       inet       |  network(inet)   
109 -----+--------------------+--------------------+------------------+------------------
110      | 192.168.1.0/24     | 192.168.1.0/24     | 192.168.1.226/24 | 192.168.1.0/24
111      | 192.168.1.0/26     | 192.168.1.0/26     | 192.168.1.226    | 192.168.1.226/32
112      | 192.168.1.0/24     | 192.168.1.0/24     | 192.168.1.0/24   | 192.168.1.0/24
113      | 192.168.1.0/24     | 192.168.1.0/24     | 192.168.1.0/25   | 192.168.1.0/25
114      | 192.168.1.0/24     | 192.168.1.0/24     | 192.168.1.255/24 | 192.168.1.0/24
115      | 192.168.1.0/24     | 192.168.1.0/24     | 192.168.1.255/25 | 192.168.1.128/25
116      | 10.0.0.0/8         | 10.0.0.0/8         | 10.1.2.3/8       | 10.0.0.0/8
117      | 10.0.0.0/32        | 10.0.0.0/32        | 10.1.2.3/8       | 10.0.0.0/8
118      | 10.1.2.3/32        | 10.1.2.3/32        | 10.1.2.3         | 10.1.2.3/32
119      | 10.1.2.0/24        | 10.1.2.0/24        | 10.1.2.3/24      | 10.1.2.0/24
120      | 10.1.0.0/16        | 10.1.0.0/16        | 10.1.2.3/16      | 10.1.0.0/16
121      | 10.0.0.0/8         | 10.0.0.0/8         | 10.1.2.3/8       | 10.0.0.0/8
122      | 10.0.0.0/8         | 10.0.0.0/8         | 11.1.2.3/8       | 11.0.0.0/8
123      | 10.0.0.0/8         | 10.0.0.0/8         | 9.1.2.3/8        | 9.0.0.0/8
124      | 10:23::f1/128      | 10:23::f1/128      | 10:23::f1/64     | 10:23::/64
125      | 10:23::8000/113    | 10:23::8000/113    | 10:23::ffff      | 10:23::ffff/128
126      | ::ffff:1.2.3.4/128 | ::ffff:1.2.3.4/128 | ::4.3.2.1/24     | ::/24
127 (17 rows)
128
129 SELECT '' AS ten, c AS cidr, masklen(c) AS "masklen(cidr)",
130   i AS inet, masklen(i) AS "masklen(inet)" FROM INET_TBL;
131  ten |        cidr        | masklen(cidr) |       inet       | masklen(inet) 
132 -----+--------------------+---------------+------------------+---------------
133      | 192.168.1.0/24     |            24 | 192.168.1.226/24 |            24
134      | 192.168.1.0/26     |            26 | 192.168.1.226    |            32
135      | 192.168.1.0/24     |            24 | 192.168.1.0/24   |            24
136      | 192.168.1.0/24     |            24 | 192.168.1.0/25   |            25
137      | 192.168.1.0/24     |            24 | 192.168.1.255/24 |            24
138      | 192.168.1.0/24     |            24 | 192.168.1.255/25 |            25
139      | 10.0.0.0/8         |             8 | 10.1.2.3/8       |             8
140      | 10.0.0.0/32        |            32 | 10.1.2.3/8       |             8
141      | 10.1.2.3/32        |            32 | 10.1.2.3         |            32
142      | 10.1.2.0/24        |            24 | 10.1.2.3/24      |            24
143      | 10.1.0.0/16        |            16 | 10.1.2.3/16      |            16
144      | 10.0.0.0/8         |             8 | 10.1.2.3/8       |             8
145      | 10.0.0.0/8         |             8 | 11.1.2.3/8       |             8
146      | 10.0.0.0/8         |             8 | 9.1.2.3/8        |             8
147      | 10:23::f1/128      |           128 | 10:23::f1/64     |            64
148      | 10:23::8000/113    |           113 | 10:23::ffff      |           128
149      | ::ffff:1.2.3.4/128 |           128 | ::4.3.2.1/24     |            24
150 (17 rows)
151
152 SELECT '' AS four, c AS cidr, masklen(c) AS "masklen(cidr)",
153   i AS inet, masklen(i) AS "masklen(inet)" FROM INET_TBL
154   WHERE masklen(c) <= 8;
155  four |    cidr    | masklen(cidr) |    inet    | masklen(inet) 
156 ------+------------+---------------+------------+---------------
157       | 10.0.0.0/8 |             8 | 10.1.2.3/8 |             8
158       | 10.0.0.0/8 |             8 | 10.1.2.3/8 |             8
159       | 10.0.0.0/8 |             8 | 11.1.2.3/8 |             8
160       | 10.0.0.0/8 |             8 | 9.1.2.3/8  |             8
161 (4 rows)
162
163 SELECT '' AS six, c AS cidr, i AS inet FROM INET_TBL
164   WHERE c = i;
165  six |      cidr      |      inet      
166 -----+----------------+----------------
167      | 192.168.1.0/24 | 192.168.1.0/24
168      | 10.1.2.3/32    | 10.1.2.3
169 (2 rows)
170
171 SELECT '' AS ten, i, c,
172   i < c AS lt, i <= c AS le, i = c AS eq, 
173   i >= c AS ge, i > c AS gt, i <> c AS ne,
174   i << c AS sb, i <<= c AS sbe,
175   i >> c AS sup, i >>= c AS spe
176   FROM INET_TBL;
177  ten |        i         |         c          | lt | le | eq | ge | gt | ne | sb | sbe | sup | spe 
178 -----+------------------+--------------------+----+----+----+----+----+----+----+-----+-----+-----
179      | 192.168.1.226/24 | 192.168.1.0/24     | f  | f  | f  | t  | t  | t  | f  | t   | f   | t
180      | 192.168.1.226    | 192.168.1.0/26     | f  | f  | f  | t  | t  | t  | f  | f   | f   | f
181      | 192.168.1.0/24   | 192.168.1.0/24     | f  | t  | t  | t  | f  | f  | f  | t   | f   | t
182      | 192.168.1.0/25   | 192.168.1.0/24     | f  | f  | f  | t  | t  | t  | t  | t   | f   | f
183      | 192.168.1.255/24 | 192.168.1.0/24     | f  | f  | f  | t  | t  | t  | f  | t   | f   | t
184      | 192.168.1.255/25 | 192.168.1.0/24     | f  | f  | f  | t  | t  | t  | t  | t   | f   | f
185      | 10.1.2.3/8       | 10.0.0.0/8         | f  | f  | f  | t  | t  | t  | f  | t   | f   | t
186      | 10.1.2.3/8       | 10.0.0.0/32        | t  | t  | f  | f  | f  | t  | f  | f   | t   | t
187      | 10.1.2.3         | 10.1.2.3/32        | f  | t  | t  | t  | f  | f  | f  | t   | f   | t
188      | 10.1.2.3/24      | 10.1.2.0/24        | f  | f  | f  | t  | t  | t  | f  | t   | f   | t
189      | 10.1.2.3/16      | 10.1.0.0/16        | f  | f  | f  | t  | t  | t  | f  | t   | f   | t
190      | 10.1.2.3/8       | 10.0.0.0/8         | f  | f  | f  | t  | t  | t  | f  | t   | f   | t
191      | 11.1.2.3/8       | 10.0.0.0/8         | f  | f  | f  | t  | t  | t  | f  | f   | f   | f
192      | 9.1.2.3/8        | 10.0.0.0/8         | t  | t  | f  | f  | f  | t  | f  | f   | f   | f
193      | 10:23::f1/64     | 10:23::f1/128      | t  | t  | f  | f  | f  | t  | f  | f   | t   | t
194      | 10:23::ffff      | 10:23::8000/113    | f  | f  | f  | t  | t  | t  | t  | t   | f   | f
195      | ::4.3.2.1/24     | ::ffff:1.2.3.4/128 | t  | t  | f  | f  | f  | t  | f  | f   | t   | t
196 (17 rows)
197
198 -- check the conversion to/from text and set_netmask
199 SELECT '' AS ten, set_masklen(inet(text(i)), 24) FROM INET_TBL;
200  ten |   set_masklen    
201 -----+------------------
202      | 192.168.1.226/24
203      | 192.168.1.226/24
204      | 192.168.1.0/24
205      | 192.168.1.0/24
206      | 192.168.1.255/24
207      | 192.168.1.255/24
208      | 10.1.2.3/24
209      | 10.1.2.3/24
210      | 10.1.2.3/24
211      | 10.1.2.3/24
212      | 10.1.2.3/24
213      | 10.1.2.3/24
214      | 11.1.2.3/24
215      | 9.1.2.3/24
216      | 10:23::f1/24
217      | 10:23::ffff/24
218      | ::4.3.2.1/24
219 (17 rows)
220
221 -- check that index works correctly
222 CREATE INDEX inet_idx1 ON inet_tbl(i);
223 SET enable_seqscan TO off;
224 SELECT * FROM inet_tbl WHERE i<<'192.168.1.0/24'::cidr;
225        c        |        i         
226 ----------------+------------------
227  192.168.1.0/24 | 192.168.1.0/25
228  192.168.1.0/24 | 192.168.1.255/25
229  192.168.1.0/26 | 192.168.1.226
230 (3 rows)
231
232 SELECT * FROM inet_tbl WHERE i<<='192.168.1.0/24'::cidr;
233        c        |        i         
234 ----------------+------------------
235  192.168.1.0/24 | 192.168.1.0/24
236  192.168.1.0/24 | 192.168.1.226/24
237  192.168.1.0/24 | 192.168.1.255/24
238  192.168.1.0/24 | 192.168.1.0/25
239  192.168.1.0/24 | 192.168.1.255/25
240  192.168.1.0/26 | 192.168.1.226
241 (6 rows)
242
243 SET enable_seqscan TO on;
244 DROP INDEX inet_idx1;
245 -- simple tests of inet boolean and arithmetic operators
246 SELECT i, ~i AS "~i" FROM inet_tbl;
247         i         |                     ~i                     
248 ------------------+--------------------------------------------
249  192.168.1.226/24 | 63.87.254.29/24
250  192.168.1.226    | 63.87.254.29
251  192.168.1.0/24   | 63.87.254.255/24
252  192.168.1.0/25   | 63.87.254.255/25
253  192.168.1.255/24 | 63.87.254.0/24
254  192.168.1.255/25 | 63.87.254.0/25
255  10.1.2.3/8       | 245.254.253.252/8
256  10.1.2.3/8       | 245.254.253.252/8
257  10.1.2.3         | 245.254.253.252
258  10.1.2.3/24      | 245.254.253.252/24
259  10.1.2.3/16      | 245.254.253.252/16
260  10.1.2.3/8       | 245.254.253.252/8
261  11.1.2.3/8       | 244.254.253.252/8
262  9.1.2.3/8        | 246.254.253.252/8
263  10:23::f1/64     | ffef:ffdc:ffff:ffff:ffff:ffff:ffff:ff0e/64
264  10:23::ffff      | ffef:ffdc:ffff:ffff:ffff:ffff:ffff:0
265  ::4.3.2.1/24     | ffff:ffff:ffff:ffff:ffff:ffff:fbfc:fdfe/24
266 (17 rows)
267
268 SELECT i, c, i & c AS "and" FROM inet_tbl;
269         i         |         c          |      and       
270 ------------------+--------------------+----------------
271  192.168.1.226/24 | 192.168.1.0/24     | 192.168.1.0/24
272  192.168.1.226    | 192.168.1.0/26     | 192.168.1.0
273  192.168.1.0/24   | 192.168.1.0/24     | 192.168.1.0/24
274  192.168.1.0/25   | 192.168.1.0/24     | 192.168.1.0/25
275  192.168.1.255/24 | 192.168.1.0/24     | 192.168.1.0/24
276  192.168.1.255/25 | 192.168.1.0/24     | 192.168.1.0/25
277  10.1.2.3/8       | 10.0.0.0/8         | 10.0.0.0/8
278  10.1.2.3/8       | 10.0.0.0/32        | 10.0.0.0
279  10.1.2.3         | 10.1.2.3/32        | 10.1.2.3
280  10.1.2.3/24      | 10.1.2.0/24        | 10.1.2.0/24
281  10.1.2.3/16      | 10.1.0.0/16        | 10.1.0.0/16
282  10.1.2.3/8       | 10.0.0.0/8         | 10.0.0.0/8
283  11.1.2.3/8       | 10.0.0.0/8         | 10.0.0.0/8
284  9.1.2.3/8        | 10.0.0.0/8         | 8.0.0.0/8
285  10:23::f1/64     | 10:23::f1/128      | 10:23::f1
286  10:23::ffff      | 10:23::8000/113    | 10:23::8000
287  ::4.3.2.1/24     | ::ffff:1.2.3.4/128 | ::0.2.2.0
288 (17 rows)
289
290 SELECT i, c, i | c AS "or" FROM inet_tbl;
291         i         |         c          |        or        
292 ------------------+--------------------+------------------
293  192.168.1.226/24 | 192.168.1.0/24     | 192.168.1.226/24
294  192.168.1.226    | 192.168.1.0/26     | 192.168.1.226
295  192.168.1.0/24   | 192.168.1.0/24     | 192.168.1.0/24
296  192.168.1.0/25   | 192.168.1.0/24     | 192.168.1.0/25
297  192.168.1.255/24 | 192.168.1.0/24     | 192.168.1.255/24
298  192.168.1.255/25 | 192.168.1.0/24     | 192.168.1.255/25
299  10.1.2.3/8       | 10.0.0.0/8         | 10.1.2.3/8
300  10.1.2.3/8       | 10.0.0.0/32        | 10.1.2.3
301  10.1.2.3         | 10.1.2.3/32        | 10.1.2.3
302  10.1.2.3/24      | 10.1.2.0/24        | 10.1.2.3/24
303  10.1.2.3/16      | 10.1.0.0/16        | 10.1.2.3/16
304  10.1.2.3/8       | 10.0.0.0/8         | 10.1.2.3/8
305  11.1.2.3/8       | 10.0.0.0/8         | 11.1.2.3/8
306  9.1.2.3/8        | 10.0.0.0/8         | 11.1.2.3/8
307  10:23::f1/64     | 10:23::f1/128      | 10:23::f1
308  10:23::ffff      | 10:23::8000/113    | 10:23::ffff
309  ::4.3.2.1/24     | ::ffff:1.2.3.4/128 | ::ffff:5.3.3.5
310 (17 rows)
311
312 SELECT i, i + 500 AS "i+500" FROM inet_tbl;
313         i         |      i+500       
314 ------------------+------------------
315  192.168.1.226/24 | 192.168.3.214/24
316  192.168.1.226    | 192.168.3.214
317  192.168.1.0/24   | 192.168.2.244/24
318  192.168.1.0/25   | 192.168.2.244/25
319  192.168.1.255/24 | 192.168.3.243/24
320  192.168.1.255/25 | 192.168.3.243/25
321  10.1.2.3/8       | 10.1.3.247/8
322  10.1.2.3/8       | 10.1.3.247/8
323  10.1.2.3         | 10.1.3.247
324  10.1.2.3/24      | 10.1.3.247/24
325  10.1.2.3/16      | 10.1.3.247/16
326  10.1.2.3/8       | 10.1.3.247/8
327  11.1.2.3/8       | 11.1.3.247/8
328  9.1.2.3/8        | 9.1.3.247/8
329  10:23::f1/64     | 10:23::2e5/64
330  10:23::ffff      | 10:23::1:1f3
331  ::4.3.2.1/24     | ::4.3.3.245/24
332 (17 rows)
333
334 SELECT i, i - 500 AS "i-500" FROM inet_tbl;
335         i         |                 i-500                  
336 ------------------+----------------------------------------
337  192.168.1.226/24 | 192.167.255.238/24
338  192.168.1.226    | 192.167.255.238
339  192.168.1.0/24   | 192.167.255.12/24
340  192.168.1.0/25   | 192.167.255.12/25
341  192.168.1.255/24 | 192.168.0.11/24
342  192.168.1.255/25 | 192.168.0.11/25
343  10.1.2.3/8       | 10.1.0.15/8
344  10.1.2.3/8       | 10.1.0.15/8
345  10.1.2.3         | 10.1.0.15
346  10.1.2.3/24      | 10.1.0.15/24
347  10.1.2.3/16      | 10.1.0.15/16
348  10.1.2.3/8       | 10.1.0.15/8
349  11.1.2.3/8       | 11.1.0.15/8
350  9.1.2.3/8        | 9.1.0.15/8
351  10:23::f1/64     | 10:22:ffff:ffff:ffff:ffff:ffff:fefd/64
352  10:23::ffff      | 10:23::fe0b
353  ::4.3.2.1/24     | ::4.3.0.13/24
354 (17 rows)
355
356 SELECT i, c, i - c AS "minus" FROM inet_tbl;
357         i         |         c          |      minus       
358 ------------------+--------------------+------------------
359  192.168.1.226/24 | 192.168.1.0/24     |              226
360  192.168.1.226    | 192.168.1.0/26     |              226
361  192.168.1.0/24   | 192.168.1.0/24     |                0
362  192.168.1.0/25   | 192.168.1.0/24     |                0
363  192.168.1.255/24 | 192.168.1.0/24     |              255
364  192.168.1.255/25 | 192.168.1.0/24     |              255
365  10.1.2.3/8       | 10.0.0.0/8         |            66051
366  10.1.2.3/8       | 10.0.0.0/32        |            66051
367  10.1.2.3         | 10.1.2.3/32        |                0
368  10.1.2.3/24      | 10.1.2.0/24        |                3
369  10.1.2.3/16      | 10.1.0.0/16        |              515
370  10.1.2.3/8       | 10.0.0.0/8         |            66051
371  11.1.2.3/8       | 10.0.0.0/8         |         16843267
372  9.1.2.3/8        | 10.0.0.0/8         |        -16711165
373  10:23::f1/64     | 10:23::f1/128      |                0
374  10:23::ffff      | 10:23::8000/113    |            32767
375  ::4.3.2.1/24     | ::ffff:1.2.3.4/128 | -281470631346435
376 (17 rows)
377
378 SELECT '127.0.0.1'::inet + 257;
379  ?column?  
380 -----------
381  127.0.1.2
382 (1 row)
383
384 SELECT ('127.0.0.1'::inet + 257) - 257;
385  ?column?  
386 -----------
387  127.0.0.1
388 (1 row)
389
390 SELECT '127::1'::inet + 257;
391  ?column? 
392 ----------
393  127::102
394 (1 row)
395
396 SELECT ('127::1'::inet + 257) - 257;
397  ?column? 
398 ----------
399  127::1
400 (1 row)
401
402 SELECT '127.0.0.2'::inet  - ('127.0.0.2'::inet + 500);
403  ?column? 
404 ----------
405      -500
406 (1 row)
407
408 SELECT '127.0.0.2'::inet  - ('127.0.0.2'::inet - 500);
409  ?column? 
410 ----------
411       500
412 (1 row)
413
414 SELECT '127::2'::inet  - ('127::2'::inet + 500);
415  ?column? 
416 ----------
417      -500
418 (1 row)
419
420 SELECT '127::2'::inet  - ('127::2'::inet - 500);
421  ?column? 
422 ----------
423       500
424 (1 row)
425
426 -- these should give overflow errors:
427 SELECT '127.0.0.1'::inet + 10000000000;
428 ERROR:  result is out of range
429 SELECT '127.0.0.1'::inet - 10000000000;
430 ERROR:  result is out of range
431 SELECT '126::1'::inet - '127::2'::inet;
432 ERROR:  result is out of range
433 SELECT '127::1'::inet - '126::2'::inet;
434 ERROR:  result is out of range
435 -- but not these
436 SELECT '127::1'::inet + 10000000000;
437      ?column?     
438 ------------------
439  127::2:540b:e401
440 (1 row)
441
442 SELECT '127::1'::inet - '127::2'::inet;
443  ?column? 
444 ----------
445        -1
446 (1 row)
447