Обсуждение: BUG #6675: Box overlap with infinity edge

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

BUG #6675: Box overlap with infinity edge

От
jeremie.thomassey@gmail.com
Дата:
The following bug has been logged on the website:

Bug reference:      6675
Logged by:          Thomassey J
Email address:      jeremie.thomassey@gmail.com
PostgreSQL version: 9.1.4
Operating system:   Ubuntu 10.04.4 LTS
Description:=20=20=20=20=20=20=20=20

Hi,

I can't understand this result :

SELECT box '((1,1),(infinity, 1))' && box '((2, 1),(infinity, 1))';
 ?column?=20
---------
 f

Isn't it supposed to return true? The documentation doesn't really say
anything about infinite edge.

Thanks.

Re: BUG #6675: Box overlap with infinity edge

От
Tom Lane
Дата:
jeremie.thomassey@gmail.com writes:
> I can't understand this result :

> SELECT box '((1,1),(infinity, 1))' && box '((2, 1),(infinity, 1))';
>  ?column?
> ---------
>  f

> Isn't it supposed to return true? The documentation doesn't really say
> anything about infinite edge.

The test for this involves

    FPge(box1->high.x, box2->high.x)

where FPge is defined as

    #define FPge(A,B)    ((B) - (A) <= EPSILON)

When both high.x values are infinity, you have infinity minus infinity,
which yields NaN in IEEE arithmetic, so the comparison to epsilon comes
out false.

In general I don't think we promise that geometric operations involving
infinite endpoints will behave sanely.  There are probably a boatload
of corner cases besides this one that'd need to be fixed before we
could consider that a supported case.

            regards, tom lane