@@ -88,31 +88,32 @@ SELECT i AS inet, host(i), text(i), family(i) FROM INET_TBL;
88
88
::4.3.2.1/24 | ::4.3.2.1 | ::4.3.2.1/24 | 6
89
89
(17 rows)
90
90
91
- SELECT c AS cidr, abbrev(c) FROM INET_TBL;
92
- cidr | abbrev
93
- --------------------+--------------------
94
- 192.168.1.0/24 | 192.168.1/24
95
- 192.168.1.0/26 | 192.168.1.0/26
96
- 192.168.1.0/24 | 192.168.1/24
97
- 192.168.1.0/24 | 192.168.1/24
98
- 192.168.1.0/24 | 192.168.1/24
99
- 192.168.1.0/24 | 192.168.1/24
100
- 10.0.0.0/8 | 10/8
101
- 10.0.0.0/32 | 10.0.0.0/32
102
- 10.1.2.3/32 | 10.1.2.3/32
103
- 10.1.2.0/24 | 10.1.2/24
104
- 10.1.0.0/16 | 10.1/16
105
- 10.0.0.0/8 | 10/8
106
- 10.0.0.0/8 | 10/8
107
- 10.0.0.0/8 | 10/8
108
- 10:23::f1/128 | 10:23::f1/128
109
- 10:23::8000/113 | 10:23::8000/113
110
- ::ffff:1.2.3.4/128 | ::ffff:1.2.3.4/128
91
+ SELECT c AS cidr, abbrev(c) AS "abbrev(cidr)",
92
+ i AS inet, abbrev(i) AS "abbrev(inet)" FROM INET_TBL;
93
+ cidr | abbrev(cidr) | inet | abbrev(inet)
94
+ --------------------+--------------------+------------------+------------------
95
+ 192.168.1.0/24 | 192.168.1/24 | 192.168.1.226/24 | 192.168.1.226/24
96
+ 192.168.1.0/26 | 192.168.1.0/26 | 192.168.1.226 | 192.168.1.226
97
+ 192.168.1.0/24 | 192.168.1/24 | 192.168.1.0/24 | 192.168.1.0/24
98
+ 192.168.1.0/24 | 192.168.1/24 | 192.168.1.0/25 | 192.168.1.0/25
99
+ 192.168.1.0/24 | 192.168.1/24 | 192.168.1.255/24 | 192.168.1.255/24
100
+ 192.168.1.0/24 | 192.168.1/24 | 192.168.1.255/25 | 192.168.1.255/25
101
+ 10.0.0.0/8 | 10/8 | 10.1.2.3/8 | 10.1.2.3/8
102
+ 10.0.0.0/32 | 10.0.0.0/32 | 10.1.2.3/8 | 10.1.2.3/8
103
+ 10.1.2.3/32 | 10.1.2.3/32 | 10.1.2.3 | 10.1.2.3
104
+ 10.1.2.0/24 | 10.1.2/24 | 10.1.2.3/24 | 10.1.2.3/24
105
+ 10.1.0.0/16 | 10.1/16 | 10.1.2.3/16 | 10.1.2.3/16
106
+ 10.0.0.0/8 | 10/8 | 10.1.2.3/8 | 10.1.2.3/8
107
+ 10.0.0.0/8 | 10/8 | 11.1.2.3/8 | 11.1.2.3/8
108
+ 10.0.0.0/8 | 10/8 | 9.1.2.3/8 | 9.1.2.3/8
109
+ 10:23::f1/128 | 10:23::f1/128 | 10:23::f1/64 | 10:23::f1/64
110
+ 10:23::8000/113 | 10:23::8000/113 | 10:23::ffff | 10:23::ffff
111
+ ::ffff:1.2.3.4/128 | ::ffff:1.2.3.4/128 | ::4.3.2.1/24 | ::4.3.2.1/24
111
112
(17 rows)
112
113
113
- SELECT c AS cidr, broadcast(c),
114
- i AS inet, broadcast(i) FROM INET_TBL;
115
- cidr | broadcast | inet | broadcast
114
+ SELECT c AS cidr, broadcast(c) AS "broadcast(cidr)" ,
115
+ i AS inet, broadcast(i) AS "broadcast(inet)" FROM INET_TBL;
116
+ cidr | broadcast(cidr) | inet | broadcast(inet)
116
117
--------------------+------------------+------------------+---------------------------------------
117
118
192.168.1.0/24 | 192.168.1.255/24 | 192.168.1.226/24 | 192.168.1.255/24
118
119
192.168.1.0/26 | 192.168.1.63/26 | 192.168.1.226 | 192.168.1.226
@@ -190,6 +191,50 @@ SELECT c AS cidr, masklen(c) AS "masklen(cidr)",
190
191
10.0.0.0/8 | 8 | 9.1.2.3/8 | 8
191
192
(4 rows)
192
193
194
+ SELECT i AS inet, netmask(i) AS "netmask(inet)" FROM INET_TBL;
195
+ inet | netmask(inet)
196
+ ------------------+-----------------------------------------
197
+ 192.168.1.226/24 | 255.255.255.0
198
+ 192.168.1.226 | 255.255.255.255
199
+ 192.168.1.0/24 | 255.255.255.0
200
+ 192.168.1.0/25 | 255.255.255.128
201
+ 192.168.1.255/24 | 255.255.255.0
202
+ 192.168.1.255/25 | 255.255.255.128
203
+ 10.1.2.3/8 | 255.0.0.0
204
+ 10.1.2.3/8 | 255.0.0.0
205
+ 10.1.2.3 | 255.255.255.255
206
+ 10.1.2.3/24 | 255.255.255.0
207
+ 10.1.2.3/16 | 255.255.0.0
208
+ 10.1.2.3/8 | 255.0.0.0
209
+ 11.1.2.3/8 | 255.0.0.0
210
+ 9.1.2.3/8 | 255.0.0.0
211
+ 10:23::f1/64 | ffff:ffff:ffff:ffff::
212
+ 10:23::ffff | ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
213
+ ::4.3.2.1/24 | ffff:ff00::
214
+ (17 rows)
215
+
216
+ SELECT i AS inet, hostmask(i) AS "hostmask(inet)" FROM INET_TBL;
217
+ inet | hostmask(inet)
218
+ ------------------+------------------------------------
219
+ 192.168.1.226/24 | 0.0.0.255
220
+ 192.168.1.226 | 0.0.0.0
221
+ 192.168.1.0/24 | 0.0.0.255
222
+ 192.168.1.0/25 | 0.0.0.127
223
+ 192.168.1.255/24 | 0.0.0.255
224
+ 192.168.1.255/25 | 0.0.0.127
225
+ 10.1.2.3/8 | 0.255.255.255
226
+ 10.1.2.3/8 | 0.255.255.255
227
+ 10.1.2.3 | 0.0.0.0
228
+ 10.1.2.3/24 | 0.0.0.255
229
+ 10.1.2.3/16 | 0.0.255.255
230
+ 10.1.2.3/8 | 0.255.255.255
231
+ 11.1.2.3/8 | 0.255.255.255
232
+ 9.1.2.3/8 | 0.255.255.255
233
+ 10:23::f1/64 | ::ffff:ffff:ffff:ffff
234
+ 10:23::ffff | ::
235
+ ::4.3.2.1/24 | 0:ff:ffff:ffff:ffff:ffff:ffff:ffff
236
+ (17 rows)
237
+
193
238
SELECT c AS cidr, i AS inet FROM INET_TBL
194
239
WHERE c = i;
195
240
cidr | inet
@@ -238,29 +283,59 @@ SELECT max(c) AS max, min(c) AS min FROM INET_TBL;
238
283
10:23::8000/113 | 10.0.0.0/8
239
284
(1 row)
240
285
241
- -- check the conversion to/from text and set_netmask
242
- SELECT set_masklen(inet(text(i)), 24) FROM INET_TBL;
243
- set_masklen
244
- ------------------
245
- 192.168.1.226/24
246
- 192.168.1.226/24
247
- 192.168.1.0/24
248
- 192.168.1.0/24
249
- 192.168.1.255/24
250
- 192.168.1.255/24
251
- 10.1.2.3/24
252
- 10.1.2.3/24
253
- 10.1.2.3/24
254
- 10.1.2.3/24
255
- 10.1.2.3/24
256
- 10.1.2.3/24
257
- 11.1.2.3/24
258
- 9.1.2.3/24
259
- 10:23::f1/24
260
- 10:23::ffff/24
261
- ::4.3.2.1/24
286
+ -- check the conversion to/from text and setting netmask
287
+ SELECT c AS cidr, set_masklen(cidr(text(c)), 24) AS "set_masklen(cidr)",
288
+ i AS inet, set_masklen(inet(text(i)), 24) AS "set_masklen(inet)" FROM INET_TBL;
289
+ cidr | set_masklen(cidr) | inet | set_masklen(inet)
290
+ --------------------+-------------------+------------------+-------------------
291
+ 192.168.1.0/24 | 192.168.1.0/24 | 192.168.1.226/24 | 192.168.1.226/24
292
+ 192.168.1.0/26 | 192.168.1.0/24 | 192.168.1.226 | 192.168.1.226/24
293
+ 192.168.1.0/24 | 192.168.1.0/24 | 192.168.1.0/24 | 192.168.1.0/24
294
+ 192.168.1.0/24 | 192.168.1.0/24 | 192.168.1.0/25 | 192.168.1.0/24
295
+ 192.168.1.0/24 | 192.168.1.0/24 | 192.168.1.255/24 | 192.168.1.255/24
296
+ 192.168.1.0/24 | 192.168.1.0/24 | 192.168.1.255/25 | 192.168.1.255/24
297
+ 10.0.0.0/8 | 10.0.0.0/24 | 10.1.2.3/8 | 10.1.2.3/24
298
+ 10.0.0.0/32 | 10.0.0.0/24 | 10.1.2.3/8 | 10.1.2.3/24
299
+ 10.1.2.3/32 | 10.1.2.0/24 | 10.1.2.3 | 10.1.2.3/24
300
+ 10.1.2.0/24 | 10.1.2.0/24 | 10.1.2.3/24 | 10.1.2.3/24
301
+ 10.1.0.0/16 | 10.1.0.0/24 | 10.1.2.3/16 | 10.1.2.3/24
302
+ 10.0.0.0/8 | 10.0.0.0/24 | 10.1.2.3/8 | 10.1.2.3/24
303
+ 10.0.0.0/8 | 10.0.0.0/24 | 11.1.2.3/8 | 11.1.2.3/24
304
+ 10.0.0.0/8 | 10.0.0.0/24 | 9.1.2.3/8 | 9.1.2.3/24
305
+ 10:23::f1/128 | 10::/24 | 10:23::f1/64 | 10:23::f1/24
306
+ 10:23::8000/113 | 10::/24 | 10:23::ffff | 10:23::ffff/24
307
+ ::ffff:1.2.3.4/128 | ::/24 | ::4.3.2.1/24 | ::4.3.2.1/24
308
+ (17 rows)
309
+
310
+ -- check that netmask is treated as maximum value when set to -1
311
+ SELECT c AS cidr, set_masklen(cidr(text(c)), -1) AS "set_masklen(cidr)",
312
+ i AS inet, set_masklen(inet(text(i)), -1) AS "set_masklen(inet)" FROM INET_TBL;
313
+ cidr | set_masklen(cidr) | inet | set_masklen(inet)
314
+ --------------------+--------------------+------------------+-------------------
315
+ 192.168.1.0/24 | 192.168.1.0/32 | 192.168.1.226/24 | 192.168.1.226
316
+ 192.168.1.0/26 | 192.168.1.0/32 | 192.168.1.226 | 192.168.1.226
317
+ 192.168.1.0/24 | 192.168.1.0/32 | 192.168.1.0/24 | 192.168.1.0
318
+ 192.168.1.0/24 | 192.168.1.0/32 | 192.168.1.0/25 | 192.168.1.0
319
+ 192.168.1.0/24 | 192.168.1.0/32 | 192.168.1.255/24 | 192.168.1.255
320
+ 192.168.1.0/24 | 192.168.1.0/32 | 192.168.1.255/25 | 192.168.1.255
321
+ 10.0.0.0/8 | 10.0.0.0/32 | 10.1.2.3/8 | 10.1.2.3
322
+ 10.0.0.0/32 | 10.0.0.0/32 | 10.1.2.3/8 | 10.1.2.3
323
+ 10.1.2.3/32 | 10.1.2.3/32 | 10.1.2.3 | 10.1.2.3
324
+ 10.1.2.0/24 | 10.1.2.0/32 | 10.1.2.3/24 | 10.1.2.3
325
+ 10.1.0.0/16 | 10.1.0.0/32 | 10.1.2.3/16 | 10.1.2.3
326
+ 10.0.0.0/8 | 10.0.0.0/32 | 10.1.2.3/8 | 10.1.2.3
327
+ 10.0.0.0/8 | 10.0.0.0/32 | 11.1.2.3/8 | 11.1.2.3
328
+ 10.0.0.0/8 | 10.0.0.0/32 | 9.1.2.3/8 | 9.1.2.3
329
+ 10:23::f1/128 | 10:23::f1/128 | 10:23::f1/64 | 10:23::f1
330
+ 10:23::8000/113 | 10:23::8000/128 | 10:23::ffff | 10:23::ffff
331
+ ::ffff:1.2.3.4/128 | ::ffff:1.2.3.4/128 | ::4.3.2.1/24 | ::4.3.2.1
262
332
(17 rows)
263
333
334
+ -- check that invalid netmask is rejected
335
+ SELECT set_masklen(inet(text(i)), 33) FROM INET_TBL;
336
+ ERROR: invalid mask length: 33
337
+ SELECT set_masklen(cidr(text(c)), 33) FROM INET_TBL;
338
+ ERROR: invalid mask length: 33
264
339
-- check that btree index works correctly
265
340
CREATE INDEX inet_idx1 ON inet_tbl(i);
266
341
SET enable_seqscan TO off;
0 commit comments