<div dir="ltr"><div>Hi,</div><div><br></div><div>I've been debugging an issue with ST_Subdivide on one of our polygons. It traced down to issue in GEOS, and as a part of fix I had to replace ClipByRect with normal Intersection call. When fixing the tests for old ClipByRect, that specifically tested some invalid geometries it can process, I came up with this logic: </div><div><br></div><a href="https://github.com/postgis/postgis/pull/202/files#diff-c3dac68eb856b0a0554707e2ffcfbf17R648">https://github.com/postgis/postgis/pull/202/files#diff-c3dac68eb856b0a0554707e2ffcfbf17R648</a><br><div><br></div><div>which boils down to "try intersecting, if failed, MakeValid the inputs, try intersecting, fail if failed".</div><div><br></div><div>This does not make process any slower for anybody now, as current case "we got it done from first attempt" is not prepended by any additional validity check.</div><div><br></div><div>Thinking of hours spent catching some invalid geometry generated by a chain of different GEOS operations, I think such change would be beneficial for all overlay operations. In case someone gets not a desired result, they can go back to checking their inputs with ST_IsValid, and performing a deep manual fix, but simple issues like bowties will start simply working.</div><div><br></div><div>Thoughts?</div></div>