bug.report

text/plain

Filename: bug.report
Type: text/plain
Part: 0
Message: Problem with inet
============================================================================
                        POSTGRESQL BUG REPORT TEMPLATE
============================================================================


Your name		: Piotr Gadek
Your email address	: p.gadek@bph.krakow.pl


System Configuration
---------------------
  Architecture (example: Intel Pentium)  	: Cyrix 6x86 P166+

  Operating System (example: Linux 2.0.26 ELF) 	: Redhat 6.0 (kernel 2.2.5-22)

  PostgreSQL version (example: PostgreSQL-6.5.1): PostgreSQL-6.5.1

  Compiler used (example:  gcc 2.8.0)		: egcs-2.91.66


Please enter a FULL description of your problem:
------------------------------------------------
Sorting by "inet" type field gives incorrect result.
IP addresses are sorted due to subnets order but
within a subnet adresses are sorted in the wrong way.



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

Below is a simple script which creates table and
executes query. 

--
DROP TABLE HOSTS;
CREATE TABLE HOSTS (i inet);

insert into hosts (i) values ('139.0.6.0/24');
insert into hosts (i) values ('139.0.6.205/24');
insert into hosts (i) values ('139.0.6.3/24');
insert into hosts (i) values ('139.0.6.5/24');
insert into hosts (i) values ('139.0.6.6/24');
insert into hosts (i) values ('139.0.6.10/24');
insert into hosts (i) values ('139.0.6.32/24');
insert into hosts (i) values ('139.0.6.33/24');
insert into hosts (i) values ('139.0.6.35/24');
insert into hosts (i) values ('139.0.6.36/24');
insert into hosts (i) values ('139.0.6.37/24');
insert into hosts (i) values ('139.0.6.102/24');
insert into hosts (i) values ('139.0.6.101/24');
insert into hosts (i) values ('139.0.6.190/24');
insert into hosts (i) values ('139.0.6.11/24');
insert into hosts (i) values ('139.0.6.192/24');
insert into hosts (i) values ('139.0.6.191/24');
insert into hosts (i) values ('139.0.6.200/24');
insert into hosts (i) values ('139.0.6.2/24');
insert into hosts (i) values ('139.0.6.206/24');
insert into hosts (i) values ('139.0.6.209/30');
insert into hosts (i) values ('139.0.6.213/30');
insert into hosts (i) values ('139.0.6.210/30');
insert into hosts (i) values ('139.0.6.214/30');
insert into hosts (i) values ('139.0.6.39/24');
insert into hosts (i) values ('139.0.6.38/24');
insert into hosts (i) values ('139.0.6.195/24');
insert into hosts (i) values ('139.0.6.194/24');
insert into hosts (i) values ('139.0.6.196/24');
insert into hosts (i) values ('139.1.113.17/28');
insert into hosts (i) values ('139.1.113.1/28');
insert into hosts (i) values ('139.1.113.33/28');
insert into hosts (i) values ('139.1.113.2/28');
insert into hosts (i) values ('139.1.113.18/28');
insert into hosts (i) values ('139.0.6.243/24');
insert into hosts (i) values ('139.0.6.222/24');
insert into hosts (i) values ('139.0.9.39/24');
insert into hosts (i) values ('139.0.7.10/24');
insert into hosts (i) values ('139.0.9.10/24');
insert into hosts (i) values ('139.0.9.1/24');
insert into hosts (i) values ('139.0.7.2/24');
insert into hosts (i) values ('139.1.113.34/28');
insert into hosts (i) values ('139.1.113.5/28');
insert into hosts (i) values ('139.1.113.24/28');
insert into hosts (i) values ('139.1.113.7/28');
insert into hosts (i) values ('139.1.113.15/28');
insert into hosts (i) values ('139.1.113.4/28');
insert into hosts (i) values ('139.1.113.8/28');
insert into hosts (i) values ('139.1.113.25/28');
insert into hosts (i) values ('139.1.113.22/28');
insert into hosts (i) values ('139.1.113.13/28');
insert into hosts (i) values ('129.0.0.33/24');
insert into hosts (i) values ('129.0.0.30/24');
insert into hosts (i) values ('129.0.0.20/24');
insert into hosts (i) values ('129.0.0.1/24');
insert into hosts (i) values ('10.0.0.7/24');
insert into hosts (i) values ('10.0.0.1/24');
insert into hosts (i) values ('10.0.0.10/24');
insert into hosts (i) values ('10.0.0.231/24');
insert into hosts (i) values ('10.0.0.27/24');
insert into hosts (i) values ('10.2.0.27/24');
insert into hosts (i) values ('10.3.0.27/24');
insert into hosts (i) values ('10.2.0.2/24');
insert into hosts (i) values ('10.3.0.10/24');
insert into hosts (i) values ('10.2.0.200/24');
insert into hosts (i) values ('10.2.0.0/24');

--
select i from hosts order by i;
--

Here is the result I obtained after script execution:

i              
---------------
10.0.0.7/24    
10.0.0.1/24    
10.0.0.10/24   
10.0.0.231/24  
10.0.0.27/24   
10.2.0.27/24   
10.2.0.2/24    
10.2.0.200/24  
10.2.0.0/24    
10.3.0.27/24   
10.3.0.10/24   
129.0.0.33/24  
129.0.0.30/24  
129.0.0.20/24  
129.0.0.1/24   
139.0.6.0/24   
139.0.6.205/24 
139.0.6.3/24   
139.0.6.5/24   
139.0.6.6/24   
139.0.6.10/24  
139.0.6.32/24  
139.0.6.33/24  
139.0.6.35/24  
139.0.6.36/24  
139.0.6.37/24  
139.0.6.102/24 
139.0.6.101/24 
139.0.6.190/24 
139.0.6.11/24  
139.0.6.192/24 
139.0.6.191/24 
139.0.6.200/24 
139.0.6.2/24   
139.0.6.206/24 
139.0.6.39/24  
139.0.6.38/24  
139.0.6.195/24 
139.0.6.194/24 
139.0.6.196/24 
139.0.6.209/30 
139.0.6.210/30 
139.0.6.213/30 
139.0.6.214/30 
139.0.6.243/24 
139.0.6.222/24 
139.0.7.10/24  
139.0.7.2/24   
139.0.9.39/24  
139.0.9.10/24  
139.0.9.1/24   
139.1.113.1/28 
139.1.113.2/28 
139.1.113.5/28 
139.1.113.7/28 
139.1.113.15/28
139.1.113.4/28 
139.1.113.8/28 
139.1.113.13/28
139.1.113.17/28
139.1.113.18/28
139.1.113.24/28
139.1.113.25/28
139.1.113.22/28
139.1.113.33/28
139.1.113.34/28
(66 rows)


If you know how this problem might be fixed, list the solution below:
---------------------------------------------------------------------