Re: Fix picksplit with nan values

From: Alexander Korotkov <aekorotkov(at)gmail(dot)com>
To: Andrew Gierth <andrew(at)tao11(dot)riddles(dot)org(dot)uk>
Cc: pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Fix picksplit with nan values
Date: 2013-09-17 13:04:19
Message-ID: CAPpHfdsAbAy5DwWCgZbhB-+VysE8_rO06=PZHf+7rZ=PcZn8eg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Mon, Sep 16, 2013 at 4:13 PM, Andrew Gierth
<andrew(at)tao11(dot)riddles(dot)org(dot)uk>wrote:

> >>>>> "Alexander" == Alexander Korotkov <aekorotkov(at)gmail(dot)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.

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

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Hannu Krosing 2013-09-17 13:14:52 Re: record identical operator
Previous Message Haribabu kommi 2013-09-17 12:53:48 Re: insert throw error when year field len > 4 for timestamptz datatype