From: | Albe Laurenz <laurenz(dot)albe(at)wien(dot)gv(dot)at> |
---|---|
To: | "'Tim Smith *EXTERN*'" <randomdev4+postgres(at)gmail(dot)com>, pgsql-general <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: Postgresql INET select and default route ? |
Date: | 2015-12-09 12:45:38 |
Message-ID: | A737B7A37273E048B164557ADEF4A58B53748A1C@ntex2010a.host.magwien.gv.at |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Tim Smith wrote:
> create table test(a inet);
> insert into test values ('0.0.0.0/0');
> insert into test values ('10.1.2.3');
> => select * from test;
> a
> -----------
> 0.0.0.0/0
> 10.1.2.3
> (2 rows)
>
>
> This works as expected .....
> => select * from test where a <<= '10.1.2.3';
> a
> ----------
> 10.1.2.3
> (1 row)
>
>
> This does not work as expected ....
> => select * from test where a <<= '11.1.2.3';
> a
> ---
> (0 rows)
>
>
> Surely the second one should return the default route entry (i.e. 0.0.0.0/0) ?
I am surprised that you don't expect "0.0.0.0/0" to be returned by the first
query if you expect it to be returned by the second.
Is that an oversicht?
I guess your problem is a misunderstanding what the operator means:
"<<=" is called "is contained by or equals".
The definition (from the PostgreSQL source) is that x <<= y iff:
- x has at least as many relevant bits as y and
- all relevant bits of y are the same in x.
So the following would produce what you expect:
test=> select * from test where '11.1.2.3' <<= a;
a
-----------
0.0.0.0/0
(1 row)
Yours,
Laurenz Albe
From | Date | Subject | |
---|---|---|---|
Next Message | Mirek Svoboda | 2015-12-09 17:30:46 | Feature Request: Faceting for full text search |
Previous Message | Tim Smith | 2015-12-09 11:20:51 | Postgresql INET select and default route ? |