Обсуждение: Re: pgsql: Protect GIST logic that assumes penalty values can't be negative

Поиск
Список
Период
Сортировка

Re: pgsql: Protect GIST logic that assumes penalty values can't be negative

От
Greg Stark
Дата:
On Tue, May 31, 2011 at 2:54 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>  Prevent problems by clamping negative penalty values to
> zero.  (Just to be really sure, I also made it force NaNs to zero.)

Do gistchoose et al expect the triangle function to obey the triangle
inequality? If so isn't it possible treating NaNs as zero would fail
that? I'm not sure there's any safe assumption for NaN

--
greg


Re: pgsql: Protect GIST logic that assumes penalty values can't be negative

От
Tom Lane
Дата:
Greg Stark <gsstark@mit.edu> writes:
> On Tue, May 31, 2011 at 2:54 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>> �Prevent problems by clamping negative penalty values to
>> zero. �(Just to be really sure, I also made it force NaNs to zero.)

> Do gistchoose et al expect the triangle function to obey the triangle
> inequality?

Don't think so.

> If so isn't it possible treating NaNs as zero would fail
> that? I'm not sure there's any safe assumption for NaN

Well, leaving it as NaN is almost certain to not work desirably.
        regards, tom lane


Re: pgsql: Protect GIST logic that assumes penalty values can't be negative

От
Greg Stark
Дата:
On Tue, May 31, 2011 at 4:11 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>> Do gistchoose et al expect the triangle function to obey the triangle
>> inequality?
>
> Don't think so.
>

I guess it was obvious but that was "expect the *penalty* function to
obey the triangle inequality"

-- 
greg


Re: pgsql: Protect GIST logic that assumes penalty values can't be negative

От
Alexander Korotkov
Дата:
On Wed, Jun 1, 2011 at 3:57 AM, Greg Stark <gsstark@mit.edu> wrote:
I guess it was obvious but that was "expect the *penalty* function to
obey the triangle inequality"

Actually, penalty function for boxes is even not commutative. Fox example:
A = ((0,0)-(1,1))
B = ((0,0)-(2,2))

penalty(A,B) = 3
penalty(B,A) = 0
 
------
With best regards,
Alexander Korotkov.