On Tue, Sep 17, 2013 at 5:04 PM, Alexander Korotkov <aekorot...@gmail.com>wrote:

> On Mon, Sep 16, 2013 at 4:13 PM, Andrew Gierth <
> and...@tao11.riddles.org.uk> wrote:
>
>> >>>>> "Alexander" == Alexander Korotkov <aekorot...@gmail.com> writes:
>>
>>  Alexander> 2) NaN coordinates should be processed in GiST index scan
>>  Alexander> like in sequential scan.
>>
>> postgres=# select * from pts order by a <-> '(0,0)' limit 10;
>>     a
>> ----------
>>  (1,1)
>>  (7,nan)
>>  (9,nan)
>>  (11,nan)
>>  (4,nan)
>>  (nan,6)
>>  (2,1)
>>  (1,2)
>>  (2,2)
>>  (3,1)
>> (10 rows)
>>
>> postgres=# set enable_indexscan=false;
>> SET
>>
>> postgres=# select * from pts order by a <-> '(0,0)' limit 10;
>>    a
>> -------
>>  (1,1)
>>  (2,1)
>>  (1,2)
>>  (2,2)
>>  (3,1)
>>  (1,3)
>>  (3,2)
>>  (2,3)
>>  (4,1)
>>  (1,4)
>> (10 rows)
>>
>> this data set was created by:
>> insert into pts
>>   select point(i,j)
>>     from (select generate_series(1,100)::float8 union all select 'nan')
>> s1(i),
>>          (select generate_series(1,100)::float8 union all select 'nan')
>> s2(j)
>>    order by random();
>
>
> Thanks, Andrew! Good spot.
> I didn't examine order by operators for work with NaNs.
> I think this time problem is in GiST itself rather than in opclass. I'm
> going to fix it in a separate patch.
>

Attached patch fixes knn GiST behaviour with NaN. It makes RB-tree
comparison function in GiST work like float8 btree opclass comparison
function.

------
With best regards,
Alexander Korotkov.

Attachment: fix-knn-gist-nan.patch
Description: Binary data

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to