Skip site navigation (1) Skip section navigation (2)

INET operators and NOT

From: Tomas Cerha <t(dot)cerha(at)sh(dot)cvut(dot)cz>
To: pgsql-bugs(at)postgresql(dot)org
Subject: INET operators and NOT
Date: 1999-12-28 20:14:46
Message-ID: 38691A36.F3346F95@sh.cvut.cz (view raw or flat)
Thread:
Lists: pgsql-bugspgsql-hackers
Your name               :       Tomas Cerha
Your email address      :       t(dot)cerha(at)sh(dot)cvut(dot)cz
----------------------------------------------------------------------
System Configuration
----------------------------------------------------------------------
  Architecture (example: Intel Pentium)         : Intel Pentium MMX
  Operating System (example: Linux 2.0.26 ELF)  : Linux 2.2.5-15 ELF
  PostgreSQL version (example: PostgreSQL-6.5.3): PostgreSQL-6.5.3 
  Compiler used (example:  gcc 2.8.0)           : installed from RPMs
	installed packages:
		postgresql-6.5.3-1.i386.rpm
		postgresql-perl-6.5.3-1.i386.rpm
		postgresql-server-6.5.3-1.i386.rpm
		postgresql-tcl-6.5.3-1.i386.rpm
		postgresql-test-6.5.3-1.rpm
----------------------------------------------------------------------
I've already posted this bug, but nobody replied yet ... I was not
subscribed, but now I am. If it is not significant, I'm sorry to
overload this
mailing list... Now to the problem:

----------------------------------------------------------------------
Please enter a FULL description of your problem:
----------------------------------------------------------------------

Aplying the NOT operator with << INET operator results always in false.
See the example below:

This is the contents of table a:

accounting=> SELECT * FROM a;
      ip
--------
10.1.1.1
10.1.1.2
10.2.1.2
10.2.1.1
(4 rows)

Now, let's select only those hosts from subnet '10.1/16': (works fine)

accounting=> SELECT * FROM a WHERE ip<<'10.1/16';
      ip
--------
10.1.1.1
10.1.1.2
(2 rows)

And now, I only apply NOT to prewious statement ....

accounting=> SELECT * FROM a WHERE NOT ip<<'10.1/16';
ip
--
(0 rows)


But that is not true! I tryed this also with other versions of postgress
on other machines and the result was always the same. But this makes all
about INET operators quite unusable, when I am not able to exclude some
address space (I can only include them). Or is there another way to do
It?


----------------------------------------------------------------------
Please describe a way to repeat the problem.   Please try to provide a
concise reproducible example, if at all possible: 
----------------------------------------------------------------------

CREATE TABLE a (ip inet);

INSERT INTO a VALUES ('10.1.1.1');                                    
INSERT INTO a VALUES ('10.1.1.2');
INSERT INTO a VALUES ('10.2.1.2');
INSERT INTO a VALUES ('10.2.1.1');

SELECT * FROM a;
SELECT * FROM a WHERE ip<<'10.1/16';
SELECT * FROM a WHERE NOT ip<<'10.1/16';

DROP TABLE a;

----------------------------------------------------------------------
Thank you for any idea which could help to solve this problem ...

Tom Cerha, student, FEE CTU Prague Czech Republic

Responses

pgsql-hackers by date

Next:From: Peter EisentrautDate: 1999-12-28 22:14:17
Subject: Re: [HACKERS] dubious improvement in new psql
Previous:From: Tom LaneDate: 1999-12-28 15:19:18
Subject: Re: [HACKERS] can't link libpq.so(inet_aton() not found)

pgsql-bugs by date

Next:From: Samuel A HorwitzDate: 1999-12-28 20:19:51
Subject: rs6000-aix4.2.1.0 - build failure[B
Previous:From: Tomas CerhaDate: 1999-12-28 20:09:15
Subject: INET operators and NOT

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group