Re: GiST index build versus NaN coordinates
От | Tom Lane |
---|---|
Тема | Re: GiST index build versus NaN coordinates |
Дата | |
Msg-id | 3740.1468354822@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: GiST index build versus NaN coordinates (Tom Lane <tgl@sss.pgh.pa.us>) |
Список | pgsql-hackers |
I wrote: > Andreas Seltenreich <seltenreich@gmx.de> writes: >> The infinite loop from the bug report was triggered. Further, two >> previously unseen errors are logged: >> ERROR: timestamp cannot be NaN >> ERROR: getQuadrant: impossible case >> The first is porbably as boring as it gets, the second one is from the >> getQuadrant() in spgquadtreeproc.c. > Yeah, the first one is presumably from float8_timestamptz() intentionally > rejecting a NaN, which seems fine. >> Curiously, the getQuadrant()s in geo_spgist.c and rangetypes_spgist.c do >> not have such a check. I guess the boxes will just end up in an >> undefined position in the index for these. > Right, we probably want them all to apply some consistent ordering --- > doesn't matter so much what it is, but float8's rule is as good as any. I looked into these a bit more closely. I think rangetypes_spgist.c is fine as-is: it's relying on the range component type to provide a total ordering of its values, and if the component type fails to do that, it's the fault of the component type not the range code. spgquadtreeproc.c and geo_spgist.c both have got NaN issues, but the code in both of them is rather tightly tied to the fuzzy-geometric-comparisons logic that Emre has been messing with. I think we ought to put "what to do with NaNs?" into that same can of worms, rather than try to resolve it separately. (Yeah, I know, I just made Emre's job even harder.) regards, tom lane
В списке pgsql-hackers по дате отправления: