BUG #6675: Box overlap with infinity edge

Started by Nonamealmost 14 years ago2 messagesbugs
Jump to latest
#1Noname
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:

Hi,

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.

Thanks.

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Noname (#1)
Re: BUG #6675: Box overlap with infinity edge

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