On Tue, Mar 30, 2021 at 11:39:40PM +0800, Julien Rouhaud wrote: > On Tue, Mar 30, 2021 at 11:02:32AM -0400, Tom Lane wrote: > > Julien Rouhaud <rjuju...@gmail.com> writes: > > > On Tue, Mar 30, 2021 at 02:47:05PM +0200, Laurenz Albe wrote: > > >> I'd say that this is certainly wrong: > > >> SELECT point('NaN','NaN') <@ polygon('(0,0),(1,0),(1,1),(0,0)'); > > >> > > >> ?column? > > >> ---------- > > >> t > > >> (1 row) > > > > > Yeah that's what I think too, but I wanted to have confirmation. > > > > Agreed --- one could make an argument for either 'false' or NULL > > result, but surely not 'true'. > > I would think that it should return NULL since it's not inside nor outside the > polygon, but I'm fine with false. > > > I wonder if Horiguchi-san's patch [1] improves this case. > > Oh I totally missed that patch :( > > After a quick look I see this addition in point_inside(): > > + /* NaN makes the point cannot be inside the polygon */ > + if (unlikely(isnan(x) || isnan(y))) > + return 0; > > So I would assume that it should fix this case too. I'll check tomorrow.
I confirm that this patch fixes the issue, and after looking a bit more at the thread it's unsurprising since Jesse initially reported the exact same problem. I'll try to review it as soon as I'll be done with my work duties.