Patchless postgres 8.x on AIX - Mailing list pgsql-ports
From | Seneca Cunningham |
---|---|
Subject | Patchless postgres 8.x on AIX |
Date | |
Msg-id | 437BB3C6.6050204@ca.afilias.info Whole thread Raw |
Responses |
Re: Patchless postgres 8.x on AIX
|
List | pgsql-ports |
I have patchless postgres 8.x working to the extent that it's not segfaulting on AIX 5.3 here, ML3 and built with gcc 4.0.1. There are two different ways that I've done it, adding "-lc" to the LDFLAGS passed to configure, and passing "--without-readline" to configure. All 98 regression tests pass with "--without-readline", but the inet test fails when LDFLAGS is set to "-lc". What is happening with postgres certainly appears to be related to the linker; in dynahash.c, the keycopy functions that work with no new linker flags (strncpy, memmove worked as a memcpy replacement) are all exported by libreadline.a, while the segfaulting/infinite-looping memcpy is not. When all the keycopy functions are from libc.a, by not linking against libreadline or by telling the linker to first check libc, all the keycopy functions, including memcpy, work. LDFLAGS configuration $ LDFLAGS="-lc" ./configure \ --prefix=/opt/dbs/pgsql810-afilias-AIX53-2005-11-16 \ --with-includes=/opt/freeware/include --enable-debug \ --enable-thread-safety --with-libraries=/opt/freeware/lib \ --enable-casert no readline configuration $ ./configure --prefix=/opt/dbs/pgsql810-afilias-AIX53-2005-11-16 \ --with-includes=/opt/freeware/include --enable-debug \ --enable-thread-safety --with-libraries=/opt/freeware/lib \ --enable-casert --without-readline -- Seneca Cunningham scunning@ca.afilias.info *** ./expected/inet.out Fri Oct 8 01:45:37 2004 --- ./results/inet.out Wed Nov 16 22:04:27 2005 *************** *** 20,27 **** --- 20,30 ---- 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'); INSERT INTO INET_TBL (c, i) VALUES ('10:23::f1', '10:23::f1/64'); + ERROR: invalid input syntax for type cidr: "10:23::f1" INSERT INTO INET_TBL (c, i) VALUES ('10:23::8000/113', '10:23::ffff'); + ERROR: invalid input syntax for type cidr: "10:23::8000/113" INSERT INTO INET_TBL (c, i) VALUES ('::ffff:1.2.3.4', '::4.3.2.1/24'); + ERROR: invalid input syntax for type cidr: "::ffff:1.2.3.4" -- check that CIDR rejects invalid input: INSERT INTO INET_TBL (c, i) VALUES ('192.168.1.2/30', '192.168.1.226'); ERROR: invalid cidr value: "192.168.1.2/30" *************** *** 33,171 **** ERROR: invalid cidr value: "192.168.1.2/30" DETAIL: Value has bits set to right of mask. INSERT INTO INET_TBL (c, i) VALUES (cidr('ffff:ffff:ffff:ffff::/24'), '::192.168.1.226'); ! ERROR: invalid cidr value: "ffff:ffff:ffff:ffff::/24" ! DETAIL: Value has bits set to right of mask. SELECT '' AS ten, c AS cidr, i AS inet FROM INET_TBL; ten | cidr | inet ! -----+--------------------+------------------ ! | 192.168.1.0/24 | 192.168.1.226/24 ! | 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.255/24 ! | 192.168.1.0/24 | 192.168.1.255/25 ! | 10.0.0.0/8 | 10.1.2.3/8 ! | 10.0.0.0/32 | 10.1.2.3/8 ! | 10.1.2.3/32 | 10.1.2.3 ! | 10.1.2.0/24 | 10.1.2.3/24 ! | 10.1.0.0/16 | 10.1.2.3/16 ! | 10.0.0.0/8 | 10.1.2.3/8 ! | 10.0.0.0/8 | 11.1.2.3/8 ! | 10.0.0.0/8 | 9.1.2.3/8 ! | 10:23::f1/128 | 10:23::f1/64 ! | 10:23::8000/113 | 10:23::ffff ! | ::ffff:1.2.3.4/128 | ::4.3.2.1/24 ! (17 rows) -- now test some support functions SELECT '' AS ten, i AS inet, host(i), text(i), family(i) FROM INET_TBL; ten | inet | host | text | family -----+------------------+---------------+------------------+-------- ! | 192.168.1.226/24 | 192.168.1.226 | 192.168.1.226/24 | 4 ! | 192.168.1.226 | 192.168.1.226 | 192.168.1.226/32 | 4 ! | 192.168.1.0/24 | 192.168.1.0 | 192.168.1.0/24 | 4 ! | 192.168.1.0/25 | 192.168.1.0 | 192.168.1.0/25 | 4 ! | 192.168.1.255/24 | 192.168.1.255 | 192.168.1.255/24 | 4 ! | 192.168.1.255/25 | 192.168.1.255 | 192.168.1.255/25 | 4 ! | 10.1.2.3/8 | 10.1.2.3 | 10.1.2.3/8 | 4 ! | 10.1.2.3/8 | 10.1.2.3 | 10.1.2.3/8 | 4 ! | 10.1.2.3 | 10.1.2.3 | 10.1.2.3/32 | 4 ! | 10.1.2.3/24 | 10.1.2.3 | 10.1.2.3/24 | 4 ! | 10.1.2.3/16 | 10.1.2.3 | 10.1.2.3/16 | 4 ! | 10.1.2.3/8 | 10.1.2.3 | 10.1.2.3/8 | 4 ! | 11.1.2.3/8 | 11.1.2.3 | 11.1.2.3/8 | 4 ! | 9.1.2.3/8 | 9.1.2.3 | 9.1.2.3/8 | 4 ! | 10:23::f1/64 | 10:23::f1 | 10:23::f1/64 | 6 ! | 10:23::ffff | 10:23::ffff | 10:23::ffff/128 | 6 ! | ::4.3.2.1/24 | ::4.3.2.1 | ::4.3.2.1/24 | 6 ! (17 rows) SELECT '' AS ten, c AS cidr, broadcast(c), i AS inet, broadcast(i) FROM INET_TBL; ten | cidr | broadcast | inet | broadcast ! -----+--------------------+------------------+------------------+--------------------------------------- ! | 192.168.1.0/24 | 192.168.1.255/24 | 192.168.1.226/24 | 192.168.1.255/24 ! | 192.168.1.0/26 | 192.168.1.63/26 | 192.168.1.226 | 192.168.1.226 ! | 192.168.1.0/24 | 192.168.1.255/24 | 192.168.1.0/24 | 192.168.1.255/24 ! | 192.168.1.0/24 | 192.168.1.255/24 | 192.168.1.0/25 | 192.168.1.127/25 ! | 192.168.1.0/24 | 192.168.1.255/24 | 192.168.1.255/24 | 192.168.1.255/24 ! | 192.168.1.0/24 | 192.168.1.255/24 | 192.168.1.255/25 | 192.168.1.255/25 ! | 10.0.0.0/8 | 10.255.255.255/8 | 10.1.2.3/8 | 10.255.255.255/8 ! | 10.0.0.0/32 | 10.0.0.0 | 10.1.2.3/8 | 10.255.255.255/8 ! | 10.1.2.3/32 | 10.1.2.3 | 10.1.2.3 | 10.1.2.3 ! | 10.1.2.0/24 | 10.1.2.255/24 | 10.1.2.3/24 | 10.1.2.255/24 ! | 10.1.0.0/16 | 10.1.255.255/16 | 10.1.2.3/16 | 10.1.255.255/16 ! | 10.0.0.0/8 | 10.255.255.255/8 | 10.1.2.3/8 | 10.255.255.255/8 ! | 10.0.0.0/8 | 10.255.255.255/8 | 11.1.2.3/8 | 11.255.255.255/8 ! | 10.0.0.0/8 | 10.255.255.255/8 | 9.1.2.3/8 | 9.255.255.255/8 ! | 10:23::f1/128 | 10:23::f1 | 10:23::f1/64 | 10:23::ffff:ffff:ffff:ffff/64 ! | 10:23::8000/113 | 10:23::ffff/113 | 10:23::ffff | 10:23::ffff ! | ::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 ! (17 rows) SELECT '' AS ten, c AS cidr, network(c) AS "network(cidr)", i AS inet, network(i) AS "network(inet)" FROM INET_TBL; ten | cidr | network(cidr) | inet | network(inet) ! -----+--------------------+--------------------+------------------+------------------ ! | 192.168.1.0/24 | 192.168.1.0/24 | 192.168.1.226/24 | 192.168.1.0/24 ! | 192.168.1.0/26 | 192.168.1.0/26 | 192.168.1.226 | 192.168.1.226/32 ! | 192.168.1.0/24 | 192.168.1.0/24 | 192.168.1.0/24 | 192.168.1.0/24 ! | 192.168.1.0/24 | 192.168.1.0/24 | 192.168.1.0/25 | 192.168.1.0/25 ! | 192.168.1.0/24 | 192.168.1.0/24 | 192.168.1.255/24 | 192.168.1.0/24 ! | 192.168.1.0/24 | 192.168.1.0/24 | 192.168.1.255/25 | 192.168.1.128/25 ! | 10.0.0.0/8 | 10.0.0.0/8 | 10.1.2.3/8 | 10.0.0.0/8 ! | 10.0.0.0/32 | 10.0.0.0/32 | 10.1.2.3/8 | 10.0.0.0/8 ! | 10.1.2.3/32 | 10.1.2.3/32 | 10.1.2.3 | 10.1.2.3/32 ! | 10.1.2.0/24 | 10.1.2.0/24 | 10.1.2.3/24 | 10.1.2.0/24 ! | 10.1.0.0/16 | 10.1.0.0/16 | 10.1.2.3/16 | 10.1.0.0/16 ! | 10.0.0.0/8 | 10.0.0.0/8 | 10.1.2.3/8 | 10.0.0.0/8 ! | 10.0.0.0/8 | 10.0.0.0/8 | 11.1.2.3/8 | 11.0.0.0/8 ! | 10.0.0.0/8 | 10.0.0.0/8 | 9.1.2.3/8 | 9.0.0.0/8 ! | 10:23::f1/128 | 10:23::f1/128 | 10:23::f1/64 | 10:23::/64 ! | 10:23::8000/113 | 10:23::8000/113 | 10:23::ffff | 10:23::ffff/128 ! | ::ffff:1.2.3.4/128 | ::ffff:1.2.3.4/128 | ::4.3.2.1/24 | ::/24 ! (17 rows) SELECT '' AS ten, c AS cidr, masklen(c) AS "masklen(cidr)", i AS inet, masklen(i) AS "masklen(inet)" FROM INET_TBL; ten | cidr | masklen(cidr) | inet | masklen(inet) ! -----+--------------------+---------------+------------------+--------------- ! | 192.168.1.0/24 | 24 | 192.168.1.226/24 | 24 ! | 192.168.1.0/26 | 26 | 192.168.1.226 | 32 ! | 192.168.1.0/24 | 24 | 192.168.1.0/24 | 24 ! | 192.168.1.0/24 | 24 | 192.168.1.0/25 | 25 ! | 192.168.1.0/24 | 24 | 192.168.1.255/24 | 24 ! | 192.168.1.0/24 | 24 | 192.168.1.255/25 | 25 ! | 10.0.0.0/8 | 8 | 10.1.2.3/8 | 8 ! | 10.0.0.0/32 | 32 | 10.1.2.3/8 | 8 ! | 10.1.2.3/32 | 32 | 10.1.2.3 | 32 ! | 10.1.2.0/24 | 24 | 10.1.2.3/24 | 24 ! | 10.1.0.0/16 | 16 | 10.1.2.3/16 | 16 ! | 10.0.0.0/8 | 8 | 10.1.2.3/8 | 8 ! | 10.0.0.0/8 | 8 | 11.1.2.3/8 | 8 ! | 10.0.0.0/8 | 8 | 9.1.2.3/8 | 8 ! | 10:23::f1/128 | 128 | 10:23::f1/64 | 64 ! | 10:23::8000/113 | 113 | 10:23::ffff | 128 ! | ::ffff:1.2.3.4/128 | 128 | ::4.3.2.1/24 | 24 ! (17 rows) 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; four | cidr | masklen(cidr) | inet | masklen(inet) ! ------+------------+---------------+------------+--------------- ! | 10.0.0.0/8 | 8 | 10.1.2.3/8 | 8 ! | 10.0.0.0/8 | 8 | 10.1.2.3/8 | 8 ! | 10.0.0.0/8 | 8 | 11.1.2.3/8 | 8 ! | 10.0.0.0/8 | 8 | 9.1.2.3/8 | 8 (4 rows) SELECT '' AS six, c AS cidr, i AS inet FROM INET_TBL WHERE c = i; six | cidr | inet ! -----+----------------+---------------- ! | 192.168.1.0/24 | 192.168.1.0/24 ! | 10.1.2.3/32 | 10.1.2.3 (2 rows) SELECT '' AS ten, i, c, --- 36,158 ---- ERROR: invalid cidr value: "192.168.1.2/30" DETAIL: Value has bits set to right of mask. INSERT INTO INET_TBL (c, i) VALUES (cidr('ffff:ffff:ffff:ffff::/24'), '::192.168.1.226'); ! ERROR: invalid input syntax for type cidr: "ffff:ffff:ffff:ffff::/24" SELECT '' AS ten, c AS cidr, i AS inet FROM INET_TBL; ten | cidr | inet ! -----+----------------+------------------ ! | 192.168.1/24 | 192.168.1/24 ! | 192.168.1.0/26 | 192.168.1.226/32 ! | 192.168.1/24 | 192.168.1/24 ! | 192.168.1/24 | 192.168.1.0/25 ! | 192.168.1/24 | 192.168.1/24 ! | 192.168.1/24 | 192.168.1.128/25 ! | 10/8 | 10/8 ! | 10.0.0.0/32 | 10/8 ! | 10.1.2.3/32 | 10.1.2.3/32 ! | 10.1.2/24 | 10.1.2/24 ! | 10.1/16 | 10.1/16 ! | 10/8 | 10/8 ! | 10/8 | 11/8 ! | 10/8 | 9/8 ! (14 rows) -- now test some support functions SELECT '' AS ten, i AS inet, host(i), text(i), family(i) FROM INET_TBL; ten | inet | host | text | family -----+------------------+---------------+------------------+-------- ! | 192.168.1/24 | 192.168.1.226 | 192.168.1.226/32 | 4 ! | 192.168.1.226/32 | 192.168.1.226 | 192.168.1.226/32 | 4 ! | 192.168.1/24 | 192.168.1.0 | 192.168.1.0/32 | 4 ! | 192.168.1.0/25 | 192.168.1.0 | 192.168.1.0/32 | 4 ! | 192.168.1/24 | 192.168.1.255 | 192.168.1.255/32 | 4 ! | 192.168.1.128/25 | 192.168.1.255 | 192.168.1.255/32 | 4 ! | 10/8 | 10.1.2.3 | 10.1.2.3/32 | 4 ! | 10/8 | 10.1.2.3 | 10.1.2.3/32 | 4 ! | 10.1.2.3/32 | 10.1.2.3 | 10.1.2.3/32 | 4 ! | 10.1.2/24 | 10.1.2.3 | 10.1.2.3/32 | 4 ! | 10.1/16 | 10.1.2.3 | 10.1.2.3/32 | 4 ! | 10/8 | 10.1.2.3 | 10.1.2.3/32 | 4 ! | 11/8 | 11.1.2.3 | 11.1.2.3/32 | 4 ! | 9/8 | 9.1.2.3 | 9.1.2.3/32 | 4 ! (14 rows) SELECT '' AS ten, c AS cidr, broadcast(c), i AS inet, broadcast(i) FROM INET_TBL; ten | cidr | broadcast | inet | broadcast ! -----+----------------+----------------+------------------+------------------ ! | 192.168.1/24 | 192.168.1/24 | 192.168.1/24 | 192.168.1/24 ! | 192.168.1.0/26 | 192.168.1.0/26 | 192.168.1.226/32 | 192.168.1.226/32 ! | 192.168.1/24 | 192.168.1/24 | 192.168.1/24 | 192.168.1/24 ! | 192.168.1/24 | 192.168.1/24 | 192.168.1.0/25 | 192.168.1.0/25 ! | 192.168.1/24 | 192.168.1/24 | 192.168.1/24 | 192.168.1/24 ! | 192.168.1/24 | 192.168.1/24 | 192.168.1.128/25 | 192.168.1.128/25 ! | 10/8 | 10/8 | 10/8 | 10/8 ! | 10.0.0.0/32 | 10.0.0.0/32 | 10/8 | 10/8 ! | 10.1.2.3/32 | 10.1.2.3/32 | 10.1.2.3/32 | 10.1.2.3/32 ! | 10.1.2/24 | 10.1.2/24 | 10.1.2/24 | 10.1.2/24 ! | 10.1/16 | 10.1/16 | 10.1/16 | 10.1/16 ! | 10/8 | 10/8 | 10/8 | 10/8 ! | 10/8 | 10/8 | 11/8 | 11/8 ! | 10/8 | 10/8 | 9/8 | 9/8 ! (14 rows) SELECT '' AS ten, c AS cidr, network(c) AS "network(cidr)", i AS inet, network(i) AS "network(inet)" FROM INET_TBL; ten | cidr | network(cidr) | inet | network(inet) ! -----+----------------+----------------+------------------+------------------ ! | 192.168.1/24 | 192.168.1/24 | 192.168.1/24 | 192.168.1/24 ! | 192.168.1.0/26 | 192.168.1.0/26 | 192.168.1.226/32 | 192.168.1.226/32 ! | 192.168.1/24 | 192.168.1/24 | 192.168.1/24 | 192.168.1/24 ! | 192.168.1/24 | 192.168.1/24 | 192.168.1.0/25 | 192.168.1.0/25 ! | 192.168.1/24 | 192.168.1/24 | 192.168.1/24 | 192.168.1/24 ! | 192.168.1/24 | 192.168.1/24 | 192.168.1.128/25 | 192.168.1.128/25 ! | 10/8 | 10/8 | 10/8 | 10/8 ! | 10.0.0.0/32 | 10.0.0.0/32 | 10/8 | 10/8 ! | 10.1.2.3/32 | 10.1.2.3/32 | 10.1.2.3/32 | 10.1.2.3/32 ! | 10.1.2/24 | 10.1.2/24 | 10.1.2/24 | 10.1.2/24 ! | 10.1/16 | 10.1/16 | 10.1/16 | 10.1/16 ! | 10/8 | 10/8 | 10/8 | 10/8 ! | 10/8 | 10/8 | 11/8 | 11/8 ! | 10/8 | 10/8 | 9/8 | 9/8 ! (14 rows) SELECT '' AS ten, c AS cidr, masklen(c) AS "masklen(cidr)", i AS inet, masklen(i) AS "masklen(inet)" FROM INET_TBL; ten | cidr | masklen(cidr) | inet | masklen(inet) ! -----+----------------+---------------+------------------+--------------- ! | 192.168.1/24 | 24 | 192.168.1/24 | 24 ! | 192.168.1.0/26 | 26 | 192.168.1.226/32 | 32 ! | 192.168.1/24 | 24 | 192.168.1/24 | 24 ! | 192.168.1/24 | 24 | 192.168.1.0/25 | 25 ! | 192.168.1/24 | 24 | 192.168.1/24 | 24 ! | 192.168.1/24 | 24 | 192.168.1.128/25 | 25 ! | 10/8 | 8 | 10/8 | 8 ! | 10.0.0.0/32 | 32 | 10/8 | 8 ! | 10.1.2.3/32 | 32 | 10.1.2.3/32 | 32 ! | 10.1.2/24 | 24 | 10.1.2/24 | 24 ! | 10.1/16 | 16 | 10.1/16 | 16 ! | 10/8 | 8 | 10/8 | 8 ! | 10/8 | 8 | 11/8 | 8 ! | 10/8 | 8 | 9/8 | 8 ! (14 rows) 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; four | cidr | masklen(cidr) | inet | masklen(inet) ! ------+------+---------------+------+--------------- ! | 10/8 | 8 | 10/8 | 8 ! | 10/8 | 8 | 10/8 | 8 ! | 10/8 | 8 | 11/8 | 8 ! | 10/8 | 8 | 9/8 | 8 (4 rows) SELECT '' AS six, c AS cidr, i AS inet FROM INET_TBL WHERE c = i; six | cidr | inet ! -----+--------------+-------------- ! | 192.168.1/24 | 192.168.1/24 ! | 10.1.2.3/32 | 10.1.2.3/32 (2 rows) SELECT '' AS ten, i, c, *************** *** 175,222 **** i >> c AS sup, i >>= c AS spe FROM INET_TBL; ten | i | c | lt | le | eq | ge | gt | ne | sb | sbe | sup | spe ! -----+------------------+--------------------+----+----+----+----+----+----+----+-----+-----+----- ! | 192.168.1.226/24 | 192.168.1.0/24 | f | f | f | t | t | t | f | t | f | t ! | 192.168.1.226 | 192.168.1.0/26 | f | f | f | t | t | t | f | f | f | f ! | 192.168.1.0/24 | 192.168.1.0/24 | f | t | t | t | f | f | f | t | f | t ! | 192.168.1.0/25 | 192.168.1.0/24 | f | f | f | t | t | t | t | t | f | f ! | 192.168.1.255/24 | 192.168.1.0/24 | f | f | f | t | t | t | f | t | f | t ! | 192.168.1.255/25 | 192.168.1.0/24 | f | f | f | t | t | t | t | t | f | f ! | 10.1.2.3/8 | 10.0.0.0/8 | f | f | f | t | t | t | f | t | f | t ! | 10.1.2.3/8 | 10.0.0.0/32 | t | t | f | f | f | t | f | f | t | t ! | 10.1.2.3 | 10.1.2.3/32 | f | t | t | t | f | f | f | t | f | t ! | 10.1.2.3/24 | 10.1.2.0/24 | f | f | f | t | t | t | f | t | f | t ! | 10.1.2.3/16 | 10.1.0.0/16 | f | f | f | t | t | t | f | t | f | t ! | 10.1.2.3/8 | 10.0.0.0/8 | f | f | f | t | t | t | f | t | f | t ! | 11.1.2.3/8 | 10.0.0.0/8 | f | f | f | t | t | t | f | f | f | f ! | 9.1.2.3/8 | 10.0.0.0/8 | t | t | f | f | f | t | f | f | f | f ! | 10:23::f1/64 | 10:23::f1/128 | t | t | f | f | f | t | f | f | t | t ! | 10:23::ffff | 10:23::8000/113 | f | f | f | t | t | t | t | t | f | f ! | ::4.3.2.1/24 | ::ffff:1.2.3.4/128 | t | t | f | f | f | t | f | f | t | t ! (17 rows) -- check the conversion to/from text and set_netmask SELECT '' AS ten, set_masklen(inet(text(i)), 24) FROM INET_TBL; ten | set_masklen ! -----+------------------ ! | 192.168.1.226/24 ! | 192.168.1.226/24 ! | 192.168.1.0/24 ! | 192.168.1.0/24 ! | 192.168.1.255/24 ! | 192.168.1.255/24 ! | 10.1.2.3/24 ! | 10.1.2.3/24 ! | 10.1.2.3/24 ! | 10.1.2.3/24 ! | 10.1.2.3/24 ! | 10.1.2.3/24 ! | 11.1.2.3/24 ! | 9.1.2.3/24 ! | 10:23::f1/24 ! | 10:23::ffff/24 ! | ::4.3.2.1/24 ! (17 rows) -- check that index works correctly CREATE INDEX inet_idx1 ON inet_tbl(i); --- 162,203 ---- i >> c AS sup, i >>= c AS spe FROM INET_TBL; ten | i | c | lt | le | eq | ge | gt | ne | sb | sbe | sup | spe ! -----+------------------+----------------+----+----+----+----+----+----+----+-----+-----+----- ! | 192.168.1/24 | 192.168.1/24 | f | f | f | t | t | t | f | t | f | t ! | 192.168.1.226/32 | 192.168.1.0/26 | f | f | f | t | t | t | f | f | f | f ! | 192.168.1/24 | 192.168.1/24 | f | t | t | t | f | f | f | t | f | t ! | 192.168.1.0/25 | 192.168.1/24 | f | f | f | t | t | t | t | t | f | f ! | 192.168.1/24 | 192.168.1/24 | f | f | f | t | t | t | f | t | f | t ! | 192.168.1.128/25 | 192.168.1/24 | f | f | f | t | t | t | t | t | f | f ! | 10/8 | 10/8 | f | f | f | t | t | t | f | t | f | t ! | 10/8 | 10.0.0.0/32 | t | t | f | f | f | t | f | f | t | t ! | 10.1.2.3/32 | 10.1.2.3/32 | f | t | t | t | f | f | f | t | f | t ! | 10.1.2/24 | 10.1.2/24 | f | f | f | t | t | t | f | t | f | t ! | 10.1/16 | 10.1/16 | f | f | f | t | t | t | f | t | f | t ! | 10/8 | 10/8 | f | f | f | t | t | t | f | t | f | t ! | 11/8 | 10/8 | f | f | f | t | t | t | f | f | f | f ! | 9/8 | 10/8 | t | t | f | f | f | t | f | f | f | f ! (14 rows) -- check the conversion to/from text and set_netmask SELECT '' AS ten, set_masklen(inet(text(i)), 24) FROM INET_TBL; ten | set_masklen ! -----+-------------- ! | 192.168.1/24 ! | 192.168.1/24 ! | 192.168.1/24 ! | 192.168.1/24 ! | 192.168.1/24 ! | 192.168.1/24 ! | 10.1.2/24 ! | 10.1.2/24 ! | 10.1.2/24 ! | 10.1.2/24 ! | 10.1.2/24 ! | 10.1.2/24 ! | 11.1.2/24 ! | 9.1.2/24 ! (14 rows) -- check that index works correctly CREATE INDEX inet_idx1 ON inet_tbl(i); *************** *** 224,243 **** SELECT * FROM inet_tbl WHERE i<<'192.168.1.0/24'::cidr; c | i ----------------+------------------ ! 192.168.1.0/24 | 192.168.1.0/25 ! 192.168.1.0/24 | 192.168.1.255/25 ! 192.168.1.0/26 | 192.168.1.226 (3 rows) SELECT * FROM inet_tbl WHERE i<<='192.168.1.0/24'::cidr; c | i ----------------+------------------ ! 192.168.1.0/24 | 192.168.1.0/24 ! 192.168.1.0/24 | 192.168.1.226/24 ! 192.168.1.0/24 | 192.168.1.255/24 ! 192.168.1.0/24 | 192.168.1.0/25 ! 192.168.1.0/24 | 192.168.1.255/25 ! 192.168.1.0/26 | 192.168.1.226 (6 rows) SET enable_seqscan TO on; --- 205,224 ---- SELECT * FROM inet_tbl WHERE i<<'192.168.1.0/24'::cidr; c | i ----------------+------------------ ! 192.168.1/24 | 192.168.1.0/25 ! 192.168.1/24 | 192.168.1.128/25 ! 192.168.1.0/26 | 192.168.1.226/32 (3 rows) SELECT * FROM inet_tbl WHERE i<<='192.168.1.0/24'::cidr; c | i ----------------+------------------ ! 192.168.1/24 | 192.168.1/24 ! 192.168.1/24 | 192.168.1/24 ! 192.168.1/24 | 192.168.1/24 ! 192.168.1/24 | 192.168.1.0/25 ! 192.168.1/24 | 192.168.1.128/25 ! 192.168.1.0/26 | 192.168.1.226/32 (6 rows) SET enable_seqscan TO on; ======================================================================
pgsql-ports by date: